I have written before about my experiments with Arduino and RaspberryPi. For the past few months, I have had a Jeenode reporting to a JeeLink, which in turn was plugged into my old RaspberryPi Model B. There, a Python script runs that sends sensor data to ThingSpeak, which I keep an eye on with the ThingView app on my Android phone. This setup works fine, but I would like to take ThingSpeak and ThingView out of the loop, and have a home automation system that allows me to start automating stuff in my house. There are a bunch of home automation systems available, and today I played with a few of them.

I would like to have the following features for a home automation system:

  • It should run on my RaspbarryPi 3 and provide a web interface
  • It would be great if the system could parse values directly from a serial port. Currently, I read strings of the form “1 30 75” from a serial port (using python), reflecting a measurement from sensor 1 with temperature 30 and humidity 75. If the system can read from the serial port directly, I don’t have to maintain a python script
  • I’d like a REST interface for adding sensor values (in case reading directly from serial is not possible)
  • I’d like Bluetooth LE (BTLE) support (my next experiment involves an RFDuino)
  • I want to look at graphs of the sensor measurements
  • Ideally, I’d like a mobile app besides the web interface
  • I’d like a modern look and feel

OpenHAB

I installed OpenHAB a few months ago on my (slow) Raspberrypi Model B, and the process was awfull. It took a long time to install, and when it finally was up and running the interface was ugly, old-fashoined, and slow. Event though the system is rich in features, it feels very much like an outdated 2007 product.

Domiticz

Domoticz seems to be one of the leading platforms out there, and it has many of the features I want: it runs on my Pi, has a web and REST interface, and a mobile app. Installation was straightforward and a pleasant experience. Unfortunately, I could not figure out how to read stuff from the serial port, so I ended up modifying my old ThingSpeak python script to use the REST api provided by Domoticz. Within half an hour or so I had the system up and running. Unfortunately, the interface is outdated and often difficult to navigate. The mobile app I used was also quite buggy, and I repeatedly had to clear all the data (via Android settings) to restart the setup. Spoiler alert: I use Domoticz for now, until something better comes along.

Home Assistant

Home Assistant feels a lot more modern than the previous systems. The UI looks great, it uses python3, and installation is a piece of cake (just don’t forget to run ‘hass’ as a daemon). Downside: the UI has a fairly limited number of options, adding a new sensor requires editing a config file on the pi, BTLE is not supported yet, and there is no native app (an html5 app is available). The platform is being developed actively though, and I have high hopes for the future. Admittedly, I did perhaps not give Home Assistant sufficient attention and I might try it again later.

Home Genie

Another great looking system with all the features I need: runs on Pi, can read from serial, has an android app, and REST interface. No BLTE unfortunately. HomeGenie has a programmatic approach, meaning that you can write C# code (it uses Mono) to, e.g., read from a serial port. This approach gives a lot of freedom to users, but also makes it quite complex. I quickly managed to get the sensor values from my JeeLink into a toast message in HomeGenie, but for the life of me could not find out how to make a graph out of these values. HomeGenie uses MVC, and has a JavaScript library to talk to the ‘C’ part (of MVC) from the model and the view. The documentation of this library was a mystery to me, and I gave up.

Calaos

Looks great, but the entire damn thing is in French.

Conclusions

So for now I am running Domoticz, but I am not particularly happy about it. Do you have better options? Let me know! The nice thing about today’s experiment was that I experienced first-hand what makes home automation (and perhaps IoT) so difficult:

  1. There are a lot of different components
  2. Many of these use a different protocol
  3. For some components it is natural to want to look at graphs (e.g. temperature sensors), for anothers I’d like interaction (e.g., light switches)
  4. The above three items require creating a lot of documentation
  5. Technology changes quickly and there is new must-have platform/language/library every couple of years. Without active maintenance and community support, a home automation system can quickly become outdated.

Oh, and one more thing I noticed: nobody mentions Zigbee, even though it is one of the major standards.

In the future I will keep an eye on Home Assistant, and see how it progresses. Also, I will take another look at cloud-based platforms (like ThingSpeak) and start thinking about how much privacy and control I am willing to give up for a well-working system.