Home Assistant presence sensing
Best mmWave presence sensor for Home Assistant
Keep the lights on while you sit still. Compare SONOFF, Aqara and THIRDREALITY presence sensors by Home Assistant route, power and zones, then build three recipes.
OUR PICKS / YOUR SETUP
Find your fit.
Choose SONOFF SNZB-06P24 for Zigbee2MQTT room sensing, Aqara FP2 for mapped zones, or FP300 for battery power with Zigbee/Thread flexibility. THIRDREALITY R2 uses standard AAs; the older SONOFF SNZB-06P is the basic USB-powered microwave option.
- Zigbee / Z2MSONOFF SNZB-06P24
- Mapped zonesAqara FP2
- Battery flexibilityAqara FP300
We earn a commission if you buy through our links — it doesn’t change our picks. How we make money → As an Amazon Associate I earn from qualifying purchases.
YOUR NEXT PROJECT / THE GEAR
Parts list
- SONOFF SNZB-06P24 presence sensorCheck price on Amazon
Tune distance bands and room learning on a USB-powered Zigbee presence sensor.
- Aqara Presence Sensor FP2Check price on Amazon
Build separate desk and seating-area automations with mapped zones through HomeKit Device.
- SONOFF SNZB-06P presence sensorCheck price on Amazon
Choose straightforward room occupancy when you do not need mapped zones.
- Aqara Presence Multi-Sensor FP300Check price on Amazon
Place presence sensing without a USB cable and choose Zigbee or Matter over Thread.
- THIRDREALITY Presence Sensor R2Check price on Amazon
Use standard AA batteries for a simple Zigbee occupancy sensor where power is awkward.
The lights shouldn’t go out just because you’re reading. A PIR motion sensor is great at noticing you arrive; radar presence sensing is the upgrade for the quiet bit afterwards. Choose SONOFF SNZB-06P24 for a Zigbee2MQTT setup, Aqara FP2 for mapped room zones, or Aqara FP300 when a USB cable would spoil the placement. The older SONOFF SNZB-06P is the basic room-sensing option; THIRDREALITY R2 keeps battery replacement simple with AAs.
Research guide: specifications come from the makers; Home Assistant routes and setup come from the linked project documentation.
Want those sensors to wake a screen as well as keep the lights on? Build a Home Assistant wall dashboard with a tablet, a removable mount and presence-based screen control.
Quick picks: one room, several zones, or no cable?
Best Zigbee presence with Zigbee2MQTT: SONOFF SNZB-06P24. You get USB-powered 24 GHz radar, illuminance, sensitivity adjustment and distance-band masking. Choose it for a room-level occupancy signal with useful tuning controls.
Best multi-zone room: Aqara FP2. Define separate areas for the desk and seating corner in Aqara Home, then use their occupancy entities in Home Assistant through HomeKit Device. Its mapped zones are the reason to choose it over a simpler room sensor.
Best basic room sensor: SONOFF SNZB-06P. Pick this for straightforward Zigbee occupancy and USB power. It uses 5.8 GHz microwave sensing, rather than the 24 GHz mmWave hardware in the newer 06P24. They are different models, despite the similar names.
Best battery flexibility: Aqara FP300. It combines PIR and 60 GHz radar, uses two CR2450 batteries and lets you choose Zigbee or Matter over Thread. Temperature, humidity and light sensing add useful possibilities beyond lighting.
Prefer standard AA batteries? THIRDREALITY R2 uses three AAs and Zigbee. It’s the alternative for simple occupancy without finding a nearby power socket or choosing Thread infrastructure.
Compare the radio, power and zones
| Sensor | Radio and Home Assistant route | Power | What “zones” means |
|---|---|---|---|
| SONOFF SNZB-06P24 | Zigbee → Zigbee2MQTT; maker’s guide supplies an extra ZHA script | USB-C | Seven enabled/disabled distance bands feeding one occupancy reading |
| Aqara FP2 | 2.4 GHz Wi-Fi → HomeKit Device | Continuous USB-C power | Up to 30 mapped zones, according to Aqara; separate area occupancy |
| SONOFF SNZB-06P | Zigbee → Zigbee2MQTT | USB-C | One room-level occupancy reading |
| Aqara FP300 | Zigbee → Zigbee2MQTT, or Matter over Thread | Two CR2450 batteries | Occupancy with range tuning; choose FP2 for mapped room areas |
| THIRDREALITY R2 | Zigbee → ZHA or Zigbee2MQTT | Three AA batteries | One occupancy reading with sensitivity and calibration controls |
The 06P24’s seven bands are range filters, not seven independently reported room areas. Its Zigbee2MQTT reference exposes one occupancy property alongside switches that enable or disable distance bands. For “desk light on, seating light off” from one mapped sensor, buy the FP2.
Aqara’s FP2 specifications describe its zone positioning and multiple sensors exposed to Home Assistant. The FP300 specifications describe its hybrid sensing, batteries and protocol choices. Choose between them by the job, rather than treating FP300 as an FP2 with the cable removed.
PIR versus presence: keep the useful parts of both
PIR detects changes in infrared energy as you move through its view. That makes the motion sensor in your Home Assistant starter kit useful for an arrival event. The awkward moment is sitting down and hardly moving while a motion-based light timer runs out.
Radar can detect smaller movements, including the subtle motion involved in sitting at a desk. You still need a clear view and sensible tuning. Start by upgrading the spot where motion lighting annoys you most, rather than replacing every PIR sensor at once.
The older SONOFF manual explicitly identifies its 5.8 GHz microwave technology. The 06P24 manual identifies the newer 24 GHz model. The names are close; the radios and tuning options deserve their own comparison.
Connect it through the right Home Assistant integration
Zigbee: use the exact-model support page
For the SONOFF models, start with the documented 06P or 06P24 Zigbee2MQTT route. Home Assistant receives those entities through MQTT. SONOFF’s 06P24 help page currently specifies an extra script for ZHA.
For the R2, THIRDREALITY lists both ZHA and Zigbee2MQTT support. Its exact 3RPS01083Z page documents occupancy, battery, calibration and sensitivity controls. If you use ZHA, pair it into that existing network.
FP300 in Zigbee mode has its own PS-S04D setup page. Follow its Aqara Home protocol-switch steps before pairing with Zigbee2MQTT. The page also explains the reset procedure when a device previously used Thread. Give each coordinator to one Zigbee integration; our coordinator guide covers the radio choice.
FP300 over Thread: Matter needs a border router
For direct Matter operation, you need Home Assistant’s Matter integration, a working Thread border router, and the Companion app for commissioning. A Zigbee-only network doesn’t supply that Thread connection.
The Aqara connection guide covers direct commissioning and sharing an existing Matter device. Direct setup gives you the basic route; configuration options depend on the protocol and platform. Choose Zigbee2MQTT when its documented tuning controls are your priority. Use one protocol at a time on the sensor.
FP2: HomeKit Device, over Wi-Fi
Configure the FP2’s room map and zones in Aqara Home, then connect it through HomeKit Device in Home Assistant. Aqara’s older documentation calls this HomeKit Controller; the current integration name is HomeKit Device.
Follow the Home Assistant Wi-Fi pairing steps:
- Power the FP2 and join it to Wi-Fi using the maker’s setup flow.
- If it is already paired to Apple Home, remove that pairing without factory-resetting it. It keeps its Wi-Fi connection and becomes available to Home Assistant.
- Open Settings → Devices & services. On the discovered HomeKit Device card, select Configure and enter the device’s pairing code.
- Name the imported occupancy entities so you can recognise each area.
Keep Aqara Home for map configuration. HomeKit Device brings accessories into Home Assistant; HomeKit Bridge sends Home Assistant entities out to Apple Home. FP2 uses this Wi-Fi/HomeKit path, rather than the Zigbee or Matter-over-Thread paths above.
Aim at the seat, then tame the background movement
Put the sensor where it can see you in the position you actually occupy. Pair first, watch the occupancy entity, sit down and read or type, then walk out and check it clears. Move the sensor before committing to adhesive placement.
SONOFF’s placement instructions identify operating fans, moving curtains or plants, drainage pipes and reflective metal as interference sources. THIRDREALITY also notes that strong repetitive movement can trigger its R2.
- Aim away from moving fan blades and fluttering curtains where possible.
- Reduce the detection range or mask an unwanted distance band before turning sensitivity down everywhere.
- Run the model’s learning or calibration procedure with the space prepared as its instructions specify.
- Test with the fan and curtains behaving normally, then repeat your seated test.
Use FP2’s mapped boundaries when you need separate activities in one room. Use the 06P24’s distance masks to limit what contributes to its single occupancy signal. That distinction makes tuning much less mysterious.
Three recipes to make presence useful
Create automations under Settings → Automations & scenes → Create automation → Create new automation. The State changed trigger uses When → Add trigger, an entity and a target state; For at least adds a waiting period. Raw occupancy states are on for occupied and off for clear.
The timings and humidity thresholds below are starting examples for you to tune. Use existing Home Assistant-controlled lights, fan and plugs. Save before testing. A Home Assistant restart or automation reload discards pending waits; the sensor needs another matching state change to start a fresh wait.
1. Keep the desk light on while you’re there
Replace the old PIR light timer with this automation. Use your desk’s occupancy entity—an FP2 desk zone, or a correctly aimed FP300, R2 or SONOFF sensor.
- Add State changed → occupied, with trigger ID
occupied. - Add State changed → clear → For at least 2 minutes, with trigger ID
clear. - Under Then do, use Choose with a Triggered by condition:
occupiedturns the light on;clearturns it off.
Set the automation’s mode to Restart. A return to occupied cancels the clear trigger’s waiting period. The sensor’s own vacancy delay comes before that extra Home Assistant hold, so tune both while watching the entity history.
2. Let the bathroom fan finish the job
Use presence to start the fan, then let humidity keep it running after you leave. Use the FP300’s humidity entity if your chosen route exposes it, or the humidity sensor from your starter kit.
Create a Template binary sensor helper named Bathroom ready to stop: Settings → Devices & services → Helpers → Create helper → Template → Binary sensor. Replace these placeholder entities in its state template:
{% set humidity = states('sensor.example_humidity') | float(none) %}
{{ is_state('binary_sensor.example_presence', 'off')
and humidity is not none and humidity < 60 }}
In one automation, add three triggers: presence becomes occupied, humidity rises above 65%, and Bathroom ready to stop becomes on for 10 minutes. Give them IDs occupied, damp and ready.
Use Choose / Triggered by: either occupied or damp turns the fan on; ready turns it off. The 60% and 65% values are example thresholds, not a ventilation standard. The ready helper waits for both clear presence and lower humidity, whichever happens first. Missing readings block readiness instead of turning into a false “dry and empty.” See the numeric-state trigger guide for the humidity crossing.
3. Build a careful “nobody home” energy saver
Combine resident location and clear room readings before switching off discretionary plugs. A clear desk sensor alone says little about someone elsewhere.
Create another Template binary helper, All monitored areas clear, listing every occupancy entity you want included:
{{ is_state('binary_sensor.example_desk_presence', 'off')
and is_state('binary_sensor.example_hall_presence', 'off') }}
Add two triggers to the same automation: Home zone changes to 0 for 10 minutes, and All monitored areas clear becomes on for 10 minutes. Either trigger may start it. Under And if, require both those states to have held for 10 minutes. Add a Template condition requiring every tracked resident to have a known away state; extend this two-person example for your household:
{{ states('person.example_one') not in ['home', 'unknown', 'unavailable']
and states('person.example_two') not in ['home', 'unknown', 'unavailable'] }}
Then turn off only your selected lamps or other discretionary loads. This covers either order: the room clears before the last person leaves, or everyone leaves before the sensors clear. Unknown occupancy keeps the clear helper off, and unknown location blocks the final action.
Include all residents and disable automatic away shutoff while untracked guests are staying. Keep the Home Assistant host, radios, network equipment, fridge and other essential loads out of the target list. The local-control smart-plug guide helps you pick the plug and its Home Assistant route. The condition reference explains the final checks.
Make one space work beautifully
Test each recipe through its real triggers, including returning during the light’s clear timer and letting humidity fall after the bathroom empties. Try both orders in the away recipe, then simulate an unavailable sensor and check that shutoff stays blocked. Home Assistant’s automation traces show which condition passed and which action ran.
Choose 06P24 for a tuned Zigbee2MQTT room signal, FP2 for mapped zones, FP300 for battery-and-radio flexibility, or R2 for standard AAs. Choose the older 06P for a basic USB-powered occupancy job. Start with the chair where the lights keep abandoning you, then return to the Home Assistant hub for your next project.
Need a separate humidity sensor for the fan, or want to compare temperatures between rooms? Use our room-by-room sensor guide for Zigbee, Thread and Z-Wave choices plus room graphs.
Sources & methodology
Where these facts come from.
- Aqara FP300 sensing, battery and radio specifications · checked October 23, 2026
- Aqara FP300 Zigbee and Matter commissioning guide · checked October 23, 2026
- Aqara FP2 zones and Home Assistant support · checked October 23, 2026
- SONOFF SNZB-06P microwave sensor manual · checked October 23, 2026
- SONOFF SNZB-06P24 radar sensor manual · checked October 23, 2026
- SONOFF 06P24 integration, ZHA script and placement guide · checked October 23, 2026
- THIRDREALITY R2 power and compatibility specifications · checked October 23, 2026
- FP300 Zigbee2MQTT protocol switch and controls · checked October 23, 2026
- Older SONOFF 06P Zigbee2MQTT support · checked October 23, 2026
- SONOFF 06P24 occupancy and range-mask controls · checked October 23, 2026
- THIRDREALITY R2 occupancy and calibration controls · checked October 23, 2026
- Home Assistant ZHA pairing and coordinator setup · checked October 23, 2026
- Home Assistant MQTT integration · checked October 23, 2026
- Home Assistant Matter and Thread requirements · checked October 23, 2026
- Home Assistant HomeKit Device Wi-Fi pairing · checked October 23, 2026
- Home Assistant State changed trigger and waiting periods · checked October 23, 2026
- Home Assistant numeric-state threshold crossings · checked October 23, 2026
- Home Assistant Template helpers · checked October 23, 2026
- Home Assistant automation conditions · checked October 23, 2026
- Home Assistant automation tests and traces · checked October 23, 2026
Source dates are listed above.
As an Amazon Associate I earn from qualifying purchases.
YOUR NEXT PROJECT / THE GEAR
Parts list
- SONOFF SNZB-06P24 presence sensorCheck price on Amazon
Tune distance bands and room learning on a USB-powered Zigbee presence sensor.
- Aqara Presence Sensor FP2Check price on Amazon
Build separate desk and seating-area automations with mapped zones through HomeKit Device.
- SONOFF SNZB-06P presence sensorCheck price on Amazon
Choose straightforward room occupancy when you do not need mapped zones.
- Aqara Presence Multi-Sensor FP300Check price on Amazon
Place presence sensing without a USB cable and choose Zigbee or Matter over Thread.
- THIRDREALITY Presence Sensor R2Check price on Amazon
Use standard AA batteries for a simple Zigbee occupancy sensor where power is awkward.
Prepared by Racks & Watts.