Preface

From one idea to many ideas

For several years I have been building small microcontroller devices that I use for different purposes. One of these projects was a humidity sensor for plants, which shows me when it's necessary to water them. After some time I thought it would be a good idea to have these sensors send the data to my home server allowing me to have an overview of all the sensors in one place (e.g. on a web page of the server).

I chose RFM12 modules for transferring the data. While I was working on integrating these, I frequently heard about similar new devices. It seemed that many companies had their own idea of controlling specific devices. Some systems controlled lamps (of one company) only, others controlled switches, collected sensor data from plants (to become a better hobby gardener), measured quality of room air and so on. But most of them had only one specific area of application.

I also read about home automation systems with a wide variety of actuators and sensors (with lack of these very special ones). I was astonished how bad their concept for data transmission regarding security and transmission reliability was. I learned that one common commercial system doesn't encrypt it's packets at all. You define your home network of devices by selecting which devices are yours and which ones are from your neighbor by setting a "home code". In other words, your neighbor can easily log when and how often every sensor and actuator is active and what its state is (e.g. when you have your windows open or lamps on). This has the possibility of total observation from whatever person is in reception range! Additionally, the packets can also be re-sent by your neighbor, so he also can switch your light on or open your garage door whenever he wants!

This system also didn't retry to send a command when data transmission was interfered. A second system was different in this aspect and used authentication for commands. But even if it wasn't possible to copy the requests, the content of the packets were not encoded. (Meaning: external control is not possible, but observation still is. Gee!)

Another disadvantage that came to my mind was that a commercial system is not very future-proof (at least for me). If a device or system has bugs, it is not fixable, because the device can't be updated. Also if I want to build a special device not offered by that company, I have no possibility to integrate it into the existing network.

Creating something new

After reading all this about commercial systems, I had enough of it. I decided to extend my initial project about plant humidity sensors to a complete home automation system to support also power switches, temperature sensors and so on. I felt it was time to make it better and support missing features like encryption and confirmed packet transmissions. I wanted an open source system as an alternative to all the commercial proprietary systems which make the user dependent on them. Whereas some open source home automation PC software projects existed, no project concentrated on the hardware devices yet.

So finally, I decided to start this open source project, which will provide you with hardware layouts and assembly instructions for some sensors and actuators as well as their firmware. Additional devices can often be built by just connecting your special sensor / actuator to the standard hardware. The common (framework) parts of the software can be reused easily.

It's a community project!

I would appreciate if many of you write extensions to support additional sensors and actuators, make the software more robust and secure or optimize it in any way useful. My dream is that some day this project is widely used whenever someone decides not to buy one of the proprietary commercial systems but to build an open source one for his home automation, either because of the requirement to support special sensors / actuators or simply to support the open source idea.