Home Assistant Presence Detection With Zones: Setup Guide
Presence detection in Home Assistant becomes far more powerful once you pair it with zones. A zone is a named geographic area — your home, your office, a gym, a school — defined by GPS coordinates and a radius. When a tracked person's location moves inside or outside that circle, Home Assistant updates their state (for example, zone.home becomes zone.work), and that state change is what you build automations on. This guide walks through creating zones, connecting reliable device trackers, and wiring up arrive/leave automations that don't fire at the wrong moment.
How zones and presence fit together
Home Assistant tracks three linked concepts. A device tracker reports a raw location or home/away state — this comes from the Companion app, your router, a Bluetooth beacon, or a third-party integration. A person entity groups one or more device trackers for a single human, so several signals combine into one authoritative state. A zone is the geographic boundary that turns coordinates into a meaningful label.
When a person's device tracker reports GPS coordinates that fall inside a zone's radius, the person entity's state changes to that zone's name. Outside every defined zone, the state reads not_home (shown as "Away"). This is why zones matter: without them, you only know someone is home or away. With them, you can react to arriving at work, dropping the kids at school, or reaching the gym.
Step 1: Create your zones
Home Assistant creates a home zone automatically from the latitude, longitude, and radius you set during installation. To add more, go to Settings > Areas, labels & zones and open the Zones tab (the exact menu label has shifted across releases, so look for the zones section within settings).
- Select Add zone and give it a clear name like Work or Gym.
- Drag the map marker to the location, or paste in coordinates directly.
- Set the radius in meters. This is the single most important setting — too small and GPS drift makes you "leave" while sitting still; too large and you register as arrived a block away.
- Optionally mark the zone as passive. Passive zones don't change a person's visible state but can still be referenced in automations — useful for overlapping areas you want to detect quietly.
Step 2: Add a reliable device tracker
Zones are only as good as the location data feeding them. Not all trackers report GPS coordinates — some only report a binary home/away state, which can't place you in a remote zone.
| Tracker source | Reports GPS? | Best for | Trade-off |
|---|---|---|---|
| Companion app (iOS/Android) | Yes | All zones, on-the-go presence | Depends on phone battery and location permissions |
| Router / device_tracker (Wi-Fi) | No | Home vs. away only | Phones may sleep Wi-Fi and appear "away" at night |
| Bluetooth / BLE beacons | No (room-level) | Presence within the house | Requires extra hardware and receivers |
| Third-party (e.g., life360-style) | Yes | Family location without local app | Cloud-dependent; may break with provider changes |
The official Home Assistant Companion app is the most dependable choice for zone-based detection because it reports real GPS coordinates and can send location updates when you cross a zone boundary. Install it on each person's phone, sign in to your Home Assistant instance, and grant the app "Always" location permission — background location is what keeps tracking working when the phone is in your pocket. On both iOS and Android, also disable battery optimization for the app so the OS doesn't suspend it. For a deeper walkthrough of trackers beyond zones, see our companion guide, How to Set Up Presence Detection in Home Assistant.
Step 3: Group trackers into a person
Under Settings > People, create or edit a person and attach every device tracker that represents them — the phone app, and optionally the router entry. Home Assistant then combines these sources: if any tracker places the person in a zone, the person state reflects it. This redundancy is the practical fix for a phone that drops off Wi-Fi overnight; the GPS tracker keeps the state accurate even when the network tracker goes quiet.
- 1Install the Companion app on each phone and grant Always location
- 2Create a zone per location under Settings and set a sensible radius
- 3Attach the phone tracker to a Person entity
- 4Build an automation triggered on that person entering or leaving a zone
Step 4: Build a zone-based automation
Now the payoff. In Settings > Automations & scenes, create a new automation and choose a Zone trigger. Pick the person entity, the target zone, and whether you're triggering on Enter or Leave.
- Arriving home: Person enters
zone.home→ unlock the door, turn on entry lights after sunset. - Leaving home: Person leaves
zone.home→ arm the alarm, set the thermostat back. - Leaving work: Person leaves
zone.work→ send a notification to start preheating the house.
Add a condition to avoid noise — for instance, only run the "everyone left" automation when all household person entities are not_home. To send those alerts to your phone, pair this with our guide on phone notifications from Home Assistant, and if automations are new to you, start with Home Assistant Automations for Beginners.
Step 5: Tune for accuracy
Real-world GPS wanders. If you see false triggers, widen the zone radius slightly, or add a for: duration so the state must persist (say, 60 seconds) before the automation fires — this filters out momentary drift. For room-level presence inside the house, GPS won't help; that calls for mmWave or BLE sensors, often installed through the community add-on ecosystem via HACS. Whenever you make sweeping changes to zones and automations, take a snapshot first — our backup and restore guide covers how.
Frequently asked questions
Why does my person show as "away" when I'm home?
The most common cause is a phone that suspends the Companion app or drops Wi-Fi to save power, so location updates stop. Set the app's location permission to "Always," disable battery optimization for it, and attach both a GPS and a network tracker to the person so one covers for the other.
What's the difference between a zone and an area?
An area is an organizational grouping of devices inside your home (like "Living Room") used to structure your dashboard and control. A zone is a geographic GPS boundary used for presence. They're unrelated despite living near each other in settings.
Can I detect presence without a phone app?
Partially. Router-based and Bluetooth trackers can tell whether someone is home, but they don't report GPS coordinates, so they can't place a person in a remote zone like work or school. For true zone detection you need a GPS source — typically the Companion app or a cloud location integration.
How small can a zone radius be?
You can set very small radii, but consumer phone GPS is usually only accurate to tens of meters, so anything under about 50 meters risks flapping between enter and leave. Keep radii generous and use a for: duration rather than shrinking the circle.