2026-03-10 - Initial release (v1.0.5) of a dedicated Zigbee driver for the Aqara FP300 Presence Multi-Sensor device. It was built upon the impressive work of @kkossev, and those who have contributed to his "Aqara P1 Motion Sensor" multi-device driver. My motivation for creating this was to have a driver that did not utilize child devices and to optimize/simplify the driver code as much as possible for performance and battery life.
2026-03-12 - Release v1.0.8 with improved user Preferences handling logic and improved preference titles and description.
2026-03-13 - Release v1.0.9 with new Advanced/Experimental Preferences, and minor internal refactoring of 'motion' logic variables.
2026-03-17 - Release v1.0.10 adds firmware version information. Thanks @hubitrep! - Release v1.0.11 improves device refresh() command.
2026-04-23 - Release v1.1.0 adds new 'Use Aqara Presence Detection Algorithm' to help users whose sensors experience false PIR Detections.
2026-06-24 - Release v1.2.2 adds support for new Aqara FP300 firmware 0.0.0_6542. Thank you @kkossev for figuring out the necessary changes!
Changes include:
- Dramatic reduction in code size from ~3000 lines to <1300 lines. (Mostly by removing support for all of the other devices!)
- Showing of specific User Preferences is now data driven based upon which preferences are currently set. This mimics the behavior of the Aqara mobile phone app, as certain settings are only pertinent based on other settings.
- Eliminated many of the non-standard attributes, focusing on the ones that I believe would be most useful in Hubitat automations. I kept the remaining attribute names the same as @kkossev's driver to simplify migration between the two drivers.
- Optimized the Hubitat Standard Capability "Motion Sensor" attribute to make sure that it is properly activated/deactivated based on the Presence Detection Mode - Both mmWave and PIR, mmWave only, PIR only. This provides the fastest response time for Hubitat automations, like Room Lighting.
- Optimized the Temperature, Humidity, and Illuminance Zigbee reporting to only send data when the user has selected those features be enabled. This should help to improve long-term battery life of the sensor.
- No child devices. Temperature and Humidity are now simply part of the main device.
A few IMPORTANT things to be aware of when using the FP300 Sensor
- A brand new FP300 sensor will need to be put into Zigbee mode via the Aqara mobile phone app, before it can be paired via Zigbee to your Hubitat hub. By default, these are configured to use Matter over Thread. One benefit of performing this conversion to Zigbee, is that the device's firmware will be upgraded to the latest version from Aqara.
- Any time you want to change a User Preference, please be sure to first press the physical button on the FP300 to wake it up, and then press SAVE on the Preferences page a few seconds later. Saving all of these settings to the FP300 will take about 30s. Please be patient. You can verify that your new settings were saved properly to the device by refreshing your web browser while viewing the Hubitat FP300 device page, and then looking at the Preferences tab. Any time the settings are written to the device, or a device refresh() is called, the Preferences page is updated with all of the latest settings from the FP300 device.
- When issuing any of the Commands to the sensor (e.g. Start Spatial Learning), you will also need to wake it up first by pressing the physical button on the FP300.
More detailed instructions to follow soon.
How to install the driver:
- This driver has been added to the Hubitat Package Manager (HPM). Search for "Aqara FP300 Presence Multi-Sensor".
- Or, you can simply manually add this driver to your HE hub via my GitHub Repo.
The sensor has both a PIR motion sensor AND a mmWave Presence/Occupancy sensor in it. Both of these sensors are exposed via Zigbee to the HE hub. PIR is mapped to the 'pirDetection' custom attribute. mmWave is mapped to the 'roomState' custom attribute. Using a combination of the pair of these sensors, the driver infers the proper state of the Hubitat Standard Capability Motion Sensor 'motion' attribute.
When the DevicePresenceMode is set to "Both", it results in the pirDetection attribute changing to 'active' followed by the roomState attribute changing to 'occupied' a fraction of a second later.
If you set the DetectionPresenceMode to 'mmWave only', do not expect to see the pirDetection attribute to change at all. After all, you've just told the sensor to disable the PIR sensor, and thus I believe it disables it to save battery life, and no longer sends Zigbee status updates for the pirDetection attribute.
However, if you set the DetectionPresenceMode to 'PIR only', then both the pirDetection and roomState attributes are updated simultaneously. I believe the sensor disables the mmWave sensor to save batteries, but still updates both Zigbee attributes.
Release v1.1.0 of the FP300 driver adds a new User Preference setting called Use Aqara Presence Detection Algorithm. This defaults to ENABLED (v1.2.2), to ensure the most reliable sensor behavior. When ENABLED, the driver will change its behavior slightly to reduce/eliminate the impact the False PIR Detections when using the 'Both mmWave=PIR" Presence Detection Mode.
Disabled: The Hubitat standard 'motion' attribute will become 'active' when either the PIR (pirDetection) or mmWave (roomState) sensor becomes active. The 'motion' attribute becomes 'inactive' when both the PIR and mmWave sensor are inactive.
Enabled: This mode will emulate the behavior I have observed when using the FP300 sensor with an Aqara M3 hub. The PIR sensor is used to help save battery life, and appears to only be used to wake up the mmWave sensor. Thus, in this mode the Hubitat standard 'motion' attribute will become 'active' only when the mmWave (roomState) sensor becomes active. Likewise, the 'motion' attribute only becomes 'inactive' when the mmWave sensor becomes inactive. The PIR sensor is truly only used to help save the battery life of the FP300 by allowing the mmWave to power down most of the time, until awoken by the PIR sensor.
When using either the PIR Only or mmWave Only Presence Detection Modes, there is no change in behavior of this driver. It these cases, the Hubitat standard 'motion' attribute is directly tied to the corresponding PIR or mmWave sensor's value.
- PIR Only will have decent battery life, but possibly lots of false alarms, and will probably function worse than most Zigbee PIR Motion Sensors.
- mmWave Only mode will have the poorest battery life, as the power hungry mmWave sensor needs to always be active.
User Preferences
Presence Detection Modes:
PIR Only:
- 'motion' = 'pirDetection'
mmWave Only:
- 'motion' = 'roomState'
mmWave + PIR:
- If Use Aqara Presence Detection Algorithm is DISABLED
- 'motion' is active when either pirDetection OR roomState are active/occupied
- 'motion' is inactive when both pirDetection AND roomState are inactive/unoccupied
- If Use Aqara Presence Detection Algorithm is ENABLED
- 'motion' is active when roomState is occupied
- 'motion' is inactive when roomState is unoccupied
#####################################################
NOTE WELL: I recommend fully unpairing/removing your existing FP300 sensor, factory resetting it by pressing the button on it 10 times quickly, and then re-pairing it using this driver (you may need to remove any previous custom FP300 drivers to make sure this new one is automatically selected during the pairing process, or at least comment out the fingerprint for the FP300 in your existing drivers.) This will make sure that only the essential Zigbee status reports are sent to your HE hub, thus improving battery life.
#####################################################
A huge Thank You goes to @kkossev for his Aqara P1 Motion Sensor driver which served as a starting point for this driver! I appreciate his support for this effort!
As always, feedback is welcome! I would like to also thank @LearningHubitat for his assistance in testing/debugging this driver.







