This project creates a system to control electrical circuits in a home environment, such as an appartment or house. The user can turn lights on and off just as before (though the switches might be of momentary contact type, but even this is not a fixed requirement), but also the automation system can influence the status of electrical connections in the environment.
The usefulness of this is more obvious when taking into account time-triggered actions, grouping outputs and actions together, and automatically sensing and reacting to environmental events. Remote control through a web interface or wireless devices may also be possible. Ever wondered if the lights were switched off at home when on vacation trips? No need to call mum or the neighbors, just do a quick status check through the Internet... Endless possibilities, so that should be enough motivation for tackling this.
This section attempts to provide an overview about the hard- and software stack used in this project.
However, as I am currently in the process of rebuilding my web pages, it has yet to be written - due to the size of this project and the intended long-term usability, I have decided to move the real documentation part to a separate PDF file, which is available for download below.
An overview of the system, and of the design decisions made, is split up over some pages linked here.
The detailed description of software, hardware, and infrastructure is now only available as PDF documentation. At some point, I need to print this out and put it somewhere for future use, and I want to write it only once.
Once there is a good LaTeX-to-HTML converter, I might put a web version online, until then, feel free to have a look at the PDF linked above.
The schematic drawings and programs referenced in the documentation are available on the respective parts pages here.
For now, a photo of the electronics designed and built so far, cobbled together to test the message flow from a light switch to the relay actually switching the light:
The automation components are networked through a CAN bus cable, which I have chosen for its noise immunity and checksumming included in the low-level bus protocol.
This is what an "ONBUS" message in my HomeAutomation CAN higher-layer protocol looks like. Bus devices send these in loosely defined time intervals so that a control station wishing to enumerate devices can listen for these and detect bus members without the need to allow broadcasting and having broadcast inquiry responses clog up the bus.
CAN uses differential signaling, which is why there are two "mirrored" signal lines (yellow and cyan). Only the voltage level difference between the two signals is actually evaluated by bus devices, which makes the bus immune to common-mode noise (affecting and offsetting both signals by the same amount).