Private Home Lab

Self-hosted · No cloud 

Aqara D1 Double Wall Switch (No Neutral) in Home Assistant via Zigbee2MQTT

Set up the Aqara D1 double rocker QBKG22LM in Home Assistant via Zigbee2MQTT — no Aqara hub needed. Covers pairing, decoupled mode, and LED compatibility.

Aqara D1 Double Wall Switch (No Neutral) in Home Assistant via Zigbee2MQTT

If you’ve already wired a double-rocker switch position and don’t have a neutral wire at the back box, the Aqara D1 QBKG22LM is one of the few Zigbee wall switches that handles it. It works with Home Assistant through Zigbee2MQTT without any Aqara hub in the loop — but there are a few things the device page doesn’t spell out, specifically around decoupled mode and minimum load requirements. This guide covers all of it.

If you’re new to running Aqara hardware without the vendor bridge, start with the general guide to Aqara Zigbee devices in Home Assistant without a hub.

A note before you open the wall: installing a no-neutral switch means working with live mains wiring. Cut power at the breaker before you touch the back box, and if you’re not confident identifying live and switched-line conductors, have a qualified electrician do the install. The Zigbee side of this guide is the easy part.


What you will get after pairing

Once the QBKG22LM is paired with Zigbee2MQTT, Home Assistant gets the following entities:

  • switch.left — ON/OFF control for the left relay
  • switch.right — ON/OFF control for the right relay
  • select.operation_mode_left — sets whether the left button controls its relay or fires a Zigbee event
  • select.operation_mode_right — same, for the right button
  • event.action — fires single, double, and hold events per button

The two relay entities are independent. Toggling left doesn’t touch right. That seems obvious, but some multi-gang switches expose only one entity per device, which limits what you can do in automations. The D1 doesn’t have that problem.

The Zigbee model ID is lumi.switch.b2lacn02 — that’s what shows up in your Z2M device list if you’re confirming the pairing succeeded.


Requirements

  • A Zigbee coordinator running Zigbee2MQTT (SONOFF Zigbee 3.0 USB Dongle Plus or equivalent)
  • Zigbee2MQTT 1.33 or later (as of writing — the QBKG22LM device definition has been stable for some time)
  • Home Assistant with the Zigbee2MQTT add-on or a standalone Z2M install
  • No Aqara hub needed — see the hub-free Aqara setup guide if you haven’t built the Z2M side yet

If you’re deciding between Zigbee2MQTT and ZHA for Aqara devices, I’ve written about the tradeoffs in a separate ZHA vs Zigbee2MQTT comparison. For this switch, Z2M gives you the cleaner operation_mode controls.


Pairing the QBKG22LM with Zigbee2MQTT

Put Zigbee2MQTT into pairing mode, then at the switch:

  1. Press and hold the left button for approximately 10 seconds.
  2. The indicator light will blink three times, then join the network.
  3. Z2M will report the device as lumi.switch.b2lacn02 — confirm and assign a friendly name.

One thing I ran into the first time: if the switch blinks once and stops rather than three times, it’s rejoining a previously paired network rather than entering fresh pairing. Reset it by holding both buttons simultaneously until the indicator pulses rapidly, then retry the pairing sequence.


Configuring per-button operation mode

This is the part that matters most if you’re doing anything beyond basic on/off switching.

Each button has its own operation_mode selector. The options are:

  • control_left_relay — the button toggles the left relay regardless of which button you pressed
  • control_right_relay — the button toggles the right relay regardless of which button you pressed
  • decoupled — the button sends a Zigbee action event to HA and does nothing to either relay

The default is each button controlling its own relay (left button → left relay, right button → right relay). For most light switch use cases that’s fine as-is.

Standard mode

In standard mode, pressing a button physically toggles the corresponding relay. Home Assistant sees the state change on the switch entity. This is the expected behavior for controlling dumb lights — the relay cuts or restores the load.

Decoupled mode

Decoupled mode is where this switch earns its keep. When a button is set to decoupled, pressing it no longer changes relay state. Instead, it fires an action event in Home Assistant that you can trigger automations from. The relay stays exactly where it was.

The canonical use case: Zigbee smart bulbs. If a Zigbee bulb is wired through this switch’s relay, cutting the relay kills the bulb’s power and drops it off the mesh. Setting the button to decoupled keeps the relay permanently on (bulbs always have power), and your button presses drive bulb automations instead.

You set this per-button from the Home Assistant device card for the switch — expand the controls, find Operation mode left or Operation mode right, and change the selector.


Building automations with action events

The action entity exposes the per-button events:

  • single_left, double_left, hold_left
  • single_right, double_right, hold_right

Some Z2M versions also expose combination events for pressing both rockers at once — single_both, double_both, hold_both — but these have been inconsistent across releases (they broke on a sibling Aqara switch in Z2M 2.0.0; see GitHub issue #25560). If you want to build automations on the “both” gesture, confirm the events actually appear in your device’s Exposes tab before relying on them. The single-button events are the dependable ones.

A basic automation trigger using the action event:

trigger:
  - platform: device
    domain: mqtt
    device_id: <your_device_id>
    type: action
    subtype: single_left

Or via MQTT directly on zigbee2mqtt/<friendly_name>/action.

Two things worth knowing before you build automations on this device:

First, the Z2M device definition exposes a deprecated click event. Do not use it in new automations. The action event is the current interface, and click may be removed in a future Z2M release. (You can disable the legacy event by setting legacy: false for this device in configuration.yaml.)

Second, do not enable the debounce option in your Zigbee2MQTT device configuration for this switch. Debounce is intended to suppress rapid repeated events, but on the QBKG22LM it also suppresses single and hold_release action events — which means decoupled-mode automations that rely on single-press or hold-release will silently stop working. Leave debounce off. (This is called out directly on the Z2M device page.)


Why this switch won’t extend your Zigbee mesh

The QBKG22LM is a Zigbee end-device, not a router. That means it consumes messages from the mesh but doesn’t repeat them for other devices.

This follows from the no-neutral circuit topology. Without a neutral wire, the switch draws its operating power as a small trickle current through the load — always passing a tiny amount of current through the connected light even when the relay is “off.” That trickle is enough to power the Zigbee radio, but the device is configured as an end-device rather than a mains-powered router. The with-neutral variant (QBKG24LM) doesn’t have this constraint and routes normally.

For mesh planning: don’t rely on this switch to extend Zigbee coverage to devices on the other side of a wall. Place mains-powered Zigbee routers (plug-in devices or the with-neutral switches) if you need to fill range gaps.


Minimum load and LED compatibility

No-neutral switches need a minimum load — typically in the 3–5 W range for this class of device — to maintain the trickle current that powers the radio. When the load is below that threshold, two things can go wrong: the light may flicker at low brightness, or the switch may fail to maintain a stable Zigbee connection.

Modern LED bulbs are the typical culprit. A single 5W LED might clear the minimum; a single 2W nightlight-style bulb often won’t.

If you’re wiring the QBKG22LM to control LED loads that are borderline, you have a few options:

  • Add an LED-compatible bypass capacitor inline (some brands sell these for exactly this purpose)
  • Use decoupled mode: set the relay permanently on and drive smart bulbs with action events instead. No relay switching means the minimum load constraint doesn’t matter in daily use.

Honestly, if you’re putting smart bulbs on this switch, decoupled mode is the right answer regardless of load concerns — it keeps the bulbs always-powered and avoids the minimum load issue entirely.


QBKG22LM vs QBKG21LM: which to buy?

The QBKG21LM is the single-rocker version. Both are no-neutral, both are Zigbee end-devices, both support decoupled mode on their button(s). The only meaningful differences:

QBKG21LM (single) QBKG22LM (double)
Buttons 1 2
Relays 1 2
Power monitoring No No
Zigbee role End-device End-device

Buy the QBKG22LM if you have a two-gang back box or want independent control of two lighting circuits from one switch position. Buy the QBKG21LM if you only need one gang.

The with-neutral double-rocker is the QBKG24LM (lumi.switch.b2nacn02) — it adds power monitoring and Zigbee routing. If your wiring has a neutral and you want those features, that’s the version to consider.


One alternative if you want the hub route

If you’d prefer to run this switch through an Aqara hub rather than Zigbee2MQTT, the M2 hub supports it and adds HomeKit bridging. I’ve covered that path in the Aqara Hub M2 + Home Assistant via HomeKit Controller guide. The tradeoff is cloud dependency for initial setup versus the fully local operation you get with Z2M.


The double-rocker QBKG22LM is a well-supported device in Zigbee2MQTT — the main thing to get right upfront is the operation_mode configuration per button. Once that’s set, and assuming you’ve left debounce off, it reliably fires action events for automations. Whether Aqara ever adds power monitoring to the no-neutral line is an open question; for now, that remains one feature the QBKG24LM has that this variant doesn’t.

.
On this page
.

Read Next

If you found this useful, try these.