Home Home Automation Zemismart Zigbee switch

Zemismart Zigbee switch

Zigbee is getting more attention

Good home automation is about tailoring solutions to individual needs. This rings true for lights. A smart bulb might be the easiest option, but often far from perfect. In my previous article, I focused on wall switches, this time around I want to talk about reusing existing lights and wall switches thanks to a simple Zemismart Zigbee switch. What sets it apart from Sonoff Mini (review), Shelly 1 (review) and this unbranded one (review) – is the ZigBee protocol.

Going ZigBee – a smart move?

In case you didn’t get the memo, Apple and Google joined the ZigBee alliance, indicating the direction in which home automation will continue moving forward. For once, I’m glad as thanks to a unified protocol, mixing and matching hardware becomes easier. ZigBee protocol is still fragmented, but given enough time, a unified API should emerge and devices made by various brands would become more compatible with each other.

Zemismart seems to be ahead of that thinking. They sent me a couple of Zemismart Zigbee switches (ZW-EU-02) that are made for 2 gang lights and wall switches. While designed for the likes of SmartThings, compatible with Tuya ZigBee kit (review), these will fit very nicely into my ZigBee2MQTT enabled, NodeRED based, home automation server.

Enclosed in a plastic shell, Zemismart Zigbee switch is slightly bigger than Sonoff Mini, measuring 55x50x22mm. It requires Live & Neutral wire to work, therefore ceiling fitting would be a preferred place to mount it at. Wiring is straight forward, as long as you remember that switch connectors use 3.3V logic (don’t use mains) and they are listed in GND, S2, S1 order (left to right). The device is rated for 300W which isn’t enough to run a decent PC, but these switches are for lights and if you are packing more than 300W per gang, you have bigger problems!

Please be careful with these switches. The mains terminal screws are exposed and it’s possible to get an electric shock while handling these. I remedied this with a piece of electrical tape to cover up the screws, but only after I got shocked on a live stream.

The switch could use one more terminal for neutral wire, otherwise wago-styled clips must be used to connect all wires inside the ceiling fitting.

On the inside

A bit of digging inside reveals an EFR32 Gecko IC responsible for handing ZigBee signals. Unfortunately due to module design, I had to desolder the connectivity board to take a peek inside. Don’t recommend doing that, as pads are fragile. 11 Pins are exposed and additional 4 dev pads are present to talk to the chipset itself. EFR32 serves also as a router in ZigBee mesh so it’s a great device to expand the network even more. This is the same chip that had been used on Sonoff ZigBee Bridge (review), that had been recently hacked with Tasmota (hacking guide).

Tuya and eWeLink?

Fortunately, no hardware hacking is needed. Zemismart Zigbee switch pairs instantly (hold 2 buttons for 10 sec) with Tuya Zigbee hub (review), but what’s even more interesting, I was able to pair it with eWeLink and Sonoff ZigBee Bridge – I also know why! A 2 gang switch with ZigBee protocol will launch soon! Unfortunately, Zemismart Zigbee switch isn’t playing nice with Sonoff just yet!


Tuya app works flawlessly and the switch indeed shows up correctly as a 2 gang wall switch. It’s responsive and it comes with all associated bells and whistles or the app. These bells include integrations with Google Assistant and Alexa ecosystems, timers and schedules and Tuya’s automation panel. Just rename the individual gangs so you can use these correctly with smart speakers.

Advanced options in the app allow to group individual gangs with other lights sources. It’s a great add on if you have more than 2 lights in the room. You can trigger selected lights with a physical switch rather than a scene.

Make it mine!

The next step was to connect Zemismart Zigbee switch with NodeRED running Zigbee2MQTT. This is where I run into the first snag. The switch was not supported by default. I had to refer to my writeup on how to add unsupported devices to Zigbee2MQTT. If you want to follow the process, take a look this live stream, or read the guide linked above and add the following device to your devices.js file:

    zigbeeModel: ['LXN59-2S7LX1.0'], 
    model: 'LXN59-2S7LX1.0', 
    vendor: 'BENEXMART', 
    description: '2 gang switch netural, 3.3V switch logic', 
    supports: 'ON/OFF, 2 GANG',
    fromZigbee: [fz.on_off],
        toZigbee: [tz.on_off],
        endpoint: (device) => {
            return {'left': 1, 'right': 2};
        meta: {configureKey: 3, multiEndpoint: true},
        configure: async (device, coordinatorEndpoint) => {
            await bind(device.getEndpoint(1), coordinatorEndpoint, ['genOnOff']);
            await bind(device.getEndpoint(2), coordinatorEndpoint, ['genOnOff']);

After sudo systemctl stop|start zigbee2mqtt you will see the correct payloads flooding in. After listening to zigbee2mqtt/device_name you will notice payload looking like this:


Both gangs are listed as state_lx – note this as to control the switch you will need to use the following command structure:

// get current state
topic: zigbee2mqtt/device_name/get
payload: {"state": ""}  

//control relay 1  (ON)
topic: zigbee2mqtt/switch2/left/set
payload: {"state_left": "ON"}

//control relay l2  (OFF)
topic: zigbee2mqtt/switch2/right/set
payload: {"state_right": "OFF"}

That’s simple enough. If you want to link the switch with Alexa and Google Assistant, I would recommend you Alexa integration and Google Assistant integration articles. If you want to try the sample flow – use the JSON below. Just remember to edit your ZigBee2MQTT device!

Sample NodeRED flow
[{"id":"782bb442.2ddf7c","type":"group","z":"cc6a049c.54ef68","name":"Control","style":{"stroke":"#ffC000","fill":"#ffdf7f","label":true,"label-position":"n","color":"#000000"},"nodes":["21810bd5.4a9064","a1fbdbe1.0de008","763270c3.b8a4f","656d2285.5919bc","85194b53.99ea08"],"x":165,"y":290,"w":670,"h":240},{"id":"21810bd5.4a9064","type":"mqtt out","z":"cc6a049c.54ef68","g":"782bb442.2ddf7c","name":"Zemismart Zigbee Switch","topic":"","qos":"","retain":"","broker":"6e117ba5.8026e4","x":690,"y":400,"wires":[]},{"id":"a1fbdbe1.0de008","type":"inject","z":"cc6a049c.54ef68","g":"782bb442.2ddf7c","name":"Gang one (on)","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"zigbee2mqtt/switch2/left/set","payload":"{ \"state_left\": \"ON\"}","payloadType":"json","x":290,"y":340,"wires":[["21810bd5.4a9064"]]},{"id":"763270c3.b8a4f","type":"inject","z":"cc6a049c.54ef68","g":"782bb442.2ddf7c","name":"Gang one (off)","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"zigbee2mqtt/switch2/left/set","payload":"{ \"state_left\": \"OFF\"}","payloadType":"json","x":290,"y":380,"wires":[["21810bd5.4a9064"]]},{"id":"656d2285.5919bc","type":"inject","z":"cc6a049c.54ef68","g":"782bb442.2ddf7c","name":"Gang two (on)","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"zigbee2mqtt/switch2/right/set","payload":"{ \"state_right\": \"ON\"}","payloadType":"json","x":290,"y":440,"wires":[["21810bd5.4a9064"]]},{"id":"85194b53.99ea08","type":"inject","z":"cc6a049c.54ef68","g":"782bb442.2ddf7c","name":"Gang two (off)","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"zigbee2mqtt/switch2/right/set","payload":"{ \"state_right\": \"OFF\"}","payloadType":"json","x":290,"y":480,"wires":[["21810bd5.4a9064"]]},{"id":"6e117ba5.8026e4","type":"mqtt-broker","z":"","name":"MQTT","broker":"automation.local","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""},{"id":"df690484.e3a6d8","type":"group","z":"cc6a049c.54ef68","name":"State","style":{"stroke":"#777777","fill":"#c8e7a7","label":true,"label-position":"n","color":"#000000"},"nodes":["5f87a69e.04b778","d80b8b48.f407d8","2f67f6e7.784efa","2f0e2bbd.5d3144"],"x":165,"y":90,"w":630,"h":160},{"id":"5f87a69e.04b778","type":"mqtt in","z":"cc6a049c.54ef68","g":"df690484.e3a6d8","name":"Zemismart Zigbee Switch","topic":"zigbee2mqtt/switch2","qos":"2","datatype":"json","broker":"6e117ba5.8026e4","x":310,"y":140,"wires":[["2f67f6e7.784efa"]]},{"id":"d80b8b48.f407d8","type":"inject","z":"cc6a049c.54ef68","g":"df690484.e3a6d8","name":"Get State","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"zigbee2mqtt/switch2/get","payload":"{   \"state\": \"\" }","payloadType":"json","x":280,"y":200,"wires":[["2f0e2bbd.5d3144"]]},{"id":"2f67f6e7.784efa","type":"debug","z":"cc6a049c.54ef68","g":"df690484.e3a6d8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":610,"y":140,"wires":[]},{"id":"2f0e2bbd.5d3144","type":"mqtt out","z":"cc6a049c.54ef68","g":"df690484.e3a6d8","name":"Zemismart Zigbee Switch","topic":"","qos":"","retain":"","broker":"6e117ba5.8026e4","x":650,"y":200,"wires":[]}]

Buy Zemismart ZigBee switch

Buy it using these links to support NotEnoughTech.

Final thoughts

Other than the shockingly short shrouds around terminals, I don’t see any problems with Zemismart Zigbee switches. Secure the terminals to get extra assurance and you can bag yourself fairly inexpensive ZigBee switches. You can grab these on AliExpress for around $13-15. There isn’t much competition in this field just yet. I’m awaiting my Sonoff Mini ZigBee edition – I will be posting soon about it as well! Let me know what do you think about these in this Reddit thread.


Nothing says "Thank you" better than keeping my coffee jar topped up!


Support me on Patreon and get an early access to tutorial files and videos.


Bitcoin (BTC)

Use this QR to keep me caffeinated with BTC: 1FwFqqh71mUTENcRe9q4s9AWFgoc8BA9ZU

Smart Ideas with

Automate your space in with these ecosystems and integrate it with other automation services

Learn NodeRED

NodeRED for beginners: 1. Why do you need a NodeRED server?

To server or not to server? That's a very silly question!

Best Automation Projects

Sonoff R3 DIY mode & why it sucks

Long awaited Sonoff R3 DIY mode is even worse than I expected.

NEST your old thermostat under $5

Nest-ing up your older thermostat under $5

IKEA TRADFRI Wireless dimmer in NodeRED

Thanks to NodeRED you can use IKEA TRADFRI Wireless Dimmer to interact with everything

Alexa and NodeRED integration

Hey Alexa, turn the lights on!

Smart Home

M5Paper – the “Kindle” of development and automation

M5Paper combines a brilliant multitouch e-ink display with power of ESP32 to create the most unique programming board

A seriously connected relay! Netio 4PZ

Netio 4PZ could be called a jack of all trades, as it brings multiple functions to a single device. I'm sure some of you will be quick to point out that it doesn't have PoE or it doesn't make your morning toasts. You might...

Strip time! Sonoff L1 Lite RGB LED

New product from ITEAD - Sonoff L1 Lite - budget friendly connected RGB LED strip with a microphone

DIY Smart Heating v3.0

Anyone looking for Smart Heating in 2021 is spoiled for choice, providing money isn't an issue. My home has 30-year-old heating installed, but that didn't stop me from adding "smart" component to it for less than $5. In 3 years time, I had a...

A comprehensive guide to Grafana & InfluxDB

How to use Grafana and InfluxDB on Raspberry Pi for IoT sensors in home automation