What it exposes
| Feature | Property | Values | Control |
|---|---|---|---|
| Climate | occupied_heating_setpoint, local_temperature, local_temperature_calibration, system_mode, running_state | heating setpoint, room temperature, local_temperature_calibration, mode, running state | settable |
| Child lock | child_lock | — | settable |
| Open window | open_window | — | settable |
| Open window detected | open_window_detected | — | read only |
| Frost protection temperature | frost_protection_temperature | °C · 5…15 | settable |
| Weekly schedule sunday | weekly_schedule_sunday | — | settable |
| Weekly schedule monday | weekly_schedule_monday | — | settable |
| Weekly schedule tuesday | weekly_schedule_tuesday | — | settable |
| Weekly schedule wednesday | weekly_schedule_wednesday | — | settable |
| Weekly schedule thursday | weekly_schedule_thursday | — | settable |
| Weekly schedule friday | weekly_schedule_friday | — | settable |
| Weekly schedule saturday | weekly_schedule_saturday | — | settable |
| Temporary mode mode | temporary_mode_mode | disabled, timer, boost | settable |
| Temporary mode duration | temporary_mode_duration | minutes · 1…1440 | settable |
| Temporary mode target temperature | temporary_mode_target_temperature | °C · 5…30 | settable |
| Temperature sensor | temperature_sensor_select | local_temperature, remote_temperature, remote_source_offline | settable |
| External temperature | external_temperature_input | °C · 0…99.9 | settable |
| Minimum heating start threshold | hysteresis_low | °C · -2.6…-0.2 | settable |
| Maximum heating stop threshold | hysteresis_high | °C · 0…2.6 | settable |
| Hydronic underfloor heating relay output | hydronic_underfloor_heating_relay_output | normally_open_no, normally_closed_nc | settable |
| Boiler dry contact output | boiler_dry_contact_output | normally_open_no, normally_closed_nc | settable |
| NTC temperature | ntc_temperature | — | read only |
| NTC overheat protection | ntc_overheat_protection | — | settable |
| NTC overheat protection temperature | ntc_overheat_protection_temperature | °C · 20…50 | settable |
| Radar detection | radar_detection | — | settable |
| Radar sensitivity | radar_sensitivity | low, medium, high | settable |
| Radar do not disturb | radar_do_not_disturb | — | settable |
| Radar do not disturb period | radar_do_not_disturb_period | — | settable |
| Standby brightness | standby_brightness | 0…8 | settable |
| Active brightness | active_brightness | 0…8 | settable |
| Night mode | night_mode | — | settable |
| Night mode period | night_mode_period | — | settable |
| Night brightness | night_brightness | 0…8 | settable |
| Bluetooth pairing | bluetooth_pairing | — | settable |
| Read temperature control history | read_temperature_control_history | — | read only |
| Temperature control history | temperature_control_history | — | read only |
| Factory reset | factory_reset | reset | 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:
{
"occupied_heating_setpoint": 21,
"local_temperature": 20.5,
"system_mode": "heat",
"child_lock": false,
"open_window": false,
"open_window_detected": false,
"frost_protection_temperature": 10,
"temporary_mode_mode": "disabled",
"temporary_mode_duration": 721,
"temporary_mode_target_temperature": 18,
"temperature_sensor_select": "local_temperature",
"external_temperature_input": 50,
"hysteresis_low": -1,
"hysteresis_high": 1,
"linkquality": 120
}
Send commands to zigbee2mqtt/my_device/set:
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"occupied_heating_setpoint":21.5}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"system_mode":"heat"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"child_lock":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"open_window":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"schedule_active_group":"2"}'
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: "Cooler at night"
mode: single
triggers:
- trigger: time
at: "23:00:00"
actions:
- action: climate.set_temperature
target:
entity_id: climate.my_device
data:
temperature: 18
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.