For a while I have been fascinated with the idea of home automation via a mesh of devices that would allow me to interface my home with a web server. As opposed to integrating off the shelf devices like smart lights, smart plugs, smoke detectors, etc. I wanted a platform that would operate a network of low lever 8-bit micro controllers. I could not find anything open source that met my criteria and decided to try to build something myself.


I have been playing around with some hardware and developed the following success criteria for this project:

Minimal wires - All modules must interface with the central system using some sort of radio transmission. Having wires running all over the place just does not seem scalable  nor practical.

Low cost - In order to allow for a large amount of experimentation the cost to stand up the general system and to add new sensors needs to be low. My overall budget is around $200 CAD.

Scalable - Adding new sensors to the system needs to be easy. This would include the ability to develop and integrate brand new device types. This criteria impacts not only the hardware design but also the communication protocol and the overall data pipeline.

Modular - The system would need several components ( senor hardware, signal processing module, data stream pipe, even processing system, data store, user interface) and each of these components need to be properly modularized and isolated. If need be I want to be able to enhance or replace them without impacting the rest of the platform.

In addition to the above criteria I wouldn't say no to working in some distributed technologies I haven't had a chance to play around with yet.


High Level Architecture

I envision the system to be broken down into a series of modules with by directional data flow as illustrated by the diagram below.

Sensor - Small scale devices collecting environment information and transmitting data to the higher layer (e.g. temperature sensor).

Controller - Small scale devices listening for instructions from the higher layer (e.g. light switch).

Radio Interface - Main interface that sends information to controllers and receives information from sensors. There will likely be some basic data processing at this level to ensure quality of data. This system will interact with the data pipe to commit sensor data and receive instructions for controllers.

Data Pipe - Module responsible for moving data to and from the radio interface. There should be no data manipulation at this step.

Event Processor - This module will be responsible for treating data packets originating from sensors correctly and committing them to the data store. It will also need to interpret user instructions originating from the User Interface and passing them along the Data Pipe in the appropriate format. Most data manipulation should take place within this module.

Data Store - All data coming from sensors, user information (e.g. login credentials) information on devices and any instructions passed form the user to the controller modules will be stored here. This module would like take the shape of a typical SQL database.

User Interface - A web or mobile application that will allow the user to see sensor data and interact with registered controllers.

Next steps will be to determine what hardware and software will be used for each module.

-- The Digital Architect