There is a certain flavor of tech nerd that needs direct, unadulterated access to whatever they are working with. Most of these people are Linux users, can own several Raspberry Pis, can’t stand it when something comes in between them and their hardware, and will take whatever complex path they need to interface directly with it. I am one of these people, and I am only getting worse over time, which is why I have converted my smart home to Home Assistant, the home automation solution for true freaks.
Now, many “normal” people out there are satisfied with Apple Home, Google Home, Amazon Alexa, and the like, and I understand. These ecosystems are easy to use, require very minimal setup, and (for the most part) they “just work.” Apple Home, in particular, works great if you have multiple Apple devices. But get demanding enough, and you will hit walls, little compatibility issues, annoying limitations, and various other roadblocks that come from being in a walled garden. Home Assistant addresses that by being open source, flexible, and limited only to whatever people want to develop around it. If you can think of a smart home product, a sensor or switch or light, it’s very likely that one or more frustrated nerds figured out how to get it to work using Home Assistant several years ago.
Home Assistant started as a Python application back in 2013 and has quickly evolved over time into the go-to solution for fans of open-source software. Unlike other smart home systems, it can be installed on tons of devices like single-board computers (which includes Raspberry Pi devices and easier-to-get hardware like the Odroid N2 Plus) as well as other network devices. For a while, I had Home Assistant running on a Docker container on NAS, but eventually, I put it on its own Pi.
You can also buy hardware specifically for Home Assistant, like the Home Assistant Yellow, and they even offer a dongle called the SkyConnect for Zigbee and Thread support. Home Assistant is funded by Nabu Casa, an optional Home Assistant cloud computing service.
I have found that Home Assistant offers the greatest amount of compatibility with the devices in my home. If you can think of a scenario for your smart home gear, you can probably script your way to it. You can make any button or switch (provided you can find a compatible blueprint) trigger any other device in your household in excruciating detail. You can have specific conditions based on any number of very tiny criteria and external factors. If you really wanna get twisted, you can create an elaborate flow chart using something like Node-RED, a development tool originally made by IBM that has been adapted to Home Assistant specifically for just such depraved uses.
For example, not only was I able to program every light in my house, but I was also able to program one of my light switches to play audio through my speakers from the episode of Family Guy where Peter Griffin has to explain why he did not care for the movie The Godfather (“it insists upon itself”). Another example: fellow Verge-er Chris Grant took a cue from this Hackaday post and made a secret bookshelf switch that turns on his fireplace.
Most people will never need that functionality, but for me, the freedom to do something that inane with my gear is absolutely vital. What’s more, I want as few people holding the keys to my home as possible, and so self-hosting my home automation is absolutely crucial. I don’t want Jeff Bezos knowing anything about my home activities aside from the countless reams of consumer spending data he already has on me and everyone reading this.
Ready, set, start
If you want to get started with Home Assistant, you can’t go wrong with a Raspberry Pi 4, provided you can find one. But given the relative unavailability of Raspberry Pis even now, an Odroid N2 Plus is probably your best bet (this is what the developers currently recommend). Basic installation is pretty straightforward as far as these things go and far less intensive than most single-board computer projects.
For example, with the Odroid, you’re going to need your little computer, your boot medium (usually a flash card but sometimes an EMMC), and a program called Balena Etcher. From there, you can flash your card via an URL, put that flashed medium into your SBC (single board computer) when you are done, connect that bad boy to your router, and let it set up. You should be able to access Home Assistant from any browser or phone, provided you are connected to the network. Connecting externally or via the cloud is an entirely different topic, although Nabu Casa is available if you don’t want to figure out remote access.
Once you have Home Assistant set up and connected to your network, the sky’s the limit for what’s possible. Do you already have Wi-Fi or Zigbee light bulbs? Home Assistant can work with them. In my case, I can group together my Hue lights, my Elgato Key Lights, and some fixtures I soldered together from scratch using WLED into scenes and automations. I used an integration called ZHA (Zigbee Home Automation) and the SkyConnect to negate the need for my original Hue hub.
One of the first things I did when I got Home Assistant set up was to automate my office lights using a human presence sensor I got on Aliexpress for 25 bucks. Unlike a motion sensor, a human presence sensor is sensitive enough to detect not only when you’re in a room but also when you’re in there and not moving. I currently have it set to turn all my lights on in the office with a brightness and color temperature that is time-dependent. It works very well. I don’t even use the light switch in there anymore, although the sensor is so sensitive that it occasionally detects human presence through the wall and in the hallway adjacent to the office itself. I have no idea why it does that, and my girlfriend finds it very funny.
I can control everything using the handy Home Assistant app or just via my browser if I want. The UI out of the box is not the slickest around, but it’s functional and allows for tons of customization. Home Assistant is able to talk to my many Airplay 2 devices, it can play media from my home server via DLNA, and if I want to expand it further, there’s an entire ocean of gadgets on Aliexpress that I can get to flesh it out. I actually bought a CO2 and air quality sensor for it that I’ve been meaning to build. There isn’t really much in my house with Wi-Fi or Zigbee that is outside of its reach. If I ever end up in a situation where owning a house with solar panels is possible, Home Assistant could be used to manage them.
Help from the enthusiasts
I have written about my experience setting up Home Assistant before, but much of it involved taking the smart home ecosystem I had cobbled together over the years and ripping it apart to rebuild from scratch. When it was all said and done, it felt great. But I am not going to say it was a painless ordeal. Much of what makes Home Assistant work is built by enthusiasts, so if a device doesn’t work out of the gate, very often, someone in the Home Assistant Community will create a blueprint to fill the gap.
While this is not the most complicated thing you will have to set up, it’s an additional layer to deal with and a far cry from the native support of other ecosystems. Little touches, like transitions between lighting scenes, need to be created manually. You need to know exactly what you are doing and why you’re doing it. This is especially true if you sink your teeth into the Home Assistant Community Store, a very powerful integration that adds tons of options if you really want to take the training wheels off.
To give Home Assistant credit, it has gotten much better and more intuitive over the years, but again, it is not frictionless. I wish that it was a little less difficult to make the UI more attractive (although I’ve found that Mushroom looks very elegant), and while I am the kind of person that loves scripting, it can be a little tedious at the end of the day. Better and more intuitive integration into community elements would be nice, but I mostly have it set up now, so I am not really complaining. That said, would I trust a clueless family member with only basic tech knowledge to be able to work with Home Assistant if I set it up for them? Probably not.
While there isn’t a lot that Home Assistant can’t do with enough elbow grease, there are ways it could be more inviting. It’s still a lot of manual work, and it has the highest barrier to entry. But on some level, what do you expect? If anything, it’s less about what I want out of Home Assistant but rather what I want out of hardware makers. While Home Assistant can be made to work with nearly anything, a more robust ecosystem of hardware that works out of the box (like Skyconnect) would make recommending it to people an easier sell.
I would love a world where an open-source smart home was so simple and intuitive that a not-tech-inclined person could set it up easily. It would make me so happy for Home Assistant to be so ubiquitous that most hardware manufacturers have to support it instead of the other way around (although with Matter, that is less of an issue). I hope that Home Assistant becomes so robust and popular that I can recommend it to someone without having (or getting) to explain, in detail, what a Raspberry Pi is.
That’s a nice future to imagine, but currently, Home Assistant is still strictly for the real freaks, which is convenient — because that’s a fitting description of me.