Private Home Lab

Self-hosted · No cloud 

Aqara Wireless Switch E1 (WXKG15LM/WXKG16LM): Z2M + HA Guide

Pair the Aqara Wireless Switch E1 with Zigbee2MQTT, build reliable HA automations, and fix the WXKG15LM binding gotcha that hides left from right.

Aqara Wireless Switch E1 (WXKG15LM/WXKG16LM): Zigbee2MQTT and Home Assistant Guide

The Aqara Wireless Switch E1 is one of those products that’s genuinely useful once you understand its quirks, and maddening if you don’t. I’ve watched enough Home Assistant Community threads where people spend hours debugging “no actions firing” before discovering they’re in command mode on the double rocker. This guide covers both the single rocker (WXKG16LM / 无线开关 E1 单键) and the double rocker (WXKG15LM / 无线开关 E1 双键), from pairing through to automations, including the binding limitation that bites almost every WXKG15LM user at some point.

Neither variant requires an Aqara hub or neutral wire. Both are fully local via Zigbee2MQTT — no Aqara cloud involved.


What the Aqara Wireless Switch E1 is (and isn’t)

Single rocker (WXKG16LM) vs double rocker (WXKG15LM)

The WXKG16LM is a single-rocker, CR2032-powered Zigbee 3.0 button. It sticks to a wall (adhesive-backed) and exposes three actions: single, double, and hold. That’s about it. It’s a clean, well-supported device.

The WXKG15LM adds a second rocker and bumps the action count to twelve: single_left, double_left, triple_left, hold_left, single_right, double_right, triple_right, hold_right, single_both, double_both, triple_both, hold_both. That’s a lot of control surface for a battery-powered wall switch with no wiring. The twelve-action set is the headline feature in Chinese consumer communities — SMZDM (什么值得买 / what’s-worth-buying, one of the biggest Chinese consumer review platforms) reviews consistently call it out for power users building multi-scene control panels.

Both variants use the same CR2032 battery, same adhesive form factor, same pairing procedure.

Why these work without a hub or neutral wire

The E1 switches are pure Zigbee end devices. They don’t switch mains power at all — there’s no relay, no wiring terminal, no load switching. They just broadcast Zigbee events when pressed. Your Zigbee2MQTT coordinator picks them up, turns them into MQTT messages, and Home Assistant responds. The “switch” part is entirely in software.

This is important for the smart bulb use case I’ll cover later. Because the E1 never interrupts power, your smart bulbs stay powered and connected to Wi-Fi or Zigbee at all times.

One tradeoff: as Zigbee end devices, the E1 switches do not route Zigbee mesh traffic. They don’t extend your mesh. If you have a sparse coordinator-only setup or your coordinator is far from where the switch is mounted, pairing and reliability can be inconsistent. A powered Zigbee router (any always-on Zigbee plug or bulb) nearby makes a real difference. For a wider walkthrough of building out the mesh without an Aqara hub, see my Aqara Zigbee devices in Home Assistant without the Aqara hub guide.


Pairing with Zigbee2MQTT

Triggering pairing mode

Put Zigbee2MQTT into pairing mode first (interview mode in Z2M’s web UI, or permit_join: true in your config), then on the switch:

  1. Press and hold the button — or either button on the WXKG15LM — for 5 seconds until the LED starts blinking.
  2. Release.

The device is now advertising and Z2M should pick it up within 30–60 seconds.

Keeping the device awake during pairing

This is the part people miss. Battery-powered Zigbee end devices sleep aggressively to conserve power. If the switch goes to sleep mid-pairing, the coordinator loses the handshake and the device won’t appear in Z2M.

The fix. Once the LED starts blinking, press a button every 1–2 seconds throughout the pairing process. Don’t hold it — just quick presses to keep the radio awake. Keep doing this until Z2M confirms the device joined.

If pairing fails, the device needs a factory reset before trying again. Press and hold for 5 seconds until the LED flashes, then repeat the hold until it blinks a second sequence. The exact reset pattern varies slightly between firmware versions. If the first attempt doesn’t work, try holding for 10 seconds.


WXKG16LM: three actions and one configuration choice

Fast mode vs multi mode

The WXKG16LM’s click_mode setting controls how the single rocker behaves:

  • Fast mode. Only single fires, and it fires immediately on press — no delay. Use this if you only need one action from the button and want zero latency.
  • Multi mode. Enables double and hold. The trade-off is a brief delay before single fires, because the firmware waits to see if a second click follows.

Most people want multi mode for a single button. But if you’re using the switch as a pure on/off trigger and latency matters, fast is worth considering.

To change it via MQTT, publish to your device’s set topic:

mosquitto_pub -h <broker-ip> -t "zigbee2mqtt/<device-name>/set" \
  -m '{"click_mode": "multi"}'

Or change it in Z2M’s web UI under the device’s Settings tab.

You can also toggle between modes physically without MQTT. Press the rocker five times rapidly. The LED will blink to confirm the mode change. This works on the WXKG15LM too.

Building your first WXKG16LM automation

Actions from the E1 fire as device triggers, not persistent state. The sensor.device_action entity reverts to empty immediately after a press — so don’t use the entity state in your automation condition. Use the Device Trigger approach instead.

In Home Assistant’s UI, create an automation, then under Triggers choose “Device” and select the E1. The available triggers mirror the Z2M action names: single, double, hold.

In YAML:

alias: E1 single press - toggle living room light
trigger:
  - platform: device
    domain: mqtt
    device_id: <your-device-id>
    type: action
    subtype: single
action:
  - service: light.toggle
    target:
      entity_id: light.living_room

For a related single-button device with a different form factor, the Aqara Wireless Mini Switch WXKG11LM guide covers a similar action model.


WXKG15LM: twelve actions and the binding gotcha

Event mode vs command mode — pick event

This is the most important thing to know about the WXKG15LM. The device has two operation modes, and the wrong one will silently break your left/right action detection.

  • Event mode (default). The device sends the full 12-action set via MQTT. Left presses fire single_left, right presses fire single_right, both together fire single_both. You get everything.
  • Command mode. The device uses direct Zigbee binding commands. Both rockers generate the same toggle_1 endpoint event — there is no way to tell left from right.

If you try direct Zigbee binding in command mode (binding the switch directly to a Zigbee light group without going through Z2M), you’ll get one undifferentiated toggle regardless of which rocker you press. That’s by design — the binding limitation is a hardware/firmware constraint, not something Z2M or HA can work around.

The fix is to stay in event mode and route everything through Home Assistant. Check your device’s current mode in Z2M’s Exposes tab or by reading the operation_mode attribute. If it’s set to command, switch it to event:

mosquitto_pub -h <broker-ip> -t "zigbee2mqtt/<device-name>/set" \
  -m '{"operation_mode": "event"}'

One more setting worth flagging on the WXKG15LM. It has the same click_mode fast/multi option as the WXKG16LM. In fast mode, only the single_* actions fire and they fire immediately. triple_* and hold_* only fire in multi mode. If you’ve configured event mode but still don’t see triple or hold actions, check click_mode too.

The Z2M WXKG15LM community reached the event-mode consensus after a lot of debugging. The blueprint thread that appears in the SERP for the older H1 double-rocker contains useful notes on this pattern, but the H1 is a different model — some of the action naming doesn’t transfer directly.

Left, right, and both: twelve triggers for flexible control

In event mode (and multi click mode), all twelve action types are available as device triggers in Home Assistant. A practical three-scene setup with a single WXKG15LM:

Rocker press Action Home Assistant trigger
Left single Scene: dim for movie single_left
Left double Scene: reading light double_left
Right single Toggle main lights single_right
Right double All lights off double_right
Both single Scene: full brightness single_both

That’s five distinct controls from one battery-powered switch on a wall — no wiring, no neutral, no hub.

For YAML, the pattern is the same as the WXKG16LM above, just with the appropriate subtype:

alias: E1 left single - dim for movie
trigger:
  - platform: device
    domain: mqtt
    device_id: <your-device-id>
    type: action
    subtype: single_left
action:
  - service: scene.turn_on
    target:
      entity_id: scene.movie_mode

The Z2M 25650 issue — worth knowing if you upgraded recently

GitHub issue #25650 (opened January 2025) documented WXKG15LM units stopping all action delivery after a Z2M update. The root cause was a firmware-side change in how the device formatted action event payloads — Z2M’s parser didn’t recognize the new format. A subsequent Z2M patch resolved it. If you upgraded Z2M and your WXKG15LM went silent, checking your Z2M version against that issue is the first thing to do. Downgrading or updating Z2M resolved the problem for most affected users.


Practical use case: wireless control of smart lights without cutting power

This is the use case that drove the V2EX discussion about the E1, and it’s the right way to use any wireless Zigbee switch with smart bulbs.

The core problem the E1 solves

If you have smart bulbs (Wi-Fi or Zigbee) and a conventional wall switch, pressing the wall switch cuts power to the bulb. The bulb loses its connection and can’t receive any further commands until someone turns physical power back on. You’re stuck.

The Chinese community term for the solution is 无线模式 (wireless mode) — though it’s less a mode and more an architectural pattern. The wall switch never controls power physically. The smart bulb stays powered constantly. The wall switch only sends software events to Home Assistant, which then toggles the bulb via its own integration.

The WXKG15LM and WXKG16LM are designed exactly for this. There’s no wiring terminal — they can’t cut power even if you wanted them to. You stick them on the wall next to an existing light switch (or where a switch would naturally go), and they fire MQTT events.

Automation structure

The full chain for wireless smart bulb control:

  1. E1 switch pressed
  2. Zigbee2MQTT receives the action event
  3. MQTT message arrives in Home Assistant
  4. HA automation triggers, calls light.toggle (or a scene)
  5. HA sends the command to the bulb via its own integration (Zigbee2MQTT if it’s a Zigbee bulb, or a Wi-Fi integration like Xiaomi Mi Home local API if it’s a Mi bulb)

Everything in that chain runs locally on your home network — no Aqara cloud, no Mi Home cloud, no internet dependency. This is a common setup in Chinese mixed-brand smart home setups. Aqara Zigbee switches alongside Mi Home Wi-Fi lights, glued together by Home Assistant.

A basic automation for this:

alias: E1 wireless - toggle hallway light
trigger:
  - platform: device
    domain: mqtt
    device_id: <e1-device-id>
    type: action
    subtype: single
action:
  - service: light.toggle
    target:
      entity_id: light.hallway
mode: single

The mode: single prevents the automation from queuing multiple executions if someone presses repeatedly before the first command completes.


Troubleshooting: device paired but no actions firing

If your E1 switch appears in Z2M but pressing buttons produces no actions, work through this in order.

1. Check operation mode (WXKG15LM specifically)
Read the device’s operation_mode. If it’s command, switch it to event. This is the most common cause of silent double-rocker switches.

2. Check click mode
If you’re on the WXKG16LM and expect double or hold but they’re not firing, the switch may be in fast mode. Verify click_mode in Z2M and set it to multi. The same applies to the WXKG15LM if triple_* or hold_* actions are missing.

3. Don’t use entity state in automations
The action entity reverts to empty immediately after firing. If your automation triggers on the entity’s state changing to single, it may never catch it. Use Device Triggers instead.

4. Check your Z2M version
If you upgraded Z2M and actions stopped working on a WXKG15LM, check against issue #25650. The fix is in a Z2M patch from early 2025 — updating Z2M should resolve it.

5. Signal strength
The E1 is an end device — it doesn’t mesh. If linkquality in Z2M is below 50–60 LQI, the device is likely dropping messages. Add a Zigbee router between the coordinator and the switch’s location.

6. Factory reset and re-pair
If the device is behaving erratically — intermittent actions, inconsistent responses — a factory reset clears any stuck state. Hold for 5 seconds until the LED blinks, then re-pair from scratch.


Battery reporting delay

Don’t expect the battery sensor to show a value right after pairing. The Zigbee battery reporting cluster on these devices defers the first report — it can take up to 24 hours before a battery level appears in Home Assistant. That’s normal. The switch works fine during this window. It’s just the reporting that’s deferred.


Both the WXKG15LM and WXKG16LM are among the more reliable Aqara battery devices in Z2M once the initial configuration is correct. The event/command mode distinction on the WXKG15LM is the only non-obvious step — everything else is standard Zigbee end device behavior. If you’re building a mixed-brand setup with smart bulbs and want wireless control without touching wiring, these are a solid choice.


Frequently asked questions

Does the Aqara E1 wireless switch work with Zigbee2MQTT without an Aqara hub?
Yes. Both the WXKG15LM and WXKG16LM pair directly with any Zigbee2MQTT coordinator. No Aqara hub, no Aqara cloud account required.

How do I get left and right button actions from the Aqara WXKG15LM in Home Assistant?
Set the device’s operation_mode to event in Zigbee2MQTT. In command mode, both rockers generate the same undifferentiated toggle — event mode is the only way to get the full 12-action set with left/right distinction.

Why isn’t my Aqara E1 switch sending any actions in Home Assistant?
Most common causes: WXKG15LM in command mode, WXKG16LM (or WXKG15LM) in fast click mode when you expect double/triple/hold actions, or automations using entity state instead of Device Triggers. Work through the troubleshooting section above.

What is the difference between command mode and event mode on the WXKG15LM?
Event mode sends MQTT action events through Zigbee2MQTT with left/right/both distinction across all 12 action types. Command mode uses direct Zigbee binding but collapses both rockers into a single undifferentiated toggle — you lose the ability to tell left from right.

Can I use the Aqara E1 wireless switch to control smart lights without cutting power to the bulb?
Yes, and this is the recommended pattern. The E1 has no wiring terminals and never interrupts power physically. Mount it on the wall, pair it with Zigbee2MQTT, and build a Home Assistant automation to toggle the light via its own integration. The bulb stays powered and connected at all times.

.
On this page
.

Read Next

If you found this useful, try these.