What it exposes
| Feature | Property | Values | Control |
|---|---|---|---|
| On / off (l1) | state_l1 | — | settable |
| On / off (l2) | state_l2 | — | settable |
| Indicator mode (s1) | indicator_mode_s1 | reverse_with_load, consistent_with_load, always_off, always_on, flash_on_click | settable |
| Indicator mode (s2) | indicator_mode_s2 | reverse_with_load, consistent_with_load, always_off, always_on, flash_on_click | settable |
| Indicator mode (s3) | indicator_mode_s3 | reverse_with_load, consistent_with_load, always_off, always_on, flash_on_click | settable |
| Indicator mode (s4) | indicator_mode_s4 | reverse_with_load, consistent_with_load, always_off, always_on, flash_on_click | settable |
| Switch actions (s1) | switch_actions_s1 | light, light_opposite, dimmer, dimmer_opposite, standard_shutter, standard_shutter_opposite, schneider_shutter, schneider_shutter_opposite … | settable |
| Switch actions (s2) | switch_actions_s2 | light, light_opposite, dimmer, dimmer_opposite, standard_shutter, standard_shutter_opposite, schneider_shutter, schneider_shutter_opposite … | settable |
| Switch actions (s3) | switch_actions_s3 | light, light_opposite, dimmer, dimmer_opposite, standard_shutter, standard_shutter_opposite, schneider_shutter, schneider_shutter_opposite … | settable |
| Switch actions (s4) | switch_actions_s4 | light, light_opposite, dimmer, dimmer_opposite, standard_shutter, standard_shutter_opposite, schneider_shutter, schneider_shutter_opposite … | settable |
| Action (button press) | action | on_s*, off_s* | 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",
"indicator_mode_s1": "reverse_with_load",
"indicator_mode_s2": "reverse_with_load",
"indicator_mode_s3": "reverse_with_load",
"indicator_mode_s4": "reverse_with_load",
"switch_actions_s1": "light",
"switch_actions_s2": "light",
"switch_actions_s3": "light",
"switch_actions_s4": "light",
"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 '{"indicator_mode_s1":"consistent_with_load"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"indicator_mode_s2":"consistent_with_load"}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"indicator_mode_s3":"consistent_with_load"}'
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.