My long strange trip into home automation
Over the past few years I've written about things I've done around my home, like putting in a five-acre wide WiFi network or tapping a NFC tag to unlock the front door, and I think I've finally figured out a novel setup for home automation that finally works reliably and I wanted to share my setup in case anyone else runs into the same reliability problems that took me so long to solve.
The current landscape
Every home internet of things system tries to provide APIs and controls to all your objects in your home but also act as the interface to it. I've tried literally every system starting with x10 in the 1990s, to Belkin's WeMo, Samsung's SmartThings, Apple HomeKit, Google Home, and Home Assistant.
What I've found from chasing down problems for the past 10 years is that none of them are a one-stop solution to everything, even though every system tries to be and it's in their financial interest to get you to pick just their ecosystem.
The option with by far the widest variety of supported objects in any house is Home Assistant, but the UI for it has to be built by hand and it feels really finicky to get just right, not to mention it can be a drag for non-technical members of your house that you also have to setup their own dashboards. HomeKit works smoothly on Apple devices but doesn't support half of the things in my house (I try to buy new things with native HomeKit or at least Matter support).
Separate your front end from the back end
After years of trying various approaches, I figured out I need to de-couple the backend network/API stuff that talks to devices from the UI my family gets to interact with every day.
My system is now two small computers, one a raspberry pi 5, and the other a HOOBs Pro (basically a pi running on better hardware).
The pi 5 is running Home Assistant with connections to literally every single thing inside my house, whether I want to monitor them or not. I use Home Assistant as "the backend" and it connects to wall switches, bulbs, power strips, door locks, solar panels, file servers, printers, motorized window shades, and air quality monitors.
It's great and I have a default dashboard that lists the status of hundreds of items I check on rarely, mostly for troubleshooting reasons. It shows me tons of things like how much solar power has been produced in the last hour, if outdoor cameras have detected motion lately, and what the disk space situation is like inside my Synology file server. I also run Tailscale on my HomeAssistant server so I can peek into it from anywhere on earth if I need to.
But I don't regularly use the Home Assistant app or their dashboard, instead I choose which parts of it I want to push into Apple's Home app. The Home app is on everyone's phone in my house, on iPads and even on our MacOS computers. Their automation tools are simple and straightforward and anyone in the house can edit things like adjusting when lights come on after sunset to go off at a different time, etc.
One of the many great things about Home Assistant is there's a massive community of people hacking on the open source package to add support to every wacky device you can imagine. Someone even added a HomeKit bridge, and I use this to share my non-HomeKit lights and wall switches and plugs on power strips so that they appear in the Home app.
Then I build automations in Apple Home like you would normally and everything works seamlessly. It even works for a few HomeKit-only things that Home Assistant can't see or modify, since everything is inside of HomeKit.
I've had this setup going for the past few weeks and my motion sensors on doors are reliably turning on lights when you open them every time. When I fire up our big TV, it turns on two spots in a power strip to provide ambient lighting after sunset. When my garage door opens, the lights turn on in the garage and on the walkway into the house for a few minutes before going back to off.
And since it's backed by Home Assistant, it's reliable to the point where you can basically set it and forget it. I've tried a lot of hacks like homebridge, but I would have to reboot things weekly to keep light switches working as logs would occasionally fill with TCP/IP errors that would crash the whole system.
Getting secure video into Apple Home
My last challenge was getting my UniFi ethernet-connected outdoor cameras (with no HomeKit support) into HomeKit, but the HomeKit bridge in Home Assistant doesn't support a secure video format that iOS now requires.
There are docker apps like Scrypted that you can run on a Synology or desktop to do your HomeKit video conversion, but I use HOOBs with the UniFi Protect plugin to convert streaming video from my local cameras into a format that HomeKit can see. I've used HOOBs for the past few years and many of the plugins are unreliable, but the UniFi one has worked flawlessly for over two years without incident, so I keep my HOOBs Pro server under my desk just for video conversion (I could run HOOBs on the raspberry pi 5 to keep things simpler, but I already had the HOOBs device working).
With this stuff in place, if I'm watching anything on AppleTV and someone drives onto my driveway, a camera preview pops up showing me someone is outside, and I can tell if a delivery is here or if friends have shown up. You can also use motion notifications to trigger lights, but we have so many animals roaming around they'd go off constantly in the night.
This sounds complicated, can it be easier in the future?
My system is a little convoluted because it requires two small servers running software so 50 things around my house can interact with Apple Home, and once in there, it takes some work setting up each device into which room of the house they are in, and all the automations to connect things together.
In the future, IoT companies could make this easier on customers if they increased support for Matter in devices, which is a new, more universal standard that's slowly rolling out.
Apple could also do more with AppleTVs, since they're small computers that mostly just pull up Netflix for you, but can do so much more. I already use my AppleTV as a exit node VPN in Tailscale, which lets me route all my internet traffic through my home connection regardless of where I am on earth (handy for things like watching geo-restricted sports while you travel that puts me on an Oregon IP address). Apple could basically run a small Home Assistant server inside an AppleTV, and let it connect to every device without native HomeKit support, drastically increasing what objects you could talk to in the Home app, but I doubt they ever go down that path.
After many years of tinkering, I've finally got a reliable system that works almost every time I interact with it. Home Assistant is really solid software and probably comes closest to doing it all, but I prefer the ease of use of Apple's Home app, and how everyone in the house can customize how they get notifications or just pull up their phone to turn off an overhead light before bed.