Automate Everything

One of the things I got into big this year was home automation. It started with the Amazon Echo, and buying a bunch of Phillips Hue lights. The first bit was simply to turn off the bedroom lights without getting out of bed. Next came adding in a Lutron Casesta System to get the lights that we couldnt replace. Then Wemo plugs for the AC and Heater Units. Then Logitech Harmony Hubs for TV and media. In the span of a few months, we had everything in the house under voice control through Amazon Echo.

I was very proud, and even had compound commands setup through IFTTT.com, doing things like rave style lights and music. However the one thing I was missing was true automation; things that triggered without a voice command from me. My Nest was the closest things I had with temperature control, but 4 AC window units, I wanted to be able to passively zone control the house.

A few years back I had kickstarted a NinjaSphere. It had promised to do all the things I wanted, but when they removed NodeJS support in favor of Go, the things began collecting dust.

I tried setting up a ton of IFTTT scenarios, but most of them would be delayed or not trigger at all. I needed something more reliable.

Enter Home Assistant

Then, over the summer when working at the LaSalle College Highschool Microsoft IT Academy Summer Program, with my good friend Chris Becker chrisbecker.io, he told me about Home Assistant, a open source python project that hooked into the various home automation systems and gave you a programmable interface into all of them as well as a nice web based GUI. At first I was hesitant but after looking into it and seeing that I could easily setup sensors for each room and tie conditions to turn on/off the AC or heaters, I was set.

I started downloadind the home assistant program on my Mac Pro in my office and getting it up and running. Install was super simple and it got up and running super quickly. The documentation is structured a but weird, but I was able to find most of the things I wanted. I got the ZWave sensor (I recommend the Aero Multisensor), and was able to hook up the rooms. It also gave me the ability to hook into all my other systems, to put lights on a timer, to changes things based on home or away.

I loved everything about the system, except that I had to have it running perpetually on my mac. So after 10 seconds of research I found Hass.io, the fully built raspberry pi operating system, with Home Assistant baked in. Picked up a Raspberry Pi on Amazon and threw it on there.

It worked amazing. I plugged it in to my network, and it set itself up much like the desktop version of home assistant. Except now I had extra controls through the GUI; I could reboot the box, install updates, add a bunch more plugins. I had a stand alone system that could do all of my home automation, and all I had to do was copy over the configurations on my desktop via SFTP.

The Good

The Hass.io image is super easy to setup. Dump the image on an SD, edit the config file to connect to the wifi, and start going.

The hassio version of home assistant is super easy since it updates and you can reboot the whole system right from the UI.

For the most part, home assistant auto-connected to all of my devices. I had to manually hook it up to one or two services, but the instructions to do so were super simple.

Its all in home control. This was a major point of my friend Chris, that all of the home automation data stays local to your network. No Amazon or Google spying on you. This is less of an important point to me as I have Echos all over my house and extensively use Google Services.

The Not So Good

The UI is good, but it is definitely feels like function far before form. It is a standard Google Polymer Paper library, so it looks like your run of the mill Material Design app. Which is a good enough look, but after working in those libraries, I know a lot of developers use it as a coverup for lack of good UI design.

Customization is a bit rough. It connects to all of my services easy, but customizing the panels is a non trivial task. There are docs on how to do, but the docs are all over the place. In the end, the work of fighting the automated setup was not worth the benefit of a custom setup.

Sometimes the Automation takes a bunch of debugging to work it out. The YAML based configuration files make sense in theory, but they take some finagling to get everything running as expected.


I love my hassio setup. Having climate control on a per room basis is fantastic, and has saved me a ton on my oil bill; I can set the home heat lower, and have the rooms that we use stay closer to the temp we want.

Being able to simply define rules for the house, and setting how systems interact was super helpful, even more so since it is all in python. Also being able to see a history of events on the network by device, or seeing the history of the states and readings of the sensors is great.