The transitions (arriving, leaving, someone else being in the place) are where a home automation system earns most of its keep. They are also where it most often gets things embarrassingly wrong, because location is noisy and intent is invisible. Nothing announces “smart home” quite like being shrieked at by your own alarm for the crime of arriving at it.
Knowing who is home sounds like the easy part. It is the part where a phone in a coat pocket, a router's lease table and a radar in the hall all offer slightly different answers, and the house has to pick one before somebody walks into a dark corridor.
Pre-cool before you get there, using drive time
Geofences are a poor trigger for anything that takes time to work. By the time you cross a boundary, you are already at the door. A live drive-time estimate is much better: when the estimate drops below half an hour and the room is genuinely warm, start cooling.
The general shape is worth stealing for anything with lead time, heating, hot water, warming a car: estimated time of arrival, plus evidence of actual approach, plus the thing being worth doing at all.
Do not let the alarm greet you at the door
Automatic disarming on arrival either delights you or terrifies you, depending entirely on how it is gated, and you will find out which on a day you are not at home.
- Trigger on entering a small zone, a hundred metres or so, rather than on a distant approach. A one-kilometre trigger leaves an unprotected gap you did not choose.
- Only act if the system is actually armed in an away mode. Never touch it in other states.
- Modern phone location is accurate enough for this; the failure mode to design against is not accuracy, it is a stale location update.
Leaving: make it unconditional
Departure automations tend to accumulate conditions until they quietly stop firing. The things that should happen when the last person leaves (air conditioning off, standby power cut to appliances that do not need it) are better written as unconditional actions, because a command that is already satisfied is harmless while a missed one costs money for days.
One-way doors
A common bug worth naming: an automation that cuts power and disables an integration when you leave, with the restore path attached only to one of the ways of coming back. Flip the holiday switch on and off without ever arming the alarm, and the appliance stays disconnected indefinitely with nothing reporting it.
Every “leaving” action needs a return path from every state that can mean you are back, and the restore should be unconditional, not gated on the world still being exactly as it was when you left.
Inferring that somebody else is home
A nice piece of reasoning that needs no extra hardware. If motion appears in the home long after your phone left the area, it is not you. That single inference unlocks a lot: alerts can be phrased differently, heating can behave differently, and the place stops treating “empty” and “occupied by someone else” as the same state.
Fewer observations, better presence
The home-presence estimate here is Bayesian, and its changelog is mostly a list of inputs removed. Lights went first, then the power plugs, then per-room motion. Every extra signal looks like free evidence and is in fact another opportunity to be confidently wrong at 3 a.m.: a lamp on a schedule is not a person, and a television drawing standby power is not company. Three observations survived the cull, and the estimate has been calmer ever since.
The skill is not collecting evidence. It is declining most of it.
Simulated occupancy that is not obviously fake
Randomised lighting while away is an old idea, and the details separate “someone is in” from “this house is running a cron job”: weight the rooms by how much they are really used, follow sunset rather than the clock, and vary both timing and duration. A living room that lights up at exactly 20:00 every evening advertises an empty home more effectively than darkness does.
The worst outcome is not a wrong guess. It is a confident wrong guess, acted upon. So the house is allowed to be unsure, and told what to do when it is.