Yes, I'm a big fan of Madagascar, and yes, I named Mort after Mort. I figure it's a good name, because during the films you keep forgetting about the little guy. And then he turns up, does something awesome, and slinks away into the background again.

Mort is my home automation system. It started as a basic light control, providing a software interface to control my desk lights. As the project grew, so did my ideas. The software now does a number of things, such as update my DNS records with my home's dynamic IP, turn on bedroom lights in the morning (like an alarm) and 'unplug' my PC and monitors when they aren't needed. The system configuration is stored in an INI file, which allows updates to be made very easily.

Current Purposes

Digital I/O

Mort provides a very flexible and usable interface for digital I/O ports. The main use for this at the moment is turning lights on and off using a relay. A command line tool can be used to control the DIO pins, though it is not particularly practical. I have developed a PHP class that can request and update the status of a DIO pin, allowing a decent web interface to be made. And of course, it's just a logic input/output, meaning that anything could be triggered, timed, monitored, etc....


It is possible to have mort turn a DIO pin on, or off at a given time of day. I find that turning my bedroom lights on just before my alarm goes off to be a really good wakeup aid.

XBee Interface

Using libxbee, Mort provides a number of interfaces with XBee networks.

Each of an XBee's digital I/O pins can be registered as a controllable pin, allowing it to operate lights for example.

As XBee modules also have a TTL serial port, Mort is able to use this communication channel. Combined with some of its other features, this can be linked to a Pseudo Terminal, allowing 'direct' access to the serial port of a remote device. I have used this many times to wirelessly flash code to an AVR using avrdude and the Arduino bootloader.


As I have a dynamic IP address at home, it is useful to keep everything up-to-date with the correct address. The DynDNS daemons that I have used before tend to be fiddly and unreliable. Mort will report any issues, as well as keeping it's eye on my IP address from the inside via the routers web interface, alleviating the load that would otherwise be put on external servers.

Future Potential & Hopes

Android Light Switch

As the Mort daemon has an internal list of DIO pins, it would be simple to query this, filter the Light controls, and then display a button per light switch on an Android phone. This would be far more practical than the current web interface.

Audio Alarm

I would really like to have Mort play music or something similar at a given time in the morning. This could be achieved with minor modifications to the current alarm system, though to get it implemented elegantly would require more work.