What it exposes
| Feature | Property | Values | Control |
|---|---|---|---|
| On / off (l1) | state_l1 | — | settable |
| On / off (l2) | state_l2 | — | settable |
| On / off (l3) | state_l3 | — | settable |
| On / off (l4) | state_l4 | — | settable |
| Mode (l1) | mode_l1 | switch, scene, smart_light, curtain | settable |
| Mode (l2) | mode_l2 | switch, scene, smart_light, curtain | settable |
| Mode (l3) | mode_l3 | switch, scene, smart_light, curtain | settable |
| Mode (l4) | mode_l4 | switch, scene, smart_light, curtain, thermostat | settable |
| Name (l1) | name_l1 | — | settable |
| Name (l2) | name_l2 | — | settable |
| Name (l3) | name_l3 | — | settable |
| Name (l4) | name_l4 | — | settable |
| Scene name (l1) | scene_name_l1 | — | settable |
| Scene name (l2) | scene_name_l2 | — | settable |
| Scene name (l3) | scene_name_l3 | — | settable |
| Scene name (l4) | scene_name_l4 | — | settable |
| Dimmer name (l1) | dimmer_name_l1 | — | settable |
| Dimmer name (l2) | dimmer_name_l2 | — | settable |
| Dimmer name (l3) | dimmer_name_l3 | — | settable |
| Dimmer name (l4) | dimmer_name_l4 | — | settable |
| Dimmer switch (l1) | dimmer_switch_l1 | — | settable |
| Dimmer switch (l2) | dimmer_switch_l2 | — | settable |
| Dimmer switch (l3) | dimmer_switch_l3 | — | settable |
| Dimmer switch (l4) | dimmer_switch_l4 | — | settable |
| Brightness (l1) | brightness_l1 | 0…254 | read only |
| Brightness (l2) | brightness_l2 | 0…254 | read only |
| Brightness (l3) | brightness_l3 | 0…254 | read only |
| Brightness (l4) | brightness_l4 | 0…254 | read only |
| Color temp (l1) | color_temp_l1 | 0…254 | read only |
| Color temp (l2) | color_temp_l2 | 0…254 | read only |
| Color temp (l3) | color_temp_l3 | 0…254 | read only |
| Color temp (l4) | color_temp_l4 | 0…254 | read only |
| Curtain name (l1) | curtain_name_l1 | — | settable |
| Curtain name (l2) | curtain_name_l2 | — | settable |
| Curtain name (l3) | curtain_name_l3 | — | settable |
| Curtain name (l4) | curtain_name_l4 | — | settable |
| Curtain switch (l1) | curtain_switch_l1 | — | settable |
| Curtain switch (l2) | curtain_switch_l2 | — | settable |
| Curtain switch (l3) | curtain_switch_l3 | — | settable |
| Curtain switch (l4) | curtain_switch_l4 | — | settable |
| Group id (l1) | group_id_l1 | 1…10000 | settable |
| Group id (l2) | group_id_l2 | 1…10000 | settable |
| Group id (l3) | group_id_l3 | 1…10000 | settable |
| Group id (l4) | group_id_l4 | 1…10000 | settable |
| After power loss | power_on_behavior | off, on, previous | settable |
| After power loss (l1) | power_on_behavior_l1 | off, on, previous | settable |
| After power loss (l2) | power_on_behavior_l2 | off, on, previous | settable |
| After power loss (l3) | power_on_behavior_l3 | off, on, previous | settable |
| After power loss (l4) | power_on_behavior_l4 | off, on, previous | settable |
| Show weather | show_weather | — | settable |
| Backlight | backlight | — | settable |
| Show screen | show_screen | motion, on_press, on | settable |
| Thermostat | thermostat | — | settable |
| Thermostat name | thermostat_name | — | settable |
| Heating setpoint | current_heating_setpoint | 16…32 | read only |
| Fan mode | fan_mode | 0…3 | read only |
| Scene switch | scene_switch | switch_1, switch_2, switch_3, switch_4, switch_5, switch_6, switch_7, switch_8 … | settable |
| Temperature | temperature_1 | -65…99 | settable |
| Condition 1 | condition_1 | sunny, heavy_rain, cloudy, sandstorm, light_snow, snow, freezing_fog, rainstorm … | settable |
| Action (button press) | action | scene_0, scene_1, scene_2, scene_3, scene_4, scene_5, scene_6, scene_7 … | read only |
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:
{
"state_l1": "ON",
"state_l2": "ON",
"state_l3": "ON",
"state_l4": "ON",
"mode_l1": "switch",
"mode_l2": "switch",
"mode_l3": "switch",
"mode_l4": "switch",
"dimmer_switch_l1": false,
"dimmer_switch_l2": false,
"dimmer_switch_l3": false,
"dimmer_switch_l4": false,
"brightness_l1": 127,
"brightness_l2": 127,
"linkquality": 120
}
Send commands to zigbee2mqtt/my_device/set:
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state_l1":"TOGGLE"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state_l2":"TOGGLE"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state_l3":"TOGGLE"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state_l4":"TOGGLE"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"mode_l1":"scene"}'
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: "Off at night"
mode: single
triggers:
- trigger: time
at: "23:30:00"
actions:
- action: switch.turn_off
target:
entity_id: switch.my_device_l1
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.