TapHome

Moes Smart Switch

Packet Parser → MQTT
Submitted by
Last updated: 03. 2026

Requires external gateway

tasmota zigbee2tasmota-gateway — product page

Moes Smart Switch

This device communicates via Zigbee through a Tasmota gateway. Make sure you have the Zigbee2Tasmota Gateway template imported and your device paired before proceeding.

The Moes Smart Switch (ZTS-EU series) is a Zigbee wall-mounted touch switch with a glass panel, designed for EU-style installation. TapHome controls it over MQTT through the Zigbee2Tasmota gateway, providing on/off switching for connected loads.

Moes is part of the Tuya ecosystem — the switch uses a Tuya TS0601 chipset and is available from moeshouse.com and Aliexpress. The ZTS-EU series comes in 1, 2, and 3 gang variants; this template supports the 1-gang model.

As a mains-powered device, the switch acts as a Zigbee router — it strengthens the Zigbee mesh network and extends range for nearby battery-powered devices.

Configuration

Pairing the switch
  1. Ensure the Zigbee2Tasmota Gateway is set up and the Permit Join switch is ON in TapHome
  2. Hold the touch button for 10+ seconds (or toggle the physical switch 5 times quickly) until the indicator LED blinks rapidly
  3. The switch enters pairing mode — the LED blinks to confirm
  4. Note the Device ID (e.g., 0x1234) from the gateway’s service attributes
Template import parameters

The device template requires 4 parameters:

ParameterDescriptionExample
MQTT Broker IP AddressIP of your MQTT broker192.168.1.10
MQTT Broker PortBroker port (default 1883)1883
Gateway nameTasmota MQTT topic (same as gateway template)tasmota_XXXXX
Device IDZigbee short address from pairing0x1234

After import, a single Switch device appears in TapHome for on/off control.

Device capabilities

Switch control

The template creates one Switch device that reads and writes the Power field:

  • Read: The module listens on the tele/{GWname}/SENSOR topic for ZbReceived.{ID}.Power messages. When you press the physical touch button, the switch publishes its new state.
  • Write: TapHome sends a ZbSend command with Power: true (ON) or Power: false (OFF) to control the relay remotely.

The switch responds to both physical touches and TapHome commands, and TapHome always reflects the current state — regardless of how the switch was toggled.

Service attributes

The module exposes diagnostic information via service attributes:

  • IEEE Address — Zigbee IEEE address (64-bit unique identifier)
  • Model ID — Zigbee model identifier (typically TS0601)
  • Manufacturer — Zigbee manufacturer string
  • Endpoints — active Zigbee endpoints
  • Config — device configuration string
Additional capabilities

The Moes ZTS-EU also supports indicator light mode control (off, follows switch state, shows position, freeze) and power-on behavior configuration (off, on, previous state). These features are available in Zigbee2MQTT but are not currently mapped in the TapHome template.

Troubleshooting

Switch not responding to TapHome commands
  1. Verify the Device ID in the template matches the Zigbee short address assigned during pairing
  2. Check that the gateway name matches between the gateway template and this device template
  3. Test the physical touch button — if it toggles the relay but TapHome does not update, the read path (SENSOR topic) may have an issue
  4. Check the Tasmota console for ZbReceived messages when toggling the switch
Switch state out of sync
  1. If the switch shows a different state in TapHome than the actual relay position, press the physical button to trigger a state report
  2. The template does not actively poll the switch state — it relies on the device reporting changes. If the switch loses connectivity briefly, the state may become stale until the next physical toggle
Indicator LED behavior

The indicator LED on the switch panel is controlled by the Tuya firmware. By default, it may follow the switch state or stay off. The TapHome template does not control the indicator — use Zigbee2MQTT or the Tuya app to change the indicator mode if needed.

How to install in TapHome

Prerequisites

  • Zigbee gateway with Tasmota firmware (e.g., Sonoff ZBBridge, eWeLink ZB-GW03)
  • MQTT broker running on your local network (TapHome built-in broker or external)
  • TapHome CCU on the same network

TapHome has a built-in MQTT broker — enable it in SettingsHardwareMQTT Broker. No additional software is needed.

Step 1 — Set Up the Tasmota Zigbee Gateway

  1. Flash Tasmota firmware on a supported Zigbee coordinator (e.g., Sonoff ZBBridge, eWeLink ZB-GW03)
  2. Connect the gateway to your Wi-Fi network via the Tasmota web UI
  3. Navigate to ConfigurationConfigure MQTT and set:
    • Host: your MQTT broker IP (e.g., 192.168.1.10)
    • Port: 1883
    • Topic: note down the topic name (e.g., tasmota_XXXXX) — you will need it during template import

For detailed instructions, see the Tasmota Zigbee documentation.

Step 2 — Import the Gateway Template in TapHome

  1. Download the gateway template from the Zigbee2Tasmota Gateway compatibility page
  2. In TapHome, go to SettingsHardwarePacket ParserImport
  3. Import the template with these parameters:
    • MQTT Broker IP Address: your broker IP (e.g., 192.168.1.10)
    • MQTT Broker Port: 1883
    • Gateway name: the Tasmota MQTT topic from Step 1 (e.g., tasmota_XXXXX)

After import, you will see two devices: Permit Join (switch) and Devices Found (counter).

Step 3 — Pair a Zigbee Device

  1. In TapHome, turn on the Permit Join switch — this opens a 60-second pairing window
  2. On the Zigbee device, start the pairing procedure (typically hold the reset button for 5 seconds until the LED blinks)
  3. Watch the Devices Found counter — it increments when a new device joins
  4. Check the Service Attributes of the gateway to see the new device’s ID (e.g., 0x1234), manufacturer, and model
  5. The pairing mode deactivates automatically after the timeout

Step 4 — Import the Device Template

  1. Download the device-specific template from the corresponding compatibility page
  2. Import the template with these parameters:
    • MQTT Broker IP Address: same as the gateway
    • MQTT Broker Port: 1883
    • Gateway name: same Tasmota MQTT topic as above
    • Device ID: the short address from pairing (e.g., 0x1234)

Available devices

Moes Smart Switch Module
Service Attributes
IEEE AddressZigbee IEEE address (64-bit unique identifier)
Model IDZigbee model identifier reported by the device
ManufacturerZigbee manufacturer string reported by the device
EndpointsActive Zigbee endpoints on the device
ConfigZigbee device configuration string
Custom Variables
GWname (string)Tasmota MQTT topic name of the Zigbee gateway (found in Configuration → MQTT → Topic)
ID (string)Zigbee short address of the Moes Smart Switch (assigned during pairing)
After pairing the device via Permit Join, find the device short address in the gateway's Devices Found service attribute or via Tasmota console command ZbStatus

Moes - Smart Switch

Listener
if INDEXOF(RECEIVEDMSG.Topic, "SENSOR") > 0
	var ZbReceived := PARSEJSON(TOSTRING(RECEIVEDMSG.Payload), "ZbReceived." + ID, true);
    var val := PARSEJSON(ZbReceived, ".LinkQuality", true);
    if(!ISNULL(val), LinkQuality := val);
    
    var deviceInfo := PARSEJSON(TOSTRING(RECEIVEDMSG.Payload), "ZbInfo." + ID, true);
    if !ISNULL(deviceInfo)
        COMPLETESERVICEATTRIBUTE("IEEEAddr", PARSEJSON(deviceInfo, "IEEEAddr"));
        COMPLETESERVICEATTRIBUTE("ModelId", PARSEJSON(deviceInfo, "ModelId"));
        COMPLETESERVICEATTRIBUTE("Manufacturer", PARSEJSON(deviceInfo, "Manufacturer"));
        COMPLETESERVICEATTRIBUTE("Endpoints", PARSEJSON(deviceInfo, "Endpoints"));
        COMPLETESERVICEATTRIBUTE("Config", PARSEJSON(deviceInfo, "Config"));
    end
end
Service Attributes
IEEEAddr
MQTTPUBLISH("cmnd/" + GWname+ "/ZbInfo", ID)
ModelId
Manufacturer
Endpoints
Config
Switch Switch

On/off relay controlled via ZbSend Power command

boolean
Values / States: ON · OFF

Switch

Write switch state
MQTTPUBLISH("cmnd/" + GWname+ "/ZbSend", 
    "{\"device\":\" " + ID + 
    "\",\"send\":{\"Power\":" + St + "}}")
Listener
VAR json := tostring(RECEIVEDMSG.Payload);
VAR topic := RECEIVEDMSG.Topic;

if INDEXOF(topic, "SENSOR") > 0
    var val := PARSEJSON(json, "ZbReceived." + ID + ".Power", true);
    if(!ISNULL(val), St := val);
end
Connection: Packet Parser → MQTT
Possible improvements (2)
  • Indicator Light — Controls LED indicator mode: off, switch (follows switch state), position (shows position), freeze
  • Power On Behavior — Controls state after power outage: off, on, previous

Sources