This page was last updated 1 january 2005.

Home Automation

This page will chronicle my efforts at automating my new home in Berlin, which I have moved into in early 2004. Eventually you'll find pictures, schematics, source code, and all other information about the project here, but at this time I'll just briefly list the basics.

I always found it fascinating to not only communicate with a computer through a display screen and keyboard, but to actually interact with the real world. For example, I have a dock pulldown window here on my screen that lets me turn any light in my apartment on and off. That's the result of an earlier home automation project. This time I'll plan this on a much bigger scale, and chronicle my progress here. I hope you'll find it interesting and return occasionally. The timeline is something like from the beginning to the end of 2004.


Do it yourself

The whole project will be based on a low-power Linux PC that talks to the world over the USB bus, and loads of cables.

There is a company called Code Mercenaries that offers a brilliant chip called IO Warrior. This chip is a hardware hacker's dream come true. It basically has USB on one end and 32 freely programmable IO lines on the other end. You can read or write the pin status as a 32-bit integer with extremely simple programs (basically one ioctl call). All it takes is a few resistors, capacitors, and a resonator. Up to sixteen IO Warriors can be attached to a single USB bus. They offer free Linux and Windows drivers. Best of all, the chip sells for only 17 Euro, for example at Segor Electronics, probably Germany's best and most knowledgeable electronics store. (They do international mail order too.) Once I bought two large LCD panels there, and when I was unable to make them work properly, I went back and they listened to my problem, looked at the data sheets, scratched their heads, grabbed a pen and fixed the errors in the data sheet from memory. Try to beat that.

The I/O requirements are

and, of course, tie all these information endpoints together to perform useful services:

Tell me if you found this information interesting or useful, or if you have comments.