Home Assistant is a piece of software that can turn any linux computer into a home automation server. This feature allows the user to place some smart devices around the house and make them interact using automations. The goal of the program is to create a smart home, which is not like every common house. A smart home is able to activate its devices, without any user interaction. For example, if someone walks into a room, Home Assistant detects his presence and, if it is dark, it automatically turns on the light.
Home Assistant features a perfect integration with most of the commercial “plug and play automation” solutions, so that any user with some Linux knowledge can start automating their house. However, the platform doesn’t prevent the users from building their own circuitry and programmed sensors. This second option allows, of course, more control over the behaviour of the programmed devices.
Home Assistant has a nice built-in web interface, which can be consulted to read sensor values and to activate the devices. The platform also exposes APIs to support custom projects and works with vocal commands, but only in some supported browsers.
The start of a new adventure
I found out about Home Assistant a couple of months ago and I have already started experimenting with it. I installed it on my Odroid C1 board because it requires a small computational power to run. But a Home Assistant server is useless without its clients.
I decided not to use pre-built commercial devices because it takes away all the fun (and a lot of money as well). I want to build my own circuitry using some basic components: switches, relays, LEDs, etc. A logic unit will be the brains of every devices and will decide what to do. Since the unit will need to be connected to the LAN to communicate with the Odroid, I ended up choosing the Arduino board with Ethernet shield and the ESP 8266. For more information about the ESP board, refer to my post about the subject. The devices scattered in the house will transmit information to the server by means of the MQTT protocol.
I will take on this challenge in steps. First of all I will create a code template for the connected devices. The template will help me making sure that every board has all the key features it should have. If the light controller gets stuck, the light could suddenly turn off or even worse, it could turn itself on at 3 AM waking me up. Secondly I will start specializing the template to create the code for the different devices, which will be sensors and operators. Lastly, I will create automations to create my smart house.
I will publish a post every time I add a piece to this puzzle, with tutorials and code examples. You can expect continuous updates, because flaws begin to appear only with use. For now, wish me luck!