Zigbee2MQTTZigbee2MQTT
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)
  • Getting started
  • Supported Adapters
  • Supported Devices
  • Installation
  • Configuration
  • Usage
  • FAQ
Devices
  • Zigbee

    • Zigbee network
    • Improve network range and stability
    • Secure your Zigbee network
    • Sniff Zigbee traffic
    • Create a CC2530 router
  • Support new devices

    • Support new devices
    • Support new Tuya devices
    • Find Tuya Data Points
  • Remote Adapter

    • Connect to a remote adapter
    • Connect to a remote Sonoff ZBBridge
  • More

    • 3D cases
    • External converters
    • External extensions
    • Switch to the dev branch
    • Get Tuya and Xiaomi OTA url
  • Forum
  • Discord
  • Issues
  • Donate
GitHub
GitHub (docs)

Aqara WS-K04E

ModelWS-K04E
VendorAqara
DescriptionLight Switch H2 US (quadruple rocker)
Exposespower, switch (state), device_temperature, power_outage_count, power_on_behavior, operation_mode, lock_relay, multi_click, led_disabled_night, flip_indicator_light, mode_switch, action
PictureAqara WS-K04E

Notes

All functions working except for ability to control indicator on fourth, wireless, button.

OTA updates

This device supports OTA updates, for more information see OTA updates.

Options

How to use device type specific configuration

  • power_calibration: Calibrates the power value (percentual offset), takes into effect on next report of device. The value must be a number.

  • power_precision: Number of digits after decimal point for power, takes into effect on next report of device. This option can only decrease the precision, not increase it. The value must be a number with a minimum value of 0 and with a with a maximum value of 3

  • device_temperature_calibration: Calibrates the device_temperature value (absolute offset), takes into effect on next report of device. The value must be a number.

  • state_action: State actions will also be published as 'action' when true (default false). The value must be true or false

Exposes

Power (numeric)

Instantaneous measured power. Value can be found in the published state on the power property. It's not possible to read (/get) or write (/set) this value. The unit of this value is W.

Switch (top endpoint)

The current state of this switch is in the published state under the state_top property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_top": "ON"}, {"state_top": "OFF"} or {"state_top": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_top": ""}.

On with timed off

When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.

Switch (center endpoint)

The current state of this switch is in the published state under the state_center property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_center": "ON"}, {"state_center": "OFF"} or {"state_center": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_center": ""}.

On with timed off

When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.

Switch (bottom endpoint)

The current state of this switch is in the published state under the state_bottom property (value is ON or OFF). To control this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"state_bottom": "ON"}, {"state_bottom": "OFF"} or {"state_bottom": "TOGGLE"}. To read the current state of this switch publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"state_bottom": ""}.

On with timed off

When setting the state to ON, it might be possible to specify an automatic shutoff after a certain amount of time. To do this add an additional property on_time to the payload which is the time in seconds the state should remain on. Additionally an off_wait_time property can be added to the payload to specify the cooldown time in seconds when the switch will not answer to other on with timed off commands. Support depends on the switch firmware. Some devices might require both on_time and off_wait_time to work Examples : {"state" : "ON", "on_time": 300}, {"state" : "ON", "on_time": 300, "off_wait_time": 120}.

Device temperature (numeric)

Temperature of the device. Value can be found in the published state on the device_temperature property. It's not possible to read (/get) or write (/set) this value. The unit of this value is °C.

Power outage count (numeric)

Number of power outages (since last pairing). Value can be found in the published state on the power_outage_count property. It's not possible to read (/get) or write (/set) this value.

Power on behavior (enum)

Controls the behavior when the device is powered on after power loss. Value can be found in the published state on the power_on_behavior property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"power_on_behavior": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"power_on_behavior": NEW_VALUE}. The possible values are: on, previous, off, inverted.

Operation mode (enum, top endpoint)

Decoupled mode for top button. Value can be found in the published state on the operation_mode_top property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"operation_mode_top": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"operation_mode_top": NEW_VALUE}. The possible values are: decoupled, control_relay.

Operation mode (enum, center endpoint)

Decoupled mode for center button. Value can be found in the published state on the operation_mode_center property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"operation_mode_center": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"operation_mode_center": NEW_VALUE}. The possible values are: decoupled, control_relay.

Operation mode (enum, bottom endpoint)

Decoupled mode for bottom button. Value can be found in the published state on the operation_mode_bottom property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"operation_mode_bottom": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"operation_mode_bottom": NEW_VALUE}. The possible values are: decoupled, control_relay.

Lock relay (binary, top endpoint)

Locks top relay and prevents it from operating. Value can be found in the published state on the lock_relay_top property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"lock_relay_top": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"lock_relay_top": NEW_VALUE}. If value equals true lock relay is ON, if false OFF.

Lock relay (binary, center endpoint)

Locks center relay and prevents it from operating. Value can be found in the published state on the lock_relay_center property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"lock_relay_center": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"lock_relay_center": NEW_VALUE}. If value equals true lock relay is ON, if false OFF.

Lock relay (binary, bottom endpoint)

Locks bottom relay and prevents it from operating. Value can be found in the published state on the lock_relay_bottom property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"lock_relay_bottom": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"lock_relay_bottom": NEW_VALUE}. If value equals true lock relay is ON, if false OFF.

Multi click (binary, wireless endpoint)

Multi-click mode for wireless button. Value can be found in the published state on the multi_click_wireless property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"multi_click_wireless": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"multi_click_wireless": NEW_VALUE}. If value equals true multi click is ON, if false OFF.

Led disabled night (binary)

Enables/disables LED indicator at night. Value can be found in the published state on the led_disabled_night property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"led_disabled_night": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"led_disabled_night": NEW_VALUE}. If value equals true led disabled night is ON, if false OFF.

Flip indicator light (binary)

After turn on, the indicator light turns on while switch is off, and vice versa. Value can be found in the published state on the flip_indicator_light property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"flip_indicator_light": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"flip_indicator_light": NEW_VALUE}. If value equals ON flip indicator light is ON, if OFF OFF.

Mode switch (enum)

Anti flicker mode can be used to solve blinking issues of some lights. Quick mode makes the device respond faster.. Value can be found in the published state on the mode_switch property. To read (/get) the value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/get with payload {"mode_switch": ""}. To write (/set) a value publish a message to topic zigbee2mqtt/FRIENDLY_NAME/set with payload {"mode_switch": NEW_VALUE}. The possible values are: quick_mode, anti_flicker_mode.

Action (enum)

Triggered action (e.g. a button click). Value can be found in the published state on the action property. It's not possible to read (/get) or write (/set) this value. The possible values are: hold_top, hold_center, hold_bottom, hold_wireless, single_top, single_center, single_bottom, single_wireless, double_top, double_center, double_bottom, double_wireless, release_top, release_center, release_bottom, release_wireless.

Help to make the docu better and edit this page on Github ✌
Last Updated:: 5/7/25, 7:30 PM