Hacking my house
The first of a series of articles about my DIY smart home. I am going to give an overview of why i did it, what it does and design decisions of the system.
I always thought that my home would have been smart and I always had the dream to build it kinda like Jarvis in the Iron man movie. Don’t want the fake smart world we are submerged with. I’m not a fan of how big internet companies shaped our houses full of wifi enabled devices that do not talk eachoter and are considered smart because you have to swear at them. I want something hidden, integrated, that makes me feel that I live in a smart home just because I don’t have to do a thing to make the magic happen.
There are some ready made solutions but being a programmer I wanted to do something on my own.
I started searching something easy to program and that was fitting my needs and I found a a PLC like controller powered by the Raspberry Pi 3 created by Unipi Technology. The product is called UniPi Neuron: https://www.unipi.technology/products/unipi-neuron-3
The device runs a customized linux distribution Based on Raspbian. My criminal mind went through the idea of using just the hardware they provide plus their open source kernel modules and to make a custom linux distribution based on yocto that powers my own IOT system.
The constraint I put to the system are the following:
- Local first because remote connection might not be there
- Easy to deploy on embedded devices: this means using Go as the language (because it is reasonably fast, safer than C++ and it comes with a next level toolchain), having a single executable to deploy and a single configuration file
- Hidden. Tech is not shown. The house is pretty standard at a first glance
- Use existing household stuff and wired components as much as I can (standard thermal valves, standard light switches, plugs, etc…)
Today I live in my new house. The system I made is still not 100% complete but it is stable and it currently controls:
- An heating system with 7 zones. One for each room. The system turns on or off the floor heating based on some rules about the temperature and the hot water flow of each room (small rooms made the boiler to start and stop often because the quantity of water to heat up is not enough to make it run for a while. So the rule is to group together rooms that are close to the starting temperature if they are small)
- Control something like 40 digital devices like lights plugs, the doorbell and others. Either from wall switches or via an event based automation system
- Control 4 leds stripes via PWM outputs
- Execute an action after a given period of time (useful to turn off bathroom heating or lights that might be left on by mistake)
- Execute actions at a given time (minute precision)
- Execute something at sunrise/sunset (useful for garden lights)
- Execute something in reaction to any kind of other event
- Send notifications via telegram in reaction to an event
And of course it comes with a not yet finished Android app
In the next article i want to talk about the Go application that runs everything and how it works.