When I started using Home Assistant, I actually tried Hass.io first. Hass.io brings its own runtime environment, including an operating system, to run Home Assistant. In addition, Hass.io hass an add-on system that allows to more easily add home automation components, such as databases or deCONZ. However, in the beginning, I was running everything on a Raspberry Pi, which was rather slow. Furthermore, I got annoyed when I made configuration errors and it was quite hard to debug it because access to the console and the underlying system of Hass.io was a bit tedious. So I changed to run Home Assistant in a Python virtual environment on a Linux host system.

Recently, I made the decision to give Hass.io another try. Mostly, because I've wanted forever to get a nice Grafana dashboard to visualize the data that my home is generating and I was too lazy to set it up manually. I've also wanted to give Node-RED a try and again, I was too lazy to figure out how to set it up and integrate it with Home Assistant.

So last weekend, I finally switched back to Hass.io. And I have to say that I am quite happy with the decision. I used the installer that is mentioned in the Hass.io installation instructions to get it on my Debian home server. Actually, I already had the installer and Hass.io tested in a virtual machine first, to make sure it won't break my system. Everything went great and I can definitely recommend this installation method. Caveat: there is no un-installer. Getting rid of everything that the installer creates and installs is not trivial and might pose an issue.

Right before installing Hass.io, I took my previous Home Assistant installation offline, but kept everything installed. I decided not to simply copy all my configuration over, as I wasn't sure if everything would work if I did that.

Luckily the majority of my devices are Zigbee devices and thus managed by deCONZ/Phoscon, which didn't change at all and was immediately recognized by Hass.io.

I ported the automations and scripts from the old system gradually to Hass.io and was surprised how quickly I had everything back up and running.

I am using the following Hass.io add-ons

Configurator: Let's me edit my config files from the Home Assitant web interface.

Visual Studio Code: Also for editing files, but more powerful. I might remove Configurator again.

SSH server: To be able to ssh into the Hass.io docker container. Conveniently, this also replaces my previous reverse-ssh-proxy that I used to access my home server from remote locations.

InfluxDB: A database to persistently store all data that is generated in Home Assistant.

Grafana: A nice visualization tool to display the data from InfluxDB.

A Grafana dashboard. I plan to create a lot more of these. 

Node-RED: A tool to create automations based on visual flows rather than YAML as in Home Assistant.

And it turns out that Node-RED caused my home automation to make the biggest leap. I was amazed how nicely I can implement things in it. Flows in Node-RED are so much more clearly readable than Home Assistant scripts or automations. The only thing that I struggled with initially was how to keep a state in my flows. Node-RED has a state machine node, but I really couldn't figure out how to use it. I learned today that there are variables, which I want to check out in the future. But I actually settled for misusing dummy automations without triggers or actions in Home Assistant to represent binary states. This has the nice advantages that the state is available easily both from Node-RED and Home Assistant and that I can see and manipulate the state in the Home Assistant web interface for debugging and manual overrides.

One of my flows from Node-RED. This kind of programming feels much nicer to me than writing YAML. 

Creating new automations suddenly became a lot more accessible to me, as I can more easily implement also some of my more complicated automation ideas.