The Complete Guide to Home Assistant Presence Detection
Presence detection is the foundation of a truly smart home. Almost every meaningful automation — lights that turn off when you leave, heating that warms the house before you arrive, security that arms itself when the last person walks out — depends on one question: is someone home, and where exactly are they?
Get presence right and everything else falls into place. Get it wrong and you end up with lights snapping off while you're sitting on the couch, or a thermostat that thinks you're away when you're asleep upstairs.
This guide covers every practical approach to presence detection in Home Assistant, from the simplest to the most precise, and when to reach for each.
The Two Layers of Presence
Before picking a method, separate the problem into two layers:
- Home vs. away — coarse, whole-house presence. "Is anyone home at all?"
- Room-level presence — fine-grained. "Who is in the living room right now?"
Most setups need both. Home/away handles security and energy. Room-level handles lighting and comfort. Different tools solve each.
Layer 1: Home vs. Away
GPS via the Companion App
The Home Assistant Companion app reports device GPS to a device_tracker entity. This is the easiest starting point — install the app, enable location, and you get a home/not_home zone state for each person.
- Pros: Zero extra hardware, works anywhere, supports custom zones (work, gym, school).
- Cons: Battery drain if polled aggressively, and GPS gets fuzzy near home — phones can drift in and out of the home zone, triggering false "left/arrived" events.
Tip: Widen your home zone radius to ~150m to reduce flapping, and combine GPS with a second signal (below) before trusting an "away" state.
Wi-Fi / Router-Based Tracking
Track whether a phone is connected to your home network. Integrations exist for most routers (UniFi, OPNsense, ASUS, Fritz!Box, and generic via SNMP/Nmap).
- Pros: Very reliable for "home" — if the phone is on Wi-Fi, someone is almost certainly home.
- Cons: Phones drop Wi-Fi when idle to save battery, causing false "away." Modern iOS/Android MAC randomization can also complicate tracking.
Bluetooth (BLE) Tracking
Detect phones, watches, or dedicated BLE beacons via Bluetooth proxies (an ESP32 running ESPHome is the cheapest option).
- Pros: Cheap, short-range so it implies actual presence in the building, great for wearables that stay on you.
- Cons: Requires proxies placed around the home for good coverage.
The Winning Combination
No single signal is reliable alone. The robust pattern is sensor fusion: combine GPS + Wi-Fi + BLE into a single template binary sensor that reports "home" if any trusted signal says so, and only "away" once all agree. This eliminates almost all false departures.
binary_sensor:
- platform: template
sensors:
person_home:
value_template: >
{{ is_state('device_tracker.phone_gps', 'home')
or is_state('device_tracker.phone_wifi', 'home')
or is_state('binary_sensor.phone_ble', 'on') }}
Layer 2: Room-Level Presence
This is where most homes get frustrated. Motion sensors (PIR) are the classic tool, but they have a fatal flaw: they detect motion, not presence. Sit still to read or watch a movie and a PIR sensor decides the room is empty.
PIR Motion Sensors
Still useful as a trigger ("someone entered"), just not as a continuous presence signal. Pair them with a long timeout, or use them only to turn on and a different sensor to decide when to turn off.
mmWave Radar — The Game Changer
Millimeter-wave radar sensors detect tiny movements — breathing, a hand shifting — so they register a still person as present. Affordable ESPHome-compatible mmWave sensors (LD2410, LD2450) have made this mainstream.
- Pros: True presence, not just motion. The LD2450 even reports X/Y coordinates for zone-based targeting.
- Cons: Can be over-sensitive (a fan or curtain triggers it), and needs tuning per room.
Best practice: Combine PIR (fast, instant trigger) with mmWave (slow, reliable "still here"). PIR turns lights on the instant you walk in; mmWave keeps them on while you sit still; lights turn off only when both go clear.
Putting It Together
A mature Home Assistant presence system looks like this:
- Whole-house occupancy from fused GPS + Wi-Fi + BLE, driving security and HVAC.
- Per-room presence from PIR + mmWave fusion, driving lighting and local comfort.
- A "someone home" helper that other automations reference instead of checking individual trackers.
Build it in layers, test each signal in isolation, and only add complexity when a real annoyance demands it. The goal isn't the most sensors — it's the fewest sensors that make the house feel like it just knows.
What's Next
Once presence is solid, everything downstream gets simpler: adaptive lighting, vacancy-based energy savings, and security automations all become a few lines of YAML. Presence is the hard part — and now you have a plan for it.