They have moved to be UI based, which does seem to work much better for most users given how complex automations can get.
Usually you can do it yourself, because yes they are just docker containers. I don't use them myself as I don't find much use for most of them. The more important addon tool is HACS and that works in the stand alone docker container.
> But from there, it seemed extremely GUI oriented… I had to install an add on just to see my config files
Yes it's very GUI focused now, you can usually get to the basic yaml config in any screen though if you click through to manually configue that component. This was generally done because the yaml config method was a pain even for the tech literate... because yaml.
If you want proper code in HomeAssistant have a look at AppDaemon https://appdaemon.readthedocs.io/en/latest/HASS_TUTORIAL.htm... Makes it easy to use Python in HomeAssistant.
Alternatively there is Node-red https://nodered.org/ (js visual node programing automation) and huginn https://github.com/huginn/huginn (Python automation)
They will never offer as much integration as HA so I tend to find using HA as a dashboard/device integrator and then Node-red/AppDaemon for the actual automations to be more optimal.
I develop my own home automation components and use MQTT to interface with HA using its MQTT integration. This gives me the freedom to have fun developing sensors, presence detection, garage door openers, etc, all still with zero reliance on "cloud". And I still benefit from a single UX and integration point on HA, which to me is the biggest value.
I run HA on Docker and it's locked down as much as practical. For example, I use nginx reverse proxy and limit HA itself to 127.0.0.1:8123 -- I don't need/want anything automatically discovered on my network.
I also have no need for addons. That just seems like more headaches when upgrading HA.
Keeping things simple with HA has worked great.
- setup HASSOS as a VM in my proxmox (and passing the usb zigbee stick through)
- install HACS for extra addons
- install the VSCode addon (meh, I’d prefer vim)
- install zigbee2mqtt
- write all my automations with appdaemon
That last point lets me write everything as python code instead of point and click (nodered) or some weird and limited (to me) yaml. With appdaemon, anything python can do is possible and you get an api to HA for the automation part.
VSCode also gives you a terminal so you can use git etc.
If you prefer there is also the option of using ssh to edit your files directly, you can break out of the default HA shell over ssh with “exit”.
HA didn’t make much sense for me until I heard of appdaemon. Now it’s amazing for me.
Depending how sophisticated your needs are, if you write code, consider writing your own. With libraries handling most of your hardware integration, writing a home automation system is often primarily writing the glue between. (I didn't do this. I made mine much harder for myself, I speak directly to serial ports with hardware codes, it's also much buggier than other solutions.)
https://github.com/hassio-addons/addon-grafana
Yeah, if you want to have it 'just work', a dedicated Pi seems fine, though I'm considering moving it onto my NAS if I get a usb Zigbee stick (I have one sitting on the pi's gpio pins).
I know I ran the motioneye service on the nas (docker container) as the Pi was struggling a bit, and to have more room to write the files. If you are already familiar with docker, you can totally run the add ons yourself.
You can also write your own automations in python with HA https://appdaemon.readthedocs.io/en/latest/
And if you wanted, I think you can configure appdaemon to run without Home Assistant if you have something else running the MQTT service, so you could add the Zigbee2 add on (just a docker image https://www.zigbee2mqtt.io/) and interact with it directly.
Zigbee2Mqtt does a great job supporting lots of devices (IKEA stuff for example), so I think you might just want to get a zigbee stick and go nuts on the MQTT instance yourself. Shouldn't be too hard to log the MQTT events into your custom dashboards.
You might not even want AppDaemon if you want to just code up an event loop yourself...?
But I'm pretty happy with the gui/yaml home assistant experience, as I mostly want fairly simple and predictable automations, and the dashboard is good for the whole family to use as well.
I honestly don't do a ton of automations. The one really important one controls a hot water recirculating pump with a Shelly One set up as a temperature sensor. This is a small ruby program that uses MQTT to set the state of the zwave switch controlling the pump switch and directly talks to the Shelly for temperature readings. It talks to the HA API for settings but has reasonable fallbacks if things fall over.
Its written in Perl and a bit dated, but it's small and connects with everything I have. Plus it includes a MQTT server.
- to get the most out of it, it wants to be installed as an “OS” on a dedicated device (like a raspberry pi). Without doing this, you can’t install add ons from the store. I’m guessing this might be because the add-ons themselves are packaged with docker?
- I went ahead and did what they wanted, and dedicated an entire raspberry pi to home assistant. But from there, it seemed extremely GUI oriented… I had to install an add on just to see my config files! I know plenty of people have had success keeping their configs in version control, but that seems to be fighting the current.
So as a particularly advanced user, I don’t think Home Assistant is for me. Which is perfectly fine!
Does anyone have any recommendations on home automation software for people who write code for a living? The main thing I’m after is a decent library of supported devices that I don’t have to reverse engineer and write SDKs for myself. I’d also like to dump any/all sensor readings and switch states into Prometheus and view data with grafana.