The Aqara FP1E is a mmWave presence sensor that runs entirely over Zigbee. No Aqara hub. No cloud account. Pair it with Zigbee2MQTT and every entity it exposes — occupancy, movement, distance, sensitivity — lands directly in Home Assistant as a local device.
This guide covers pairing, entity overview, sensitivity tuning, and practical automation patterns. If you already run a Zigbee2MQTT stack, the FP1E slots in cleanly.
Prerequisites before you start:
FP1E vs FP2 — Which Presence Sensor for Local Setups?
Before buying, the FP1E and FP2 solve the same problem — reliable presence detection that doesn’t false-negative when you’re sitting still — but they do it differently.
Protocol Difference
The FP1E is a Zigbee device. The FP2 uses Wi-Fi and supports Matter (Thread is not available on current FP2 hardware). For a Zigbee-first home lab, that distinction matters: the FP1E extends your existing Zigbee mesh without adding another IP device to your network or requiring a separate Matter controller.
Feature Comparison
| Feature | FP1E | FP2 |
|---|---|---|
| Protocol | Zigbee 3.0 | Wi-Fi / Matter |
| Zones | Single zone | Up to 30 zones |
| mmWave range | ~4m (typical room use) | ~8m |
| Sensitivity tuning | Low / Medium / High | Per-zone |
| AI adaptive sensitivity | Yes | Yes |
| Mains powered | Yes (USB-C) | Yes (USB-C) |
| Price | ~$30–35 USD | ~$60–80 USD |
| Local via Z2M | Yes | No (Wi-Fi direct / Matter) |
When to Choose the FP1E
Go FP1E if:
Go FP2 if you need fine-grained zone tracking (couch vs. desk vs. doorway), longer range, or Matter-native integration. See our Aqara FP2 setup guide for the full FP2 walkthrough.
What You’ll Need
Zigbee2MQTT 1.36+ — FP1E was added to the official device database in this release. Earlier versions won’t recognize the model string and will expose it as an unsupported device. Check your Z2M version in the add-on info panel or the Z2M UI footer before pairing.
A Zigbee coordinator — Any CC2652-based coordinator works: Texas Instruments LAUNCHXL-CC26X2R1, SONOFF Dongle-E (CC2652P), Tube’s CC2652P2, or the Electrolama zzh. The FP1E is a standard Zigbee 3.0 end device, no special coordinator requirements.
Aqara FP1E + USB-C power — The sensor ships with a short USB-C cable. You’ll need a USB power adapter or a powered USB port near the install location. Being mains-powered is a meaningful advantage: the FP1E stays always-on and reports presence continuously, unlike battery sensors that go into sleep cycles between reports.
Firmware note: The FP1E supports OTA firmware updates via Zigbee2MQTT. Z2M will flag available updates in the device panel. Updating via Z2M is the preferred method — no Aqara app or hub needed.
Pairing the FP1E with Zigbee2MQTT
Enable Join Mode in Z2M
Open the Zigbee2MQTT UI (typically http://:8080 or via the sidebar if using the add-on). Click the Permit join toggle to open the network for new devices. You have about 255 seconds by default.
Alternatively, enable join for a specific device group or coordinator only — useful in dense networks to reduce pairing conflicts.
FP1E Pairing Procedure
If the LED blinks blue then solid orange, the device has paired but is still initializing. Give it 30–60 seconds to finish the interview process before checking entities.
Confirming the Device in Z2M
In the Z2M device list, look for:
Click into the device page and confirm the Exposes tab shows the entity list (presence, movement, sensitivity, etc.). If the Exposes tab is empty or shows generic clusters only, your Z2M version is likely below 1.36.
Troubleshooting: Device Not Found or Falls Off Network
Not appearing in Z2M: Confirm join mode is active. Move the FP1E closer to the coordinator or a router device during initial pairing — it doesn’t need to be in its final location. Retry the reset procedure.
Interviews failing: If the device appears in the join log but disappears before the interview completes, the Zigbee signal may be marginal. Pair in a location with strong signal, let the interview finish, then move the device.
Falls off network after pairing: The FP1E is an end device, not a router — it doesn’t extend the mesh. If its final install location has poor signal, add a Zigbee router device (a mains-powered plug or bulb) between the FP1E and the coordinator.
Entities and Exposed Sensors in Home Assistant
Once paired, the FP1E exposes the following entities in Home Assistant via the Z2M MQTT integration:
| Entity | Type | What it tells you |
|---|---|---|
presence |
Binary sensor | Someone is in the detection zone (true/false) |
movement |
Sensor (enum) | Motion state: movement, no_movement, no_presence |
target_distance |
Sensor | Estimated distance to detected target (meters) |
motion_sensitivity |
Select | Current sensitivity setting: low / medium / high |
detection_range |
Number | Maximum detection range (0–6 meters) |
device_temperature |
Sensor | Internal sensor temperature — useful for health monitoring |
power_outage_count |
Sensor | Number of power interruptions since last pairing |
spatial_learning |
Action | Triggers “Start Learning” environment calibration |
ai_sensitivity_adaptive |
Switch | Enables/disables AI-driven sensitivity adjustment |
ai_interference_source_selfidentification |
Switch | Enables AI detection of interference sources (fans, AC units) |
restart_device |
Action | Remotely restarts the sensor |
identify |
Action | Flashes LED for physical identification |
presence vs movement: This is the key distinction that makes the FP1E (and FP2) useful compared to a standard PIR. movement reports a state string — movement when gross motion is detected, no_movement when someone is stationary but present, no_presence when the zone is empty. presence stays true whether you’re walking or sitting still at your desk. Use presence as the primary sensor for room-occupancy logic. Use movement as a secondary signal if you need to distinguish active vs. passive occupancy — trigger a “someone just walked in” scene vs. a “room is occupied but quiet” state.
target_distance: Reports the estimated distance (in meters) from the sensor to the detected target. Useful for debugging placement and confirming the sensor’s detection cone covers the intended area.
ai_interference_source_selfidentification: When enabled, the sensor’s on-device AI identifies background interference sources — ceiling fans, air conditioners, HVAC vents — and factors them out of presence detection. Enable this if you’re getting spurious presence triggers in rooms with active airflow.
spatial_learning and ai_sensitivity_adaptive: Both relate to the FP1E’s on-device AI processing. See the next section for when and how to use them.
Configuring Sensitivity and Detection Range
Adjusting Motion Sensitivity
In the Z2M UI, open the FP1E device page and go to Settings (or the Exposes controls). The motion_sensitivity selector gives three options: Low, Medium, High.
Start at Medium. If you’re getting false triggers (presence reported when the room is empty), drop to Low. If stationary occupancy drops out prematurely, go High.
Setting Detection Range
detection_range sets the maximum distance (in meters, up to 6m) the sensor will consider for detection. Setting this lower than the room depth reduces false triggers from adjacent rooms or hallways visible through open doors.
For a typical bedroom (3–4m deep), setting detection range to 4m or less keeps the sensor focused on the room.
Spatial Learning Calibration
The spatial_learning action triggers a one-shot “Start Learning” calibration where the sensor maps the static environment — walls, furniture, fixtures — to distinguish them from moving targets. Trigger this:
Send the “Start Learning” action via the Z2M UI and let the sensor run in normal room conditions for 10–15 minutes before making further adjustments. The sensor stores the resulting environmental map and uses it going forward. There’s no “stop learning” action — the calibration completes automatically.
MQTT-Based Configuration (Power Users)
If you prefer configuring via MQTT directly (useful for scripted setup or Home Assistant automations that set sensitivity on a schedule):
# Set motion sensitivity to high via MQTT
topic: zigbee2mqtt/<friendly_name>/set
payload:
motion_sensitivity: "high"
# Set detection range to 4 meters
topic: zigbee2mqtt/<friendly_name>/set
payload:
detection_range: 4
# Trigger spatial learning calibration
topic: zigbee2mqtt/<friendly_name>/set
payload:
spatial_learning: "Start Learning"
Replace with the Z2M device name (visible in the Z2M UI). You can send these payloads from Home Assistant using the mqtt.publish service, from MQTT Explorer, or from any MQTT client.
Home Assistant Automations with the FP1E
Basic Presence-Triggered Light
The simplest use: lights on when someone enters, off when the room is empty.
alias: Office light — presence
description: ""
trigger:
- platform: state
entity_id: binary_sensor.fp1e_office_presence
to: "on"
action:
- service: light.turn_on
target:
entity_id: light.office_ceiling
mode: single
For lights off, use a separate automation triggered on presence → off. Or use the timeout pattern below for a grace period.
Occupancy Timeout — Lights Off After N Minutes
Presence sensors occasionally have a reporting delay when a room empties. Rather than cutting lights the instant presence goes off, add a timeout:
alias: Office light — presence off with timeout
description: "Turn off lights 5 minutes after presence clears"
trigger:
- platform: state
entity_id: binary_sensor.fp1e_office_presence
to: "off"
for:
minutes: 5
action:
- service: light.turn_off
target:
entity_id: light.office_ceiling
mode: single
The for: parameter means the automation only fires if presence stays off continuously for 5 minutes. A brief sensor dropout doesn’t cut the lights. Adjust the timeout based on the FP1E’s natural reporting cadence in your environment — 2–5 minutes is a reasonable range.
Room-Presence Helper Using input_boolean
For more complex multi-automation setups, a dedicated input_boolean helper that tracks room occupancy independently of the raw sensor is cleaner to work with:
# In configuration.yaml or via UI: create input_boolean.office_occupied
# Automation: mark occupied
alias: Office — mark occupied
trigger:
- platform: state
entity_id: binary_sensor.fp1e_office_presence
to: "on"
action:
- service: input_boolean.turn_on
target:
entity_id: input_boolean.office_occupied
mode: single
# Automation: mark vacant (with timeout)
alias: Office — mark vacant
trigger:
- platform: state
entity_id: binary_sensor.fp1e_office_presence
to: "off"
for:
minutes: 5
action:
- service: input_boolean.turn_off
target:
entity_id: input_boolean.office_occupied
mode: single
Other automations — HVAC, desk lamp, do-not-disturb mode — then reference input_boolean.office_occupied rather than the raw sensor directly. This gives you one place to adjust the timeout logic without touching every automation.
Multi-Room Presence
If you’re building a whole-home presence map with multiple FP1E sensors, the approach above scales cleanly: one input_boolean per room, all driven by their respective sensors. A global “home occupied” boolean can then aggregate them. [Cross-link to multi-room presence guide pending publication.]
Privacy and Local-Only Operation
Once paired via Zigbee2MQTT, the FP1E generates zero outbound traffic. It speaks Zigbee to your coordinator. Z2M publishes its state to your local MQTT broker. Home Assistant reads from that broker. The chain is entirely within your LAN.
No Aqara account is created or required. No cloud API calls. The sensor doesn’t know the internet exists.
Compare this to hub-based setups, where the Aqara hub phones home to Aqara’s cloud servers for device state sync — even when you’re using local automations. The Z2M path eliminates that entirely.
OTA firmware updates also happen locally: Z2M fetches the update file and pushes it over Zigbee directly. No Aqara app involved.
For those running a strict firewall policy (blocking all IoT device outbound traffic at the router level), the FP1E via Z2M fits cleanly — there’s nothing to block because there’s nothing reaching out.
Summary
The Aqara FP1E is the practical choice for Zigbee-first home labs that need reliable presence detection without the cost or Wi-Fi footprint of the FP2. It pairs cleanly with Zigbee2MQTT, exposes a useful set of entities for both basic automation and fine-tuned occupancy logic, and runs 100% locally once set up.
For a single-zone room presence sensor on a Zigbee network, it just works.
See also:

Leave A Comment