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:

  • Zigbee2MQTT running (version 1.36 or newer — FP1E support was added in this release)
  • A compatible Zigbee coordinator (CC2652P, SONOFF Zigbee 3.0 USB Dongle-E, or equivalent)
  • Aqara FP1E with its USB-C power adapter (the sensor is mains-powered — USB-C in, not battery)
  • Home Assistant with the Zigbee2MQTT add-on or standalone Z2M connected via MQTT integration

  • 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:

  • Your setup is Zigbee-centric and you want presence detection without adding a Wi-Fi device
  • The room is under ~4–5m in any direction (bedroom, office, bathroom, corridor)
  • Budget matters — the FP1E typically runs about half the price of the FP2
  • You want a single reliable zone: “someone is or isn’t in this room”
  • 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

  • Power the FP1E via USB-C.
  • Locate the reset button on the side of the unit — it’s a small recessed button, accessible with a pin or the tip of a paperclip.
  • Hold the reset button for approximately 5 seconds until the LED on the front begins flashing blue rapidly.
  • Release. The LED will continue blinking while the device searches for the network.
  • Within a few seconds, Z2M will log the join event and the FP1E will appear in the device list.
  • 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:

  • Model: FP1E
  • Vendor: Aqara
  • Description: Presence sensor
  • 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.

  • Low: Reduces false positives. Good for rooms with pets, HVAC vents, or other movement sources that shouldn’t trigger presence.
  • Medium: Default. Works well for most residential rooms.
  • High: Maximum sensitivity. Suitable for detecting very still occupants (someone reading, sleeping) or for larger rooms where the target is near the detection boundary.
  • 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:

  • After initial installation in the final location
  • After rearranging furniture significantly
  • If you’re getting consistent false positives that sensitivity tuning doesn’t resolve
  • 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 presenceoff. 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:

  • Aqara FP2 Presence Sensor — Home Assistant Setup — the premium option with per-zone tracking and longer range
  • Aqara P1 Motion Sensor — Zigbee2MQTT + Home Assistant — simpler PIR-based option for corridors and entry points where stationary presence detection isn’t needed
  • Xiaomi / Aqara Zigbee Devices in Home Assistant via Zigbee2MQTT — overview of the full Aqara Zigbee device ecosystem and Z2M setup