Zigbee2MQTTZigbee2MQTT
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)

Aqara PS-S04D

ModelPS-S04D
VendorAqara
DescriptionPresence sensor FP300
Exposespower_outage_count, motion_sensitivity, battery, voltage, presence, pir_detection, presence_detection_options, absence_delay_timer, pir_detection_interval, illuminance, humidity, temperature, spatial_learning, restart_device, identify, temp_&humidity_sampling, temp&_humidity_sampling_period, temp_reporting_interval, temp_reporting_threshold, temp_reporting_mode, humidity_reporting_interval, humidity_reporting_threshold, humidity_report_mode, light_sampling, light_sampling_period, light_reporting_interval, light_reporting_threshold, light_report_mode, track_target_distance, target_distance, detection_range, detection_range_composite, led_disabled_night, schedule_start_time, schedule_end_time
PictureAqara PS-S04D

OTA updates

This device supports OTA updates, for more information see OTA updates.

Options

How to use device type specific configuration

  • illuminance_calibration: Calibrates the illuminance value (percentual offset), takes into effect on next report of device. The value must be a number.

  • humidity_calibration: Calibrates the humidity value (absolute offset), takes into effect on next report of device. The value must be a number.

  • humidity_precision: Number of digits after decimal point for humidity, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of 0 and with a with a maximum value of 3

  • temperature_calibration: Calibrates the temperature value (absolute offset), takes into effect on next report of device. The value must be a number.

  • temperature_precision: Number of digits after decimal point for temperature, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of 0 and with a with a maximum value of 3

  • identify_timeout: Sets the duration of the identification procedure in seconds (i.e., how long the device would flash).The value ranges from 1 to 30 seconds (default: 3). The value must be a number with a minimum value of 1 and with a with a maximum value of 30

  • illuminance_raw: Expose the raw illuminance value. The value must be true or false

Exposes

Power outage count (numeric)

Number of power outages (since last pairing). Value can be found in the published state on the power_outage_count property. It's not possible to read (/get) or write (/set) this value.

Motion sensitivity (enum)

Presence Detection Sensitivity.. Value can be found in the published state on the motion_sensitivity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"motion_sensitivity": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"motion_sensitivity": NEW_VALUE}. The possible values are: low, medium, high.

Battery (numeric)

Remaining battery in %, can take up to 24 hours before reported. Value can be found in the published state on the battery property. It's not possible to read (/get) or write (/set) this value. The minimal value is 0 and the maximum value is 100. The unit of this value is %.

Voltage (numeric)

Voltage of the battery in millivolts. Value can be found in the published state on the voltage property. It's not possible to read (/get) or write (/set) this value. The unit of this value is mV.

Presence (binary)

Indicates whether the device detected presence. Value can be found in the published state on the presence property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"presence": ""}. It's not possible to write (/set) this value. If value equals true presence is ON, if false OFF.

Pir detection (binary)

Indicates whether the PIR sensor detects motion (in mmWave + PIR mode after mmWave presence detection PIR sensors gets turned off so this attribute might change to false although the presence is detected).. Value can be found in the published state on the pir_detection property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"pir_detection": ""}. It's not possible to write (/set) this value. If value equals true pir detection is ON, if false OFF.

Presence detection options (enum)

Presence detection sensor type. Value can be found in the published state on the presence_detection_options property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"presence_detection_options": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"presence_detection_options": NEW_VALUE}. The possible values are: both, mmwave, pir.

Absence delay timer (numeric)

Value for delay before the device reports absence when no presence is detected. Value can be found in the published state on the absence_delay_timer property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"absence_delay_timer": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"absence_delay_timer": NEW_VALUE}. The minimal value is 10 and the maximum value is 300. The unit of this value is sec.

Pir detection interval (numeric)

Higher detection frequency results in higher accuracy but lower battery life.. Value can be found in the published state on the pir_detection_interval property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"pir_detection_interval": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"pir_detection_interval": NEW_VALUE}. The minimal value is 2 and the maximum value is 300. The unit of this value is sec.

Illuminance (numeric)

Measured illuminance. Value can be found in the published state on the illuminance property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"illuminance": ""}. It's not possible to write (/set) this value. The unit of this value is lx.

Humidity (numeric)

Measured relative humidity. Value can be found in the published state on the humidity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity": ""}. It's not possible to write (/set) this value. The unit of this value is %.

Temperature (numeric)

Measured temperature value. Value can be found in the published state on the temperature property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temperature": ""}. It's not possible to write (/set) this value. The unit of this value is °C.

Spatial learning (enum)

Initiate AI Spatial Learning.. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"spatial_learning": NEW_VALUE}. The possible values are: Start Learning.

Restart device (enum)

Restarts the device.. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"restart_device": NEW_VALUE}. The possible values are: Restart Device.

Identify (enum)

Initiate device identification. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"identify": NEW_VALUE}. The possible values are: identify.

Temp & humidity sampling (enum)

Sampling time frequency, increasing affects battery life. Setting to custom allows specifying period, interval & threshold.. Value can be found in the published state on the temp_&_humidity_sampling property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temp_&_humidity_sampling": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temp_&_humidity_sampling": NEW_VALUE}. The possible values are: off, low, medium, high, custom.

Temp & humidity sampling period (numeric)

How often temp & humidity readings are taken on the device when in custom mode.. Value can be found in the published state on the temp_&_humidity_sampling_period property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temp_&_humidity_sampling_period": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temp_&_humidity_sampling_period": NEW_VALUE}. The minimal value is 0.5 and the maximum value is 3600. The unit of this value is sec.

Temp reporting interval (numeric)

Custom time interval for temperature data reporting.. Value can be found in the published state on the temp_reporting_interval property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temp_reporting_interval": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temp_reporting_interval": NEW_VALUE}. The minimal value is 600 and the maximum value is 3600. The unit of this value is sec.

Temp reporting threshold (numeric)

Reporting will trigger as temperature change reaches this value when in custom mode.. Value can be found in the published state on the temp_reporting_threshold property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temp_reporting_threshold": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temp_reporting_threshold": NEW_VALUE}. The minimal value is 0.2 and the maximum value is 3. The unit of this value is °C.

Temp reporting mode (enum)

Temperature reporting type when in custom mode.. Value can be found in the published state on the temp_reporting_mode property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temp_reporting_mode": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temp_reporting_mode": NEW_VALUE}. The possible values are: threshold, reporting interval, threshold and interval.

Humidity reporting interval (numeric)

Custom time interval for humidity data reporting.. Value can be found in the published state on the humidity_reporting_interval property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity_reporting_interval": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"humidity_reporting_interval": NEW_VALUE}. The minimal value is 600 and the maximum value is 3600. The unit of this value is sec.

Humidity reporting threshold (numeric)

Reporting will trigger as humidity change reaches this value when in custom mode.. Value can be found in the published state on the humidity_reporting_threshold property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity_reporting_threshold": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"humidity_reporting_threshold": NEW_VALUE}. The minimal value is 2 and the maximum value is 10. The unit of this value is %.

Humidity report mode (enum)

Humidity reporting type when in custom mode.. Value can be found in the published state on the humidity_report_mode property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity_report_mode": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"humidity_report_mode": NEW_VALUE}. The possible values are: threshold, reporting interval, threshold and interval.

Light sampling (enum)

Sampling time frequency, increasing affects battery life. Setting to custom allows specifying period, interval & threshold.. Value can be found in the published state on the light_sampling property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"light_sampling": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"light_sampling": NEW_VALUE}. The possible values are: off, low, medium, high, custom.

Light sampling period (numeric)

How often illumination readings are taken on the device when in custom mode.. Value can be found in the published state on the light_sampling_period property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"light_sampling_period": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"light_sampling_period": NEW_VALUE}. The minimal value is 0.5 and the maximum value is 3600. The unit of this value is sec.

Light reporting interval (numeric)

Custom interval for illumination data reporting.. Value can be found in the published state on the light_reporting_interval property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"light_reporting_interval": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"light_reporting_interval": NEW_VALUE}. The minimal value is 20 and the maximum value is 3600. The unit of this value is sec.

Light reporting threshold (numeric)

Reporting will trigger as illumination percentage change reaches this value when in custom mode.. Value can be found in the published state on the light_reporting_threshold property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"light_reporting_threshold": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"light_reporting_threshold": NEW_VALUE}. The minimal value is 3 and the maximum value is 20. The unit of this value is %.

Light report mode (enum)

illumination reporting type when in custom mode.. Value can be found in the published state on the light_report_mode property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"light_report_mode": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"light_report_mode": NEW_VALUE}. The possible values are: threshold, reporting interval, threshold and interval.

Track target distance (enum)

Initiate current target distance tracking.. Value will not be published in the state. It's not possible to read (/get) this value. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"track_target_distance": NEW_VALUE}. The possible values are: start_tracking_distance.

Target distance (numeric)

Distance to the detected target. Value can be found in the published state on the target_distance property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"target_distance": ""}. It's not possible to write (/set) this value. The unit of this value is m.

Detection range (numeric)

Specifies the range that is being detected. Requires mmWave radar mode. Press the on-device button to wake the device up and refresh its' settings.. Value can be found in the published state on the detection_range property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"detection_range": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"detection_range": NEW_VALUE}. The minimal value is 0 and the maximum value is 16777215.

Detection range composite (composite)

Specifies the detection range using set of boolean settings.. Can be set by publishing to zigbee2mqtt/FRIENDLY_NAME/set with payload {"detection_range_composite": {"detection_range_0": VALUE, "detection_range_1": VALUE, "detection_range_2": VALUE, "detection_range_3": VALUE, "detection_range_4": VALUE, "detection_range_5": VALUE, "detection_range_6": VALUE, "detection_range_7": VALUE, "detection_range_8": VALUE, "detection_range_9": VALUE, "detection_range_10": VALUE, "detection_range_11": VALUE, "detection_range_12": VALUE, "detection_range_13": VALUE, "detection_range_14": VALUE, "detection_range_15": VALUE, "detection_range_16": VALUE, "detection_range_17": VALUE, "detection_range_18": VALUE, "detection_range_19": VALUE, "detection_range_20": VALUE, "detection_range_21": VALUE, "detection_range_22": VALUE, "detection_range_23": VALUE}} To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"detection_range_composite": ""}.

  • detection_range_0 (binary): 0.00m - 1.00m allowed values: true or false
  • detection_range_1 (binary): 0.25m - 1.25m allowed values: true or false
  • detection_range_2 (binary): 0.50m - 1.50m allowed values: true or false
  • detection_range_3 (binary): 0.75m - 1.75m allowed values: true or false
  • detection_range_4 (binary): 1.00m - 2.00m allowed values: true or false
  • detection_range_5 (binary): 1.25m - 2.25m allowed values: true or false
  • detection_range_6 (binary): 1.50m - 2.50m allowed values: true or false
  • detection_range_7 (binary): 1.75m - 2.75m allowed values: true or false
  • detection_range_8 (binary): 2.00m - 3.00m allowed values: true or false
  • detection_range_9 (binary): 2.25m - 3.25m allowed values: true or false
  • detection_range_10 (binary): 2.50m - 3.50m allowed values: true or false
  • detection_range_11 (binary): 2.75m - 3.75m allowed values: true or false
  • detection_range_12 (binary): 3.00m - 4.00m allowed values: true or false
  • detection_range_13 (binary): 3.25m - 4.25m allowed values: true or false
  • detection_range_14 (binary): 3.50m - 4.50m allowed values: true or false
  • detection_range_15 (binary): 3.75m - 4.75m allowed values: true or false
  • detection_range_16 (binary): 4.00m - 5.00m allowed values: true or false
  • detection_range_17 (binary): 4.25m - 5.25m allowed values: true or false
  • detection_range_18 (binary): 4.50m - 5.50m allowed values: true or false
  • detection_range_19 (binary): 4.75m - 5.75m allowed values: true or false
  • detection_range_20 (binary): 5.00m - 6.00m allowed values: true or false
  • detection_range_21 (binary): 5.25m - 6.25m allowed values: true or false
  • detection_range_22 (binary): 5.50m - 6.50m allowed values: true or false
  • detection_range_23 (binary): 5.75m - 6.75m allowed values: true or false

Led disabled night (binary)

Enables/disables LED indicator at night. Value can be found in the published state on the led_disabled_night property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"led_disabled_night": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_disabled_night": NEW_VALUE}. If value equals true led disabled night is ON, if false OFF.

Schedule start time (text)

LED disable schedule start time (HH:MM format). Value can be found in the published state on the schedule_start_time property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"schedule_start_time": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"schedule_start_time": NEW_VALUE}.

Schedule end time (text)

LED disable schedule end time (HH:MM format). Value can be found in the published state on the schedule_end_time property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"schedule_end_time": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"schedule_end_time": NEW_VALUE}.

Help to make the docu better and edit this page on Github ✌
Last Updated: 10/1/25, 8:20 PM