Private Home Lab

Self-hosted · No cloud 

Aqara FP1E Presence Sensor in Home Assistant (No Hub)

Set up the Aqara FP1E (RTCZCGQ13LM) with Zigbee2MQTT and Home Assistant without an Aqara hub — pairing, entities, AI spatial learning, and automations.

Aqara FP1E Presence Sensor in Home Assistant (No Hub)

The FP1E caught my attention precisely because of what it doesn’t do. It doesn’t need an Aqara hub. It doesn’t need Wi-Fi. It doesn’t need the Aqara Home app. Once it’s paired to a Zigbee coordinator running Zigbee2MQTT, the data flows entirely locally: presence state, movement state, and target distance land in Home Assistant via MQTT without touching a single Aqara server.

That’s the pitch. The reality is that full Zigbee2MQTT quirks support for the FP1E arrived later than the hardware, so a lot of forum posts from mid-2024 read as though support is incomplete. It isn’t — the device page is current, the entities work, and Aqara’s own stance that Z2M is “unsupported” is a liability disclaimer, not a technical limitation.

This guide covers the full setup: pairing, entity walkthrough, detection tuning, AI spatial learning, and a couple of automation examples that actually use what makes mmWave distinct from a basic PIR sensor.

What the FP1E is (and is not)

The FP1E is a millimetre-wave radar presence sensor. Model identifier: RTCZCGQ13LM. Internal Zigbee model string: lumi.sensor_occupy.agl1.

The hardware difference from PIR sensors matters for how you use it. PIR sensors detect movement — the infrared change caused by a warm body moving through the field of view. They miss still presence: someone sitting reading, someone asleep, someone working at a desk. The FP1E’s mmWave radar detects micro-movements like breathing, which means it can hold presence: true even when no one is moving. This changes what you can do with your automations.

The FP1E is USB-powered (5 V, 1 A, 2 m USB-A cable included). No battery. Because it’s always on, it acts as a Zigbee router, extending your mesh rather than being a leaf node.

The sensor reports a single detection state covering up to 6 m at 120 degrees. There is no per-zone or per-region configuration. If you want zone detection — say, separate states for “someone is at the desk” versus “someone is on the couch” — the FP1E is the wrong device. The FP2 does that, and it also handles multi-person tracking, which the FP1E does not. See my FP2 local setup guide for how that integration works.

The tradeoff is price and integration simplicity. The FP1E costs roughly half of the FP2 and drops straight into a Zigbee mesh without adding another Wi-Fi device to your network. For single-zone presence detection, that’s a good deal.

Prerequisites

Before pairing:

  • Zigbee2MQTT running with a compatible USB Zigbee coordinator (CC2652P, Sonoff Zigbee 3.0 dongle, or similar)
  • Home Assistant with the Zigbee2MQTT add-on or standalone Z2M integration configured
  • USB power source for the FP1E — wall adapter or a powered USB hub near the installation point
  • Physical access to the sensor during initial pairing — you’ll need to press the reset button

If you’re still running Zigbee devices through the Aqara hub, that’s a separate path. The hub can act as a Matter bridge or a HomeKit Controller bridge to get sensors into Home Assistant, but the FP1E won’t appear as a Zigbee device in Z2M in that configuration. This guide covers direct-to-coordinator pairing only. If you want the hub-based approach for other devices, see my Aqara Hub M2 local setup guide.

Pairing the FP1E to Zigbee2MQTT

1. Open permit join in Zigbee2MQTT

In the Z2M frontend, click Permit join (All) or enable joining for your specific device group. You have 254 seconds.

2. Put the FP1E into pairing mode

Hold the reset button for approximately 5 seconds. The LED will blink blue three times, then enter a rapid blink pattern indicating pairing mode. If you’ve powered the device for the first time and it didn’t pair automatically, a single short press is enough to re-enter pairing mode on subsequent attempts.

3. Confirm the device appears

Watch the Z2M frontend. The device should appear within 20–30 seconds with the friendly name you set. The model string should confirm as lumi.sensor_occupy.agl1. If it appears as “unknown device” briefly, wait — Z2M is fetching the device descriptor. If it stays unknown after a minute, close permit join, reboot Z2M, and retry.

The FP1E does not require an Aqara hub, an Aqara account, or any cloud activation to pair. Aqara’s documentation and the vendor product page frame the Z2M path as “not officially supported.” That means Aqara’s support team won’t help you with Z2M configuration questions — it doesn’t mean the device won’t work.

What entities appear in Home Assistant

Once paired, Z2M exposes a handful of core entities (the device page also lists the configurable parameters covered further down). Understanding what each state entity actually reports is worth a few minutes, because the movement vs presence distinction is the entire point of the device.

presence (binary sensor, on/off): The sensor detects someone in range. This is the master state. It stays on while anyone is in the detection zone, including someone sitting still.

movement (binary sensor, on/off): Active motion is currently happening. A walking person triggers both presence: on and movement: on. A person sitting still at a desk holds presence: on while movement: off.

This combination is something no PIR sensor can give you. With just presence, you know the room is occupied. With presence + not movement, you know someone is there and stationary — reading, sleeping, working.

target_distance (numeric, metres): The radar’s estimated distance to the detected target. Useful for placement verification — if your sensor is in the corner of a 4 m room and target_distance consistently reads 3.8 m when someone is at the far end, the sensor is detecting well. Not reliable enough for automation logic on its own.

device_temperature (numeric, degrees C): Chip temperature, not room temperature. Useful for monitoring if the sensor is in a warm enclosure. Don’t use it for thermostat logic.

power_outage_count (numeric): Increments each time the USB power is interrupted. Useful for monitoring power quality at the USB port or spotting when the sensor loses power.

Configuring detection range and sensitivity

The FP1E exposes several configurable parameters in the Z2M device panel under Settings (specific). These write directly to the sensor over Zigbee.

motion_sensitivity (low / medium / high): How sensitive the radar is to micro-movements. The default is medium. High sensitivity picks up more distant or subtle movements but increases false triggers in environments with fans, airflow from vents, or curtains moving. Low is useful in busy rooms where you want fewer incidental triggers. Start at medium and adjust based on false positive rate.

detection_range (0–6 m): The maximum detection radius. Default is 6 m, the device’s physical maximum. In a small bedroom, setting this to 3–4 m can reduce false positives from movement in adjacent spaces if walls are thin. The sensor always reports within the hardware’s actual 120-degree cone regardless of this value.

adaptive_sensitivity (boolean): When enabled, the sensor auto-adjusts its sensitivity over time based on what it learns about the environment. This interacts with the spatial learning pass described below. I’d recommend leaving this on after running a spatial learning pass.

AI interference source identification (switch): Enables the sensor’s built-in logic to identify stationary interference sources (spinning fan blades, oscillating air conditioners, vibrating surfaces) and exclude them from presence decisions. Turn this on if you’re getting persistent false presence readings in a room with a ceiling fan.

AI spatial learning: what it does and how to trigger it

The spatial learning feature lets the FP1E build an environmental baseline. It learns which reflections, movements, and signals in your room are background noise — fans, AC units, window reflections, curtains — so it can exclude them when deciding whether a human is present.

Without a learning pass, the sensor uses generic defaults. In a room with a ceiling fan running or an oscillating air conditioner, those defaults often produce false presence: the sensor sees movement and reports someone home when the room is empty.

To trigger a learning pass from Z2M, publish the following to the device’s /set topic:

{"spatial_learning": true}

In the Z2M frontend, this is available as a toggle in the device’s specific settings panel. The sensor completes the pass autonomously — it runs for several minutes, mapping the environment, then returns to normal operation. You don’t need to do anything during the pass except keep the room empty of people.

Re-run the learning pass whenever you rearrange furniture significantly, install a new ceiling fan, or add an oscillating heater. The existing baseline becomes stale when the room’s reflective profile changes.

Practical HA automations

Basic presence lighting

This covers the primary use case: lights on when present, off when the room is clear. The FP1E holds presence for approximately 30 seconds after the last detected signal before reporting clear. That’s the hardware hold-off period — you can’t shorten it via Z2M configuration. Plan your automation logic around it.

alias: "Office lights — FP1E presence"
description: "On when present, off 30s after clear"
trigger:
  - platform: state
    entity_id: binary_sensor.fp1e_presence
    to: "on"
  - platform: state
    entity_id: binary_sensor.fp1e_presence
    to: "off"
    for:
      seconds: 35
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.fp1e_presence
            state: "on"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office
      - conditions:
          - condition: state
            entity_id: binary_sensor.fp1e_presence
            state: "off"
        sequence:
          - service: light.turn_off
            target:
              entity_id: light.office

The 35-second trigger delay (5 seconds past the sensor’s 30-second hold-off) prevents the light from cycling off and immediately back on if presence detection briefly drops.

Still-presence dim, not off

This is where the FP1E does something no PIR sensor can. When presence is on but movement is off, someone is in the room and not moving. If you turn the lights off after a stillness timeout, you get the classic problem: someone sitting at their desk in the dark.

Instead, dim when still, and only cut power when presence fully clears.

alias: "Office lights — still presence dim"
description: "Dim when still, full bright on movement, off when clear"
trigger:
  - platform: state
    entity_id: binary_sensor.fp1e_movement
    to: "off"
    for:
      minutes: 5
  - platform: state
    entity_id: binary_sensor.fp1e_movement
    to: "on"
  - platform: state
    entity_id: binary_sensor.fp1e_presence
    to: "off"
    for:
      seconds: 35
action:
  - choose:
      - conditions:
          - condition: state
            entity_id: binary_sensor.fp1e_movement
            state: "off"
          - condition: state
            entity_id: binary_sensor.fp1e_presence
            state: "on"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office
            data:
              brightness_pct: 30
      - conditions:
          - condition: state
            entity_id: binary_sensor.fp1e_movement
            state: "on"
        sequence:
          - service: light.turn_on
            target:
              entity_id: light.office
            data:
              brightness_pct: 100
      - conditions:
          - condition: state
            entity_id: binary_sensor.fp1e_presence
            state: "off"
        sequence:
          - service: light.turn_off
            target:
              entity_id: light.office

Adjust the 5-minute still timeout to match your setup. Working at a desk without moving for 2 minutes is common; a 1-minute threshold will fire constantly.

FP1E vs FP2: which one for your setup

The FP2 gets more coverage, but it’s not always the right choice. Here’s how they compare on the factors that matter for Z2M/HA integration:

Feature FP1E FP2
Protocol Zigbee only Wi-Fi only (no Zigbee)
HA integration path Zigbee2MQTT → MQTT HomeKit Controller
Zone detection None Up to 30 named zones
Multi-person tracking No Yes
Still presence Yes Yes
Detection range ~6 m ~8 m
Fall detection No Yes
Light sensor No Yes
Mesh routing Yes (router) No (Wi-Fi device)
Adds Wi-Fi device to network No Yes
Price (approx.) ~half of FP2 Full price

If you already run a Zigbee mesh and want simple room-level presence without adding another Wi-Fi device, the FP1E is the better fit. If you need per-zone detection — which side of the room, which seat, is anyone in front of the TV — the FP2 is worth the premium. For a fuller breakdown of the FP2 against the newer FP300, see my FP2 vs FP300 comparison.

The FP1E doesn’t replace a PIR sensor for all use cases either. If you want a sensor that reacts instantly to someone entering a room and you don’t care about still presence, the Aqara P1 motion sensor is cheaper and simpler. The FP1E’s value is specifically in the still-presence detection — if a room only ever needs “someone just walked in,” a battery PIR is the lighter choice.

Cloud and privacy status

Once paired directly to a Zigbee coordinator and running through Zigbee2MQTT, the FP1E has no cloud dependency for operation. All sensor data flows over the local Zigbee mesh to the MQTT broker and into Home Assistant. The Aqara Home app is not required. No Aqara account is required. You don’t need to activate the device against Aqara’s servers.

The sensor itself has no Wi-Fi radio — it’s Zigbee only. There is no network interface that could phone home independently of the Zigbee coordinator. The only path to Aqara’s infrastructure would be if you were using an Aqara hub as the coordinator, which this guide explicitly avoids.

Aqara’s FAQ notes that Zigbee2MQTT and USB coordinators are outside their official support scope. That’s an accurate statement about what their support team handles, not evidence that the device is doing anything unexpected locally.

OTA firmware updates

The FP1E supports over-the-air firmware updates through Zigbee2MQTT’s standard OTA flow. No Aqara hub is required.

In the Z2M frontend, open the device and look for the OTA tab. Click Check for update to query the OTA server. If an update is available, click Update. The process takes 5–15 minutes depending on firmware size and Zigbee mesh reliability.

Run an OTA check shortly after pairing. Aqara ships devices with firmware that may be several months old, and updates can improve detection accuracy, sensitivity defaults, and spatial learning quality. After the initial update, checking quarterly is enough.

Frequently asked questions

Does the Aqara FP1E work without the Aqara hub?

Yes. Paired directly to a Zigbee USB coordinator running Zigbee2MQTT, the FP1E operates with no hub and no cloud account. All sensor data flows locally.

What is the difference between the Aqara FP1E and FP2 for Home Assistant?

The FP1E is Zigbee-only and integrates via Zigbee2MQTT. The FP2 is Wi-Fi-only and integrates via HomeKit Controller. The FP2 adds zone detection, multi-person tracking, fall detection, and a light sensor that the FP1E lacks. The FP1E is cheaper, requires no Wi-Fi device on your network, and acts as a Zigbee mesh router.

How do I trigger AI spatial learning on the Aqara FP1E in Zigbee2MQTT?

In the Z2M frontend, go to the device’s specific settings and toggle spatial_learning to on. Alternatively, publish {"spatial_learning": true} to the device’s MQTT /set topic. Keep the room empty during the pass. The sensor completes it autonomously and returns to normal operation.

Why does the Aqara FP1E show presence for 30 seconds after I leave the room?

That’s the hardware hold-off period. The radar continues reporting presence for approximately 30 seconds after the last detected signal before clearing. This is a device-level behavior, not a Z2M configuration issue. Design your automations to account for it — a 35-second delay on the “turn off” action works well in practice.

Does the Aqara FP1E work as a Zigbee router?

Yes. Because it’s USB-powered and always on, it acts as a full Zigbee router, extending your mesh and relaying messages for battery-powered end devices nearby. This is an advantage over battery-powered sensors, which are end devices and don’t route.


The FP1E does one thing well: it knows whether a room is occupied, even when no one is moving. Paired to Zigbee2MQTT and integrated into Home Assistant without any Aqara infrastructure, it’s a clean local sensor with no network overhead and a useful side effect of extending your Zigbee mesh. The 30-second absence hold-off is the main thing to work around in automation logic, and the spatial learning pass is worth running once after installation.

If you need more than single-zone presence — per-seat detection, multi-person tracking, fall detection — the FP2 is where to look next.

.
On this page
.

Read Next

If you found this useful, try these.