The Home Automation of Tomorrow, Today

With the release of Android @Home, it’s increasingly obvious that big companies are finally getting behind home automation.  But what if you want to control your appliances from anywhere in the world and not just from within your home with your phone?  Here is system that I developed to allow you to do just that.

First, have a server running that has access to the Internet. I happened to have an Ubuntu server lying around, and this worked great.  Next you’ll want a way for the server to communicate with your appliances.  The easiest thing for me was to buy this X10 Kit.  Using the X10 computer interface, the server essentially sends signals to various modules around the house to turn on or off (its method of communication is over the power lines in your house). You can plug your appliances into these modules so that they turn on and off with the module.

Next you want a way to tell your sever to activate/deactivate certain appliances.  For this I wrote a quick program on the server and created a cron job, telling the server to call my program periodically.  The program used the Google Calendar API to look at a calendar that I created specifically for home automation.  It would then interpret the events in the calendar, and if applicable it would use a command line tool also on the server called Bottle Rocket which would then communicate with the X10 computer interface.

The advantage to this process is that since Google Calendar is the link between you and your server/X10 setup at home, you can essentially write programs that also use the Google Calendar API or just use existing tools to communicate with your home setup.  You can use the calendar on your smart phone, or you can use Google’s calendar website.  You can also share the calendar with anyone else with whom you live so that they can control your devices too.

For a detailed explanation, click here.

Check out the code here.

Here’s a video demonstration.