People often ask what I’ve got running in Home Assistant. The honest answer is “quite a lot”, but the list of gadgets is the least interesting part, and it’s not something I’d post on the internet anyway. What actually makes a smart home pleasant to live in is the handful of rules you build it around.
These are mine. They’ve come from years of tinkering, plenty of mistakes and a family who will tell me very quickly when something I’ve built is annoying.
1. Local first
If the internet goes down, the house should carry on as normal. The lights should still switch, the sensors should still report and the automations should still run.
That rule shapes nearly every buying decision I make. Zigbee, Matter and ESPHome devices all talk to Home Assistant directly on my own network, with no cloud account in the middle. They respond instantly, they don’t stop working when a company changes its mind, and nobody else sees the data.
I’m not a purist about it. Some things only come with a cloud integration, like certain appliances and the odd energy gadget, and that’s fine for anything that’s nice to have. The line I draw is that nothing important depends on someone else’s server. Leak alerts, lights and heating all stay local.
2. The right protocol for the job
There’s no single “best” smart home protocol, but each one has a job it’s good at:
- Zigbee for battery sensors. It’s cheap, it’s local, and the batteries last a year or more. Every mains-powered Zigbee device also strengthens the mesh for the others.
- Matter over Thread for newer kit. It’s where the industry is heading, and it’s nice to buy something that isn’t tied to one brand’s app.
- ESPHome for anything I build myself. A few pounds of ESP32 and a sensor can do almost anything, and it all lives in YAML I control. Some of my favourite projects started this way, like the fish feeder.
- Wi-Fi only when there’s no other choice. Too many Wi-Fi gadgets clog up the network and most of them want a cloud account.
- Bluetooth proxies to fill the gaps. A small ESP32 in a room lets Home Assistant pick up Bluetooth sensors anywhere in the house.
3. Every notification has to earn its place
This is the rule that took me longest to learn. A smart home that pings your phone all day is worse than no smart home at all, because you quickly start ignoring it, and then you miss the one that matters.
So every notification has to pass a simple test: does someone need to do something? If not, it doesn’t get sent. A few habits help:
Notifications clear themselves. Every alert has a partner that dismisses it once the problem goes away. If the UPS battery fails, I get a notification. When the new battery goes in, it disappears without me touching it. Giving the notification a fixed ID makes this easy:
# raise it
- action: persistent_notification.create
data:
notification_id: ups-battery
title: "UPS notification"
message: "The UPS battery has failed!"
# and in a second automation, when the battery reports Good again
- action: persistent_notification.dismiss
data:
notification_id: ups-battery
Group things together. If several servers go offline at once, I want one message listing them all, not a flood. I wrote up how I do that in one alert for the whole homelab.
Only the urgent stuff nags. A handful of things use Home Assistant’s alert integration, which keeps repeating until someone deals with it. Water where it shouldn’t be gets that treatment. A plant that needs watering does not.
4. Built around people, not gadgets
The best automations are the ones nobody notices. If someone has to open an app to make something happen, I’ve usually built it wrong.
I start with an annoyance, not a gadget. “The fish need feeding when we’re out.” “The rack gets too warm in summer.” “Nobody hears the doorbell from the garden.” Then I work out the smallest thing that fixes it. Buying a device and then wondering what to do with it rarely ends well.
A few other things matter just as much:
- Physical switches still work. A guest, a grandparent or someone with a flat phone battery should never be stuck in the dark.
- Everything has a manual override. Automations get things right most of the time, not all of the time.
- The family get a vote. If something irritates the people who live here, it goes, however clever it is.
5. Run it like production
My day job is in IT, and I treat Home Assistant the same way I’d treat any system people rely on.
Backups run every night, automatically, and a copy is kept off the box. I’ve rebuilt Home Assistant from a backup more than once and it’s a non-event when you’ve got one.
Updates are deliberate. I read the release notes before updating Home Assistant itself, because breaking changes are listed there. The smaller stuff is automated: my ESPHome devices update themselves overnight, one at a time.
Names follow a pattern. Every entity is named area, then device, then what it measures. Six months later, when I’m writing an automation at 11pm, I can guess the name without looking it up.
Every automation has a description. One sentence saying what it does and why. Future me is very grateful.
Old stuff gets tidied up. Automations I’ve replaced get deleted rather than left switched off. A cluttered setup is hard to debug.
6. Watch the watchers
The worst kind of failure is the quiet one, like a sensor whose battery died three weeks ago or a device that dropped off the network and nobody noticed.
So Home Assistant keeps an eye on itself too. It tells me when it restarts, when important sensors stop reporting and when devices that should always be online aren’t. My servers report into it as well, using a small MQTT agent I wrote, so problems turn up in the same place as everything else.
7. Keep the private stuff private
A smart home knows a lot about the people who live in it: when you’re home, when you’re asleep and when the house is empty. That data deserves the same care as your passwords.
My general advice:
- Keep smart devices on their own network, away from your laptops and phones.
- Be careful how you reach Home Assistant from outside. Use strong passwords and two factor authentication, and never open ports you don’t understand.
- Think about who can see your automations, history and camera feeds, including people you share screenshots with.
You’ll notice this page doesn’t list every device in my house, or say where they are, or when things happen. That’s not an accident!
What I’d tell myself starting out
If I could go back to my first Raspberry Pi running Home Assistant, I’d say:
- Start with one annoying job and automate that properly before moving on.
- Don’t buy cloud-only devices however cheap they are. They’re always the first to break.
- Write one good automation, not ten copies. Triggers with IDs and a
chooseblock will cover most “if this, do that, otherwise do the other” cases. - Leave a gap between on and off. A fan that turns on at 21°C should turn off at 19°C, not 20.9°C, or it’ll flick on and off all day. There’s more on that in keeping my server rack cool.
- Take backups before you need them.
If you want to see these rules in practice, have a look at my Home Automation page and the write-ups linked from it.
More from the blog
total 1