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

    • Zigbee network
    • Improve network range and stability
    • 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
    • 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)

SONOFF SNZB-02DR2

ModelSNZB-02DR2
VendorSONOFF
DescriptionTemperature and humidity sensor with display and relay control
Exposesbattery, voltage, temperature, humidity, remote_source_status, source_1_temperature, source_1_temperature_state, source_1_humidity, source_1_humidity_state, source_2_temperature, source_2_temperature_state, source_2_humidity, source_2_humidity_state, comfort_temperature_min, comfort_temperature_max, comfort_humidity_min, comfort_humidity_max, temperature_units, temperature_calibration, humidity_calibration
PictureSONOFF SNZB-02DR2

Notes

Displaying readings from an external sensor

This device can show temperature and humidity coming from another sensor instead of its own built-in sensor (for example, showing an outdoor sensor on the screen).

Firmware 1.0.5 and later

With firmware 1.0.5, the remote temperature and humidity configuration has changed. The previous temperature_sensor_select / external_temperature / external_humidity approach is no longer used.

The device now supports up to two remote temperature/humidity sources.

  1. Set remote_source_status to using to enable remote sources.
  2. Configure the corresponding source_1_* and/or source_2_* temperature and humidity values (e.g. source_1_temperature: 25.5, source_1_humidity: 60).

For Home Assistant users, SONOFF provides an official blueprint for the new configuration: https://help.sonoff.tech/docs/SNZB02DR2#Home_Assistant

For other platforms, the properties can be set directly via MQTT or the platform's equivalent mechanism.

The device screen updates from configured remote sources automatically every 30 minutes, or manually by briefly pressing the button on the back.

Note: this is a battery-powered sleepy device, so writes are applied on the next poll/check-in. Press the button on the back to wake it for an immediate update.

Firmware 1.0.4 and earlier

  1. Set temperature_sensor_select to external to switch the display to the external source (set it back to internal to show the built-in sensor with the min/max view).
  2. Push readings to external_temperature and external_humidity. Values are in °C / % (e.g. external_temperature: 25.5, external_humidity: 88).

Note:

  • Humidity on the external display requires device firmware 1.0.4.
  • This is a battery-powered sleepy device, so writes are applied on the next poll/check-in. Press the button on the back to wake it for an immediate update.

Example Home Assistant automation mirroring another sensor onto the display:

alias: SNZB-02DR2 external display
triggers:
  - trigger: state
    entity_id:
      - sensor.outdoor_temperature
      - sensor.outdoor_humidity
conditions:
  - condition: template
    value_template: >-
      {{ states('sensor.outdoor_temperature') not in ['unknown', 'unavailable', 'none']
         and states('sensor.outdoor_humidity') not in ['unknown', 'unavailable', 'none'] }}
actions:
  - action: mqtt.publish
    data:
      topic: zigbee2mqtt/FRIENDLY_NAME/set
      payload: >-
        {
          "temperature_sensor_select": "external",
          "external_temperature": {{ states('sensor.outdoor_temperature') | float | round(1) }},
          "external_humidity": {{ states('sensor.outdoor_humidity') | float | round(0) }}
        }
mode: single

OTA updates

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

Options

How to use device type specific configuration

  • 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 maximum value of 3

  • 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 maximum value of 3

Exposes

Battery (numeric)

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

Voltage (numeric)

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

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.

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 %.

Remote source status (enum)

Overall remote source status. Setting unbound clears all items, offline marks every bound item offline.. Value can be found in the published state on the remote_source_status property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"remote_source_status": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"remote_source_status": NEW_VALUE}. The possible values are: unbound, using, offline.

Source 1 temperature (numeric)

Displays the bound remote sensor's temperature on the device screen, updating automatically every 30 minutes or manually by briefly pressing the button on the back of the SNZB-02DR2.. Value can be found in the published state on the source_1_temperature property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_1_temperature": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_1_temperature": NEW_VALUE}. The minimal value is -20 and the maximum value is 60. The unit of this value is °C.

Source 1 temperature state (enum)

State of the source 1 temperature item. State-only online/restored updates do not overwrite the stored measurement.. Value can be found in the published state on the source_1_temperature_state property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_1_temperature_state": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_1_temperature_state": NEW_VALUE}. The possible values are: unbound, online, offline, restored.

Source 1 humidity (numeric)

Displays the bound remote sensor's humidity on the device screen, updating automatically every 30 minutes or manually by briefly pressing the button on the back of the SNZB-02DR2.. Value can be found in the published state on the source_1_humidity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_1_humidity": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_1_humidity": NEW_VALUE}. The minimal value is 0 and the maximum value is 99.9. The unit of this value is %.

Source 1 humidity state (enum)

State of the source 1 humidity item. State-only online/restored updates do not overwrite the stored measurement.. Value can be found in the published state on the source_1_humidity_state property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_1_humidity_state": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_1_humidity_state": NEW_VALUE}. The possible values are: unbound, online, offline, restored.

Source 2 temperature (numeric)

Displays the bound remote sensor's temperature on the device screen, updating automatically every 30 minutes or manually by briefly pressing the button on the back of the SNZB-02DR2.. Value can be found in the published state on the source_2_temperature property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_2_temperature": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_2_temperature": NEW_VALUE}. The minimal value is -20 and the maximum value is 60. The unit of this value is °C.

Source 2 temperature state (enum)

State of the source 2 temperature item. State-only online/restored updates do not overwrite the stored measurement.. Value can be found in the published state on the source_2_temperature_state property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_2_temperature_state": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_2_temperature_state": NEW_VALUE}. The possible values are: unbound, online, offline, restored.

Source 2 humidity (numeric)

Displays the bound remote sensor's humidity on the device screen, updating automatically every 30 minutes or manually by briefly pressing the button on the back of the SNZB-02DR2.. Value can be found in the published state on the source_2_humidity property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_2_humidity": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_2_humidity": NEW_VALUE}. The minimal value is 0 and the maximum value is 99.9. The unit of this value is %.

Source 2 humidity state (enum)

State of the source 2 humidity item. State-only online/restored updates do not overwrite the stored measurement.. Value can be found in the published state on the source_2_humidity_state property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"source_2_humidity_state": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"source_2_humidity_state": NEW_VALUE}. The possible values are: unbound, online, offline, restored.

Comfort temperature min (numeric)

Minimum temperature that is considered comfortable. The device will display ❄️ when the temperature is lower than this value. Note: wake up the device by pressing the button on the back before changing this value.. Value can be found in the published state on the comfort_temperature_min property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"comfort_temperature_min": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"comfort_temperature_min": NEW_VALUE}. The minimal value is -10 and the maximum value is 60. The unit of this value is °C.

Comfort temperature max (numeric)

Maximum temperature that is considered comfortable. The device will display 🔥 when the temperature is higher than this value. Note: wake up the device by pressing the button on the back before changing this value.. Value can be found in the published state on the comfort_temperature_max property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"comfort_temperature_max": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"comfort_temperature_max": NEW_VALUE}. The minimal value is -10 and the maximum value is 60. The unit of this value is °C.

Comfort humidity min (numeric)

Minimum relative humidity that is considered comfortable. The device will display ☀️ when the humidity is lower than this value. Note: wake up the device by pressing the button on the back before changing this value.. Value can be found in the published state on the comfort_humidity_min property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"comfort_humidity_min": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"comfort_humidity_min": NEW_VALUE}. The minimal value is 5 and the maximum value is 95. The unit of this value is %.

Comfort humidity max (numeric)

Maximum relative humidity that is considered comfortable. The device will display 💧 when the humidity is higher than this value. Note: wake up the device by pressing the button on the back before changing this value.. Value can be found in the published state on the comfort_humidity_max property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"comfort_humidity_max": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"comfort_humidity_max": NEW_VALUE}. The minimal value is 5 and the maximum value is 95. The unit of this value is %.

Temperature units (enum)

The unit of the temperature displayed on the device screen. Note: wake up the device by pressing the button on the back before changing this value.. Value can be found in the published state on the temperature_units property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temperature_units": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temperature_units": NEW_VALUE}. The possible values are: celsius, fahrenheit.

Temperature calibration (numeric)

Offset to add/subtract to the reported temperature. Value can be found in the published state on the temperature_calibration property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"temperature_calibration": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"temperature_calibration": NEW_VALUE}. The minimal value is -50 and the maximum value is 50. The unit of this value is °C.

Humidity calibration (numeric)

Offset to add/subtract to the reported relative humidity. Value can be found in the published state on the humidity_calibration property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"humidity_calibration": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"humidity_calibration": NEW_VALUE}. The minimal value is -50 and the maximum value is 50. The unit of this value is %.

Help to make the docu better and edit this page on Github ✌
Page was last updated on: 9/15/26, 6:08 PM