If you’d asked me how many entities my Home Assistant setup had, I’d have said “800, maybe a little more.” I was confident about this. I run the thing.
The audit said 1,751.
That’s not a rounding error. That’s a house keeping a second set of books. Of those 1,751 entities, 446 were disabled and 345 were sitting at “unavailable” — meaning roughly a quarter of my smart home was furniture. The house wasn’t smart. It was hoarding.
A read-only audit first
What kicked this off was simpler: the automations “weren’t working.” Lights ignoring people. Routines firing for a family that wasn’t home. My assumption was bad logic somewhere. So instead of touching anything, I did a full read-only audit — every automation, every script, ten days of recorder history.
Three things fell out.
The tracker graveyard
The logic was fine. The inputs were dead. Every presence-based automation was correctly built — but the trackers feeding them were a graveyard. Of my own three device trackers, exactly one was alive. One had been stuck “unavailable” since day one of the audit window. One was an iPad that lives on the kitchen counter, cheerfully reporting me “home” forever. And one of the kids had zero trackers ever assigned — their presence had read “unknown” for its entire recorded history. Which meant “lock up when everyone leaves” could literally never fire, because the house was waiting on a signal from a person it had no way of seeing. The system was quietly promising a safeguard it could not deliver.
The killer detail: 184 of my 188 device trackers came from the router watching WiFi. Apple devices rotate their WiFi hardware address on purpose, so the router kept seeing “new” phones and abandoning the old entries. Seventy percent of all my disabled entities were this one failure, repeated.
Forty-two scripts, four people
Nobody was using most of it. Forty-two scripts, for a family of four. Twenty-nine of them never ran once in ten days — including six nearly identical “movie night” variants, and a Baby White Noise script for kids who are now 11 and 13. That one had just been… living there. For years.
Automations that wait forever
Broken things stay quiet. All three of my 3D-printer automations referenced sensor names that have never existed — a typo’d prefix, essentially — and had therefore fired exactly zero times, ever, with no error anywhere. Home Assistant doesn’t complain about an automation waiting on a sensor that will never speak. It just waits, politely, forever.
Subtraction, not automation
The fix plan ended up being the opposite of what I expected. No new automations. No clever debounce logic. Subtraction: one tracker per person (the phone GPS, the only one that was ever real), delete the dead weight, collapse the six movie-night scripts into one, and let the watchman integration nag me on a schedule instead of waiting three years for the next audit.
In this house, most of the “broken” automation was broken input data wearing a logic costume. This audit is now where I start with other people’s houses: before I rebuild anything, I want to know what the house actually knows. Mine knew half of what I thought, and reported a quarter of what it had.