My Experience and Thoughts on Home Assistant

homeassistant-logo

Note: This post was originally posted on my personal blog. I have copied the content to this blog.

I’ve been using Home Assistant for exactly one month now, and I’ve developed some clear opinions in that time.

Before I get too far into it, a word on what Home Assistant is. Home Assistant (or HASS for short) is a home automation tool that runs on a server, raspberry pi or other device which connects to devices and services in and outside of your home with the ability to control these devices based on custom logic or user input. Home Assistant is able to tie into other smart assistants like Google Home and Alexa.

First, here is what I’m doing with my Home Assistant:

  • Recording and graphing data such as temperatures, humidities, kWh of devices in my home
  • Send me a message to my phone when a person is detected in any of my security cameras, with a snapshot from that camera
  • Creating automations to control devices in my home, such as turning on a humidifier when needed to keep humidity between a certain range, creating NFC tags that, when scanned, run further automations or turning on a fan when the temperature is over a certain value
  • Notify me if any of my UPSes lose wall power
  • Message me a human readable forecast when the weather will be uncomfortable (any sort of rain, too hot or too cold)

And more. Here’s what my automations list (partially) looks like:

automations

And here are my integrations (which are pre-made, plugin-like addons for HASS):

integrations

There are a huge number of integrations and tools to connect up the smart devices in your home; one way or another Home Assistant can probably control it (though if you’re buying a device, read the reviews for home assistant compatibility).

Now onto my thoughts…

The Good

Home Assistant is robust and easy to use (which is the result of recent efforts to improve usability). Being able to do most things via UI is nice, and where a UI isn’t possible, simple YAML editing is all that’s required. HASS also enjoys a huge amount of integrations and custom tools that make it extremely powerful. HASS also has thorough documentation and powerful developer tools that are a huge help when making automations.

This might also be counted in The Bad, but once you start automating it can get addictive to get new devices to integrate and write more powerful automations to make your life easier.

The Bad

Most of the aspects of Home Assistant come with a learning curve that ranges from “5 minutes of light reading” to “Looking up Jinja2 templating language”. Some of the concepts HASS introduces are complex and do justify the learning required, but some things in HASS are too complicated (like making dashboards, for example).

HASS’s documentation, while thorough, also makes it difficult to go from “I want to do X” to “Here’s how to do X”. The documentation includes simple examples, but offers scant advice on when to use certain tools. Also, the documentation often glosses over details you must infer or assumes you know what other documentation pages say. Also the automations are all listed on a flat page with no built-in organizational tools available. I worked around this by coming up with a naming scheme to name my automations (such as COMFORT | Ceiling fan | Upstairs | Toggle light when NFC tag is scanned) which will automatically group them when sorted.

Overall, while HASS’s code is very high quality, it also misses the perfect mark just often enough to frustrate. HASS is only partially to blame while the integrations share the rest of the blame (for example, my thermostat’s humidity sensor doesn’t include a unit of measure. This isn’t normally an issue, but when graphing with other sensors that do have a unit, the value is put onto its own separate graph. This is a problem with the ecobee integration, not really HASS itself).

I’m the only one in the house, so there’s only one person who needs to learn about the automations, one person to be consulted on how they should work, etc. In a house with multiple people, the complexity for writing automations increases exponentially.

The Ugly

Actually using Home Assistant requires being aware of what it’s capable of as well as coming up with an idea of an automation you want to create. Often I’ll sit and stare at the automation screen going over all the sensors and switches I’ve already configured in my head to try to come up with more things to automate. This, as well as the steep learning curve I mentioned in The Bad means Home Assistant takes a lot of time–to plan out, to set up, to test. There’s Blueprints (which are easy-to-use automations shared by the community) but I’ve found most defaults and blueprints are just far enough from what I need to be less than perfect.

HASS also works best when you have a background in YAML, Python, Jinja2 templates, object oriented computing and other specialized knowledge. These are not really things we should expect an average user to be familiar with.


Overall, I am extremely pleased and impressed with Home Assistant. I’ve automated some really cool stuff in my house, and I have already gotten use of the data I’ve been collecting (being able to show a historical graph of the humidity to an HVAC specialist was really cool). As time goes on, my automations (and skill at making them) will continue to grow, making it feel more and more like my house and devices are custom-tailored to me. I highly recommend anyone with an aptitude for tinkering try out Home Assistant and make your devices cater to you.