The house has opinions about whether I am home. For months, some of those opinions were wrong.
The errors were not dramatic. They were frequent enough that I stopped trusting everything built on top of them. Arrival automations fired while I was still at the course. Away routines did not arm, because the house thought that somebody was in the kitchen. An unreliable automation is an automation you stop using. An automation that nobody uses is a config file that takes up space.
The root problem: presence detection almost always rests on exactly one signal. That signal is your phone’s GPS. An app reports it, over a mobile network, through an operating system that works hard to save your battery. That is a long chain, and every link is allowed to be late.
So I added a second signal. Not a better one. A different one.
The network already knows
My favorite part of this fix: it needed no new hardware, no sensor, and no beacon in a hallway. The WiFi controller already knows every device attached to it. Nobody built that as a presence feature. It is a byproduct of the job the controller already does.
I turned on client tracking in the network integration. This exposes one device tracker per client. Now the automation platform can ask a question it could not ask before: is that phone connected to an access point in this building now?
That evidence is different in kind from GPS. GPS is a phone’s claim about its position. The phone computes the claim from satellites, cell towers, and inference. The phone reports the claim when the phone wants to. GPS is the Zestimate of your location. WiFi association is a fact about the physical world. The radio in your pocket is close enough to a radio in my house to hold a link. There is no inference, and there is nothing to optimize away.
Know one item before you start: the trackers exist, but they arrive disabled. The integration creates one tracker for every client on the network. In most houses, that is dozens of devices, and most of them are printers and TVs that never leave the building. No printer has ever left a building on its own. Enable the few trackers you care about. Do not drown in entities that always read “home.”
The aggregation rule and its sharp edge
The person entity makes multiple signals useful. It works in exactly one way. Learn that way before you build on it:
A person is home if any of their trackers reports home.
That is a logical OR. It is the correct default, and it is why redundancy helps at all. A phone can drop off the mobile network. An app can go silent in the background. A tracker can stop its updates for its own reasons. None of those can make the house think you left, because another tracker still reports.
But an OR is generous in only one direction. Look hard at the consequence.
Redundancy makes “home” robust and makes “away” fragile. Every tracker must agree that you are gone before the house believes it. So one stuck tracker makes you permanently present: a tracker that stops in the wrong state, or one that points at a device that never leaves the house. The house never arms anything again. From the outside, it looks like you became a homebody.
So curate the tracker set. Do not accumulate it. Each tracker you add makes presence more reliable and makes absence harder to establish. I track a phone and a laptop. I will be conservative about a third device, because the laptop already spends the occasional week on a desk.
The two signals do different jobs
I did not see this until the system ran: WiFi presence and GPS geofencing are not two implementations of one feature. They are good at opposite moments.
WiFi association reports only after you are in range of an access point. It cannot fire before you arrive, because the evidence does not exist until you are almost there. So actions that must be ready when you walk in must come from geofencing. Geofencing knows that you are two blocks out, because the phone said so.
WiFi has the opposite job. It is the ground truth that confirms what geofencing guessed. It keeps working when the phone’s location reporting does not.
Departure has its own lag, and the lag is deliberate. The default detection time is approximately 180 seconds. A device must be gone for that long before it is marked away. That sounds slow. Think about what a shorter window does. Phones drop and re-associate all the time. They wander between access points and doze at the edge of a cell. A tight threshold turns normal radio behavior into a stream of false departures.
Three minutes of hysteresis is the price. Without it, the house thinks you left every time you walk out to the mailbox. Slow and correct beats fast and unstable, most of all for anything that changes the state of a house.
The thing I watch
This approach has a structural weakness. I write it down now, while I am still early enough to be honest about it.
WiFi presence identifies a device by its hardware address. Modern phones do not keep a stable one, on purpose. They generate a private address per network as a privacy feature. That feature exists to prevent the kind of tracking I now do, on purpose, to myself.
The system works while the address stays fixed per network. But that is a promise from the phone’s operating system, not from my network. Point releases revisit promises like that. If a phone starts to rotate its address on this network, my controller will not see a returning device. It will see a new one. The tracker I enabled would continue to exist, point at an address that nothing uses, and report the last thing it knew.
Per the OR rule above, that failure flatters me. The house would continue to believe that I am home.
I do not know whether that will occur, and I will not pretend that I know. It is the first thing I will check if presence starts to behave strangely. It is also a good argument for a rule: audit a presence setup at intervals. Do not configure it once and trust it forever.
The general lesson is cheaper than the specific one. If you build on a signal, know what its silence means. A tracker that stops updating is not the same as a tracker that reports “away.” A system that treats those two states as one will one day be confidently wrong about an empty house.