Ask me how many entities my Home Assistant system has. I would have said 800, or a little more. I was confident about this. I operate the system.
The audit said 1,751.
That is not a rounding error. The house kept a second set of books. Of the 1,751 entities, 446 were disabled. Another 345 reported “unavailable”. About one quarter of my smart home was furniture. The house was not smart. The house was a hoarder.
A read-only audit first
A simpler problem started this. The automations did not work. Lights ignored people. Routines ran for a family that was not home. I assumed bad logic somewhere.
So I did not touch anything. I did a full read-only audit: every automation, every script, and ten days of recorder history.
The audit found three things.
The tracker graveyard
The logic was good. The inputs were dead. Every presence automation was built correctly. But the trackers that fed them were a graveyard. Of my own three device trackers, one was alive. One reported “unavailable” from day one of the audit window. One was an iPad that stays on the kitchen counter. The iPad reported me as home, forever, and was happy to do it.
One of the kids had zero trackers assigned. That child’s presence read “unknown” for its full recorded history. So “lock up when everyone leaves” could never run. The house waited for a signal from a person it could not see. The system promised a safeguard it could not deliver.
The worst detail: 184 of my 188 device trackers came from the router. The router watched the WiFi. Apple devices change their WiFi hardware address on purpose. So the router saw “new” phones and abandoned the old entries. This one failure, repeated, was 70 percent of all my disabled entities.
![]()
Forty-two scripts, four people
Nobody used most of it. I had 42 scripts for a family of four. Twenty-nine of them did not run once in ten days. Six of those were almost identical “movie night” variants. One was a Baby White Noise script. Neither kid has been a baby for a decade. The script just lived there. For years. The age of a smart home and the number of scripts nobody runs are directly correlated.
Automations that wait forever
Broken things stay quiet. All three of my 3D-printer automations referenced sensor names that do not exist. The cause was a typo in a prefix. The automations ran zero times, ever. No error appeared anywhere. Home Assistant does not complain about an automation that waits for a sensor that will never speak. It waits, politely, forever.
Subtraction, not automation
The fix plan was the opposite of my expectation. No new automations. No clever debounce logic. Only subtraction. Keep one tracker per person: the phone GPS, the only tracker that was ever real. Delete the dead entities.
Collapse the six movie-night scripts into one. Let the watchman integration alert me on a schedule. Then I do not wait three years for the next audit.
In this house, most of the “broken” automation was broken input data. It only wore 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 knows. My house knew half of what I thought. It reported a quarter of what it had.