What it exposes
| Feature | Property | Values | Control |
|---|---|---|---|
| Identify | identify | identify | settable |
| CO₂ | co2 | ppm | read only |
| Formaldehyde concentration | formaldehyde_concentration | ppm | read only |
| Temperature | temperature | °C | read only |
| Pressure | pressure | kPa | read only |
| Humidity | humidity | % | read only |
| Co2 accurate measurement | co2_accurate_measurement | — | settable |
| Co2 automatic calibration | co2_automatic_calibration | — | settable |
| Led indication | led_indication | — | settable |
| Co2 moderate threshold | co2_moderate_threshold | ppm · 0…5000 | settable |
| Co2 hazardous threshold | co2_hazardous_threshold | ppm · 0…5000 | settable |
| Formaldehyde moderate threshold | formaldehyde_moderate_threshold | ppb · 0…5000 | settable |
| Formaldehyde hazardous threshold | formaldehyde_hazardous_threshold | ppb · 0…5000 | settable |
| Temperature offset | temperature_offset | °C · -20…20 | settable |
| Humidity offset | humidity_offset | % · -50…50 | settable |
| Pressure offset | pressure_offset | hPa · -1000…1000 | settable |
| Formaldehyde offset | formaldehyde_offset | adc · -100…100 | settable |
MQTT: state and commands
Zigbee2MQTT publishes the device state to zigbee2mqtt/my_device (my_device is the name you give the device). An example message:
{
"co2": 640,
"formaldehyde_concentration": 0,
"temperature": 21.6,
"pressure": 1012,
"humidity": 46.2,
"co2_accurate_measurement": false,
"co2_automatic_calibration": false,
"led_indication": false,
"co2_moderate_threshold": 2500,
"co2_hazardous_threshold": 2500,
"formaldehyde_moderate_threshold": 2500,
"formaldehyde_hazardous_threshold": 2500,
"temperature_offset": 0,
"humidity_offset": 0,
"linkquality": 120
}
Send commands to zigbee2mqtt/my_device/set:
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"co2_accurate_measurement":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"co2_automatic_calibration":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"led_indication":true}'
Watch the topics live from the browser: MQTT client.
Home Assistant automation example
Zigbee2MQTT creates Home Assistant entities from the device name. If it is called my_device, an automation in automations.yaml can look like this:
- alias: "Room too warm"
mode: single
triggers:
- trigger: numeric_state
entity_id: sensor.my_device_temperature
above: 26
for: "00:10:00"
actions:
- action: notify.notify
data:
message: "Temperature above 26 °C"
Check the YAML: YAML checker.
How to pair it
- In Zigbee2MQTT click Permit join.
- Put the device in pairing mode: usually a long press of the reset button (5–10 s) until the LED blinks; bulbs: switch the power off and on 5–6 times.
- Keep the device close to the coordinator or a router while pairing.
- Give it a clear name: MQTT topics and Home Assistant entities are built from it.
Exact procedure and model notes: the device page in the Zigbee2MQTT docs. No coordinator yet: coordinator picker.