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.
Changes include:
- Dramatic reduction in code size from ~3000 lines to <1000 lines. (Mostly by removing support for all of the other devices!)
- User Preferences are 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. Why both? I do not know.
User Preferences
Presence Detection Modes:
PIR Only:
- 'motion' = 'pirDetection'
mmWave Only:
- 'motion' = 'roomState'
mmWave + PIR:
- 'motion' is active when either pirDetection OR roomState are active/occupied
- 'motion' is inactive when both pirDetection AND roomState are inactive/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.







