What it exposes
| Feature | Property | Values | Control |
|---|---|---|---|
| Light | state, brightness | on / off, brightness | settable |
| Level config | level_config | — | read only |
| Power | power | W | read only |
| Energy | energy | kWh | read only |
| Ballast minimum level | ballast_minimum_level | 1…254 | settable |
| Ballast maximum level | ballast_maximum_level | 1…254 | settable |
| Minimum on level | minimum_on_level | 0…255 | settable |
| Capabilities forward phase control | capabilities_forward_phase_control | — | settable |
| Capabilities reverse phase control | capabilities_reverse_phase_control | — | settable |
| Capabilities reactance discriminator | capabilities_reactance_discriminator | — | settable |
| Capabilities configurable curve | capabilities_configurable_curve | — | settable |
| Capabilities overload detection | capabilities_overload_detection | — | settable |
| Status forward phase control | status_forward_phase_control | — | settable |
| Status reverse phase control | status_reverse_phase_control | — | settable |
| Status overload | status_overload | — | settable |
| Status capacitive load | status_capacitive_load | — | settable |
| Status inductive load | status_inductive_load | — | settable |
| Mode phase control | mode_phase_control | automatic, forward, reverse | settable |
| Identify (default) | identify_default | identify | settable |
| Action (button press) | action | toggle_s1, toggle_s2, on_s1, on_s2, off_s1, off_s2, recall_*_s1, recal_*_s2 … | 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": "ON",
"brightness": 180,
"power": 12.4,
"energy": 3.21,
"ballast_minimum_level": 128,
"ballast_maximum_level": 128,
"minimum_on_level": 128,
"capabilities_forward_phase_control": false,
"capabilities_reverse_phase_control": false,
"capabilities_reactance_discriminator": false,
"capabilities_configurable_curve": false,
"capabilities_overload_detection": false,
"status_forward_phase_control": false,
"status_reverse_phase_control": false,
"linkquality": 120
}
Send commands to zigbee2mqtt/my_device/set:
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state":"ON","brightness":180}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"state":"OFF","transition":2}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"capabilities_forward_phase_control":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"capabilities_reverse_phase_control":true}'
mosquitto_pub -t zigbee2mqtt/my_device/set -m '{"capabilities_reactance_discriminator":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: "Light at sunset"
mode: single
triggers:
- trigger: sun
event: sunset
offset: "-00:15:00"
actions:
- action: light.turn_on
target:
entity_id: light.my_device
data:
brightness_pct: 70
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.