[RE-RELEASE] Moes ZigBee Wall Switch 1/2/3-Gang (Tuya TS0601 Switches)

Thanks for the quick turnaround! It's still not working, unfortunately. I'm seeing the following warning, even if I don't touch the switch:

dev:692025-11-28 12:25:07.901 PM warn
parseMoesStarFeatherSwitch: unprocessed descMap = [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 24 01 DF00, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:24, direction:01, data:[DF, 00]]
dev:692025-11-28 12:25:07.896 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 24 01 DF00, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:24, direction:01, data:[DF, 00]]
dev:692025-11-28 12:25:07.890 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 24 01 DF00

And here the new logs when pressing the switches:

Top switch ON

dev:692025-11-28 12:24:42.182 PM debug
Parent Switch OFF
dev:702025-11-28 12:24:42.178 PM info
Child switch 1 is on
dev:692025-11-28 12:24:42.173 PM trace
processStarFeatherDP: dp=24 dp_id=1 fncmd=1 dp_len=0
dev:692025-11-28 12:24:42.170 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00D01801000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, D0, 18, 01, 00, 01, 01]]
dev:692025-11-28 12:24:42.166 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00D01801000101
dev:692025-11-28 12:24:42.142 PM info
Gang #1 countdown timer is 0 seconds
dev:692025-11-28 12:24:42.139 PM debug
Gang #1 countdown timer is 0 seconds
dev:692025-11-28 12:24:42.136 PM trace
processStarFeatherDP: dp=30 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-28 12:24:42.134 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00CF1E02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, CF, 1E, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-28 12:24:42.130 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00CF1E02000400000000

Top switch OFF

dev:692025-11-28 12:24:59.113 PM debug
Parent Switch ON
dev:702025-11-28 12:24:59.105 PM info
Child switch 1 is off
dev:692025-11-28 12:24:59.097 PM trace
processStarFeatherDP: dp=24 dp_id=1 fncmd=0 dp_len=0
dev:692025-11-28 12:24:59.094 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00DA1801000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, DA, 18, 01, 00, 01, 00]]
dev:692025-11-28 12:24:59.091 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00DA1801000100
dev:692025-11-28 12:24:59.075 PM info
Gang #1 countdown timer is 0 seconds
dev:692025-11-28 12:24:59.072 PM debug
Gang #1 countdown timer is 0 seconds
dev:692025-11-28 12:24:59.068 PM trace
processStarFeatherDP: dp=30 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-28 12:24:59.063 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00D91E02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, D9, 1E, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-28 12:24:59.058 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00D91E02000400000000

Bottom switch ON

dev:692025-11-28 12:26:04.654 PM debug
Parent Switch OFF
dev:712025-11-28 12:26:04.646 PM info
Child switch 2 is on
dev:692025-11-28 12:26:04.639 PM trace
processStarFeatherDP: dp=25 dp_id=1 fncmd=1 dp_len=0
dev:692025-11-28 12:26:04.635 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00FD1901000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, FD, 19, 01, 00, 01, 01]]
dev:692025-11-28 12:26:04.630 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00FD1901000101
dev:692025-11-28 12:26:04.605 PM info
Gang #2 countdown timer is 0 seconds
dev:692025-11-28 12:26:04.601 PM debug
Gang #2 countdown timer is 0 seconds
dev:692025-11-28 12:26:04.597 PM trace
processStarFeatherDP: dp=31 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-28 12:26:04.593 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00FC1F02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, FC, 1F, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-28 12:26:04.588 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00FC1F02000400000000

Bottom switch OFF

dev:692025-11-28 12:26:34.493 PM debug
Parent Switch ON
dev:712025-11-28 12:26:34.488 PM info
Child switch 2 is off
dev:692025-11-28 12:26:34.483 PM trace
processStarFeatherDP: dp=25 dp_id=1 fncmd=0 dp_len=0
dev:692025-11-28 12:26:34.480 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 000F1901000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 0F, 19, 01, 00, 01, 00]]
dev:692025-11-28 12:26:34.477 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 000F1901000100
dev:692025-11-28 12:26:34.447 PM info
Gang #2 countdown timer is 0 seconds
dev:692025-11-28 12:26:34.444 PM debug
Gang #2 countdown timer is 0 seconds
dev:692025-11-28 12:26:34.442 PM trace
processStarFeatherDP: dp=31 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-28 12:26:34.439 PM debug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 000E1F02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 0E, 1F, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-28 12:26:34.435 PM debug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 000E1F02000400000000
1 Like

Next iteration: same driver version '1.4.3', new time stamp '2025/11/29 11:28 AM' .
I added processing of the time synchronization request (the warnings on the first logs).
Also, improved the debug logging a bit. Most ot the previous Info logs for this device are downgraded to Debug logs (when the Debug preference is enabled).

The virtual 'parent' switch logic should be : ON - when any of the child devices is on. OFF - when all child devices are turned off.

So I just did a ton of testing, and I have good news: it's working now for non-physical triggers. Physical triggers still aren't being captured.

I'm afraid I may have led you astray a little bit—it turns out the "Update Rule" button is required when updating triggers, but not actions. I never noticed this before, so it's possible some of the issues I was facing were due to me initially using the physical actions and then not properly updating the rule when I switched to non-physical actions. Apologies for the inconvenience!

The driver should probably handle those physical triggers too, so hopefully these latest logs help with that:

Top switch "on"

dev:692025-11-29 11:57:40.414 AMdebug
Child switch 1 is on
dev:692025-11-29 11:57:40.411 AMdebug
Parent Switch turned OFF (number of child switches on = 0)
dev:702025-11-29 11:57:40.404 AMinfo
Child switch 1 is on
dev:692025-11-29 11:57:40.396 AMdebug
processStarFeatherDP: dp=24 dp_id=1 fncmd=1 dp_len=0
dev:692025-11-29 11:57:40.392 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 004D1801000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 4D, 18, 01, 00, 01, 01]]
dev:692025-11-29 11:57:40.387 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 004D1801000101
dev:692025-11-29 11:57:40.365 AMdebug
Gang #1 countdown timer is 0 seconds
dev:692025-11-29 11:57:40.361 AMdebug
processStarFeatherDP: dp=30 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-29 11:57:40.356 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 004C1E02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 4C, 1E, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-29 11:57:40.350 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 004C1E02000400000000

Top switch "off"

dev:692025-11-29 11:57:55.899 AMdebug
Child switch 1 is off
dev:692025-11-29 11:57:55.893 AMdebug
Parent Switch turned ON (number of child switches on = 1)
dev:702025-11-29 11:57:55.884 AMinfo
Child switch 1 is off
dev:692025-11-29 11:57:55.877 AMdebug
processStarFeatherDP: dp=24 dp_id=1 fncmd=0 dp_len=0
dev:692025-11-29 11:57:55.872 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00561801000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 56, 18, 01, 00, 01, 00]]
dev:692025-11-29 11:57:55.868 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00561801000100
dev:692025-11-29 11:57:55.838 AMdebug
Gang #1 countdown timer is 0 seconds
dev:692025-11-29 11:57:55.834 AMdebug
processStarFeatherDP: dp=30 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-29 11:57:55.831 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00551E02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 55, 1E, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-29 11:57:55.828 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00551E02000400000000

Bottom switch "on"

dev:692025-11-29 11:58:14.091 AMdebug
Child switch 2 is on
dev:692025-11-29 11:58:14.088 AMdebug
Parent Switch turned OFF (number of child switches on = 0)
dev:712025-11-29 11:58:14.084 AMinfo
Child switch 2 is on
dev:692025-11-29 11:58:14.079 AMdebug
processStarFeatherDP: dp=25 dp_id=1 fncmd=1 dp_len=0
dev:692025-11-29 11:58:14.077 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00611901000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 61, 19, 01, 00, 01, 01]]
dev:692025-11-29 11:58:14.073 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00611901000101
dev:692025-11-29 11:58:14.034 AMdebug
Gang #2 countdown timer is 0 seconds
dev:692025-11-29 11:58:14.031 AMdebug
processStarFeatherDP: dp=31 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-29 11:58:14.028 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00601F02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 60, 1F, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-29 11:58:14.024 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 00601F02000400000000

Bottom switch "off"

dev:692025-11-29 11:58:30.267 AMdebug
Child switch 2 is off
dev:692025-11-29 11:58:30.262 AMdebug
Parent Switch turned ON (number of child switches on = 1)
dev:712025-11-29 11:58:30.252 AMinfo
Child switch 2 is off
dev:692025-11-29 11:58:30.247 AMdebug
processStarFeatherDP: dp=25 dp_id=1 fncmd=0 dp_len=0
dev:692025-11-29 11:58:30.245 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 006C1901000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 6C, 19, 01, 00, 01, 00]]
dev:692025-11-29 11:58:30.241 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 006C1901000100
dev:692025-11-29 11:58:30.204 AMdebug
Gang #2 countdown timer is 0 seconds
dev:692025-11-29 11:58:30.201 AMdebug
processStarFeatherDP: dp=31 dp_id=2 fncmd=0 dp_len=0
dev:692025-11-29 11:58:30.198 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 006B1F02000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 6B, 1F, 02, 00, 04, 00, 00, 00, 00]]
dev:692025-11-29 11:58:30.194 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 02 01 006B1F02000400000000

I'm also seeing the following warning appear periodically:

dev:692025-11-29 11:58:29.739 AMwarn
parseMoesStarFeatherSwitch: unprocessed short Tuya command response: dp_id=null dp=null data=[24, 00]) size=2
dev:692025-11-29 11:58:29.735 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 00 00 0000 0B 01 2400, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[24, 00]]
dev:692025-11-29 11:58:29.730 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 00 00 0000 0B 01 2400
dev:692025-11-29 11:58:29.654 AMdebug
Switch (Office) Tuya device time synchronized
dev:692025-11-29 11:58:29.651 AMdebug
Switch (Office) sendZigbeeCommands: [he cmd 0xEC5E 0x01 0xEF00 0x24 {0008692B3445692ADFE5}, delay 2000]
dev:692025-11-29 11:58:29.648 AMdebug
Switch (Office) timezone offset of current location is -21600000 (-6 hours), current hour is 11 h
dev:692025-11-29 11:58:29.646 AMdebug
descMap: [raw:catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 24 01 6A00, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:EC5E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:24, direction:01, data:[6A, 00]]
dev:692025-11-29 11:58:29.642 AMdebug
description: catchall: 0104 EF00 01 01 0040 00 EC5E 01 00 0000 24 01 6A00
1 Like

The new update ( timeStamp: '2025/11/29 9:05 PM' ) hopefully fixes a timing issue that I noticed, but it is related to the parent ON/OFF state.

The logs related to updating the child devices on/off states when the gangs are switched physically seems OK for me...

Are the two child virtual switch devices updating the on/off state correctly in the both scenarios - when digitally flipped from the child device web page, and when physically flipped from the physical switch?

The child device states update correctly when triggered both physically and via Hubitat, yes. It's just the physical switch trigger that isn't working. Not a big deal for my use case.

1 Like

Hi!

 I bought two TS0601 switches. They are exactly the same. I'm facing two issues:
  • I edited the app, inserting the infos from my switches. 8 buttons show up, but only 6 work.
  • I have to double press any button to ON/OFF the respective light. Single press does not work.
    Can someone help on this?

tks!

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00000101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 00, 01, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00000101000100

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FF0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, FF, 01, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FF0101000100

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000

debug

{executed} 0xB8DB 0x01 0xEF00 0x00 {00010101000100}

info

Moes ZigBee Wall Switch 1/2/3-Gang EP01 is OFF

debug

component state is OFF - Moes ZigBee Wall Switch 1/2/3-Gang EP01 {411-01}

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000

debug

{executed} 0xB8DB 0x01 0xEF00 0x00 {00010101000100}

info

Moes ZigBee Wall Switch 1/2/3-Gang EP01 is OFF

debug

component state is OFF - Moes ZigBee Wall Switch 1/2/3-Gang EP01 {411-01}

debug

description: read attr - raw: B8DB010000180100204AE2FF2038E4FF2000, dni: B8DB, endpoint: 01, cluster: 0000, size: 18, attrId: 0001, encoding: 20, command: 0A, value: 4AE2FF2038E4FF2000

debug

Parent Switch ON

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FE0101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, FE, 01, 01, 00, 01, 01]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FE0101000101

debug

Parent Switch ON

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FD0101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, FD, 01, 01, 00, 01, 01]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 01 00 0000 02 01 00FD0101000101

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:B8DB, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 B8DB 00 00 0000 0B 01 0000

debug

user_driver_Moes_1_31_Moes_ZigBee_Wall_Switch_1_2_3_Gang_871$_componentOn_closure11@26e10f

info

Moes ZigBee Wall Switch 1/2/3-Gang EP01 is ON

debug

component state is ON - Moes ZigBee Wall Switch 1/2/3-Gang EP01 {411-01}

Olá, @bhnoronha .

Every TS0601 device is different, most probably your device has a different set of commands and is not supported in this driver.

Please le me know what is the Zigbee model/manufactuer?

Hi Kkossev, I hope you are doing good.

This is the line I added to the code, referencing the infos I got in Hubitat from my model:

    fingerprint profileId:'0104', model:'TS0601', manufacturer:'_TZE204_nvxorhcj', endpointId:'01', inClusters:'0004,0005,EF00,0000', outClusters:'0019,000A', application:'4A', deviceJoinName: 'Nova Digital Topazio Smart Switch 8 Gang'

      Tks,

Bruno

1 Like

Hi guys. Is there anything I can do to tshoot this issue? I'm not used to customize driver, but I'm willing to try. These 8 gang switches are the main ones of my house.

Hi Bruno,

Please test the new update, revision 1.4.5, 2026-02-04. What happens when you click the Refresh() command? (Include the debug logging in a block quote if the output is very large.)

If this still occurs, post the debug logs after pressing the button the first time and after pressing the same button for a second time.

Hi Kkossev, thanks for your reply.

One of the switches are now working flawlessly.
The other is still abnormal. When I press ON, nothing happens. The switch is still in OFF state. When pressing OFF, the switch goes ON and OFF. If happens with all 8 gangs.

Logs after pressing Refresh for the first time:

debug
2026-02-04 11:49:11.527 AM

debug

description: read attr - raw: 5ED9010000180100204AE2FF2038E4FF2000, dni: 5ED9, endpoint: 01, cluster: 0000, size: 18, attrId: 0001, encoding: 20, command: 0A, value: 4AE2FF2038E4FF2000

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 00 00 0000 0B 01 0300, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[03, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 00 00 0000 0B 01 0300

debug

Interruptor Sala de Estar 1 sendZigbeeCommands: [he cmd 0x5ED9 0x01 0xEF00 0x03 {}, delay 2000]

trace

queryAllTuyaDP()

info

Refreshing...

Logs after pressing Refresh for the second time:

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F86501000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F8, 65, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F86501000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F76601000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F7, 66, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F76601000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F60601000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F6, 06, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F60601000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F50501000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F5, 05, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F50501000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F40401000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F4, 04, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F40401000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F30301000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F3, 03, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F30301000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F20201000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F2, 02, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F20201000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F10101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F1, 01, 01, 00, 01, 00]]

dev:4762026-02-04 11:50:17.182 AM

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F10101000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F06501000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, F0, 65, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00F06501000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EF6601000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, EF, 66, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EF6601000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EE0601000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, EE, 06, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EE0601000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00ED0501000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, ED, 05, 01, 00, 01, 00]]

debug

Parent Switch OFF

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00ED0501000100

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EC0401000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, EC, 04, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EC0401000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EB0301000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, EB, 03, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EB0301000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EA0201000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, EA, 02, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00EA0201000100

debug

Parent Switch OFF

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00E90101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, E9, 01, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00E90101000100

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 00 00 0000 0B 01 0300, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[03, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 00 00 0000 0B 01 0300

debug

Interruptor Sala de Estar 1 sendZigbeeCommands: [he cmd 0x5ED9 0x01 0xEF00 0x03 {}, delay 2000]

trace

queryAllTuyaDP()

info

Refreshing...

Infos about this specific 8 gang switch:

application 4A
endpointId 01
manufacturer _TZE204_nvxorhcj
model TS0601

Did you pair the problematic switch again to your hub (without deleting it)?

This switch was not paired when I updated the driver. Then I added the switch and got the behavior I mentioned above.
Lastly, I tried to pair it without deleting. The behavior keeps the same.

1 Like

The Refresh() command is working OK; it shows all 8 switches OFF at that moment...

Could you please post a picture of this device or share a link to the NovaDigital website? Does this switch have 8 relays inside, with 8 terminals for 8 wires? Or does it have four terminals along with 4 On and 4 Off buttons?

Sorry, the request wasn't very clear.... What I meant is to press the physical button for turning on gang 1 once, then wait a few seconds before pressing the same button again. I need to check the logs that were generated when the button was pressed.

Hi, there it goes. Pressing the gang two times with a few seconds between them.

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00410501000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 41, 05, 01, 00, 01, 00]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00410501000100

debug

description: read attr - raw: 5ED9010000180100204AE2FF2038E4FF2000, dni: 5ED9, endpoint: 01, cluster: 0000, size: 18, attrId: 0001, encoding: 20, command: 0A, value: 4AE2FF2038E4FF2000

debug

Parent Switch ON

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00400501000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5ED9, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 40, 05, 01, 00, 01, 01]]

debug

description: catchall: 0104 EF00 01 01 0040 00 5ED9 01 00 0000 02 01 00400501000101

The link to the switch: Interruptor touch Zigbee 8 Botões - Novadigital Smart

This switch has 8 physical separated buttons.

The logs are OK - pressing gang#5 sends first an ON message, next press of the same button generates an OFF message (although the debug log seems to be cut? we should see an 'Parent Switch OFF' log message).

I am still confused about why one device works while the other does not... Double-check again the Device Info sections of the two switches - is all the data (model, manufacturer, app version... ) the same?

Hi, I realized that not using the "Show common commands first" option in Commands tab made this swith works different. Now I can ON and OFF, but I have to press twice, just like the other switch was behaving before you customize the driver. The ON/OFF function in the main switch works normally, not double press needed.

The faulty switch is the same as the other which is working.

It seems identical to the one that is working.

@kkossev

I just installed a single gang Star Feather switch and it successfully paired using your driver. However, it does not respond to any commands via Hubitat. I can only control it via physical touch.

Debug logs after hitting refresh are below if it helps.

dev:24322026-03-18 05:09:34.863 PM

debug

Star Feather command acknowledgment received

dev:24322026-03-18 05:09:34.861 PM

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 0431 00 00 0000 0B 01 2400, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:0431, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[24, 00]]

dev:24322026-03-18 05:09:34.859 PM

debug

description: catchall: 0104 EF00 01 01 0040 00 0431 00 00 0000 0B 01 2400

dev:24322026-03-18 05:09:34.735 PM

debug

Kitchen Sink Tuya device time synchronized

dev:24322026-03-18 05:09:34.733 PM

debug

Kitchen Sink sendZigbeeCommands: [he cmd 0x0431 0x01 0xEF00 0x24 {000869BB148E69BADC4E}, delay 2000]

dev:24322026-03-18 05:09:34.732 PM

debug

Kitchen Sink timezone offset of current location is -14400000 (-4 hours), current hour is 17 h

dev:24322026-03-18 05:09:34.730 PM

debug

descMap: [raw:catchall: 0104 EF00 01 01 0040 00 0431 01 00 0000 24 01 4900, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:0431, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:24, direction:01, data:[49, 00]]

dev:24322026-03-18 05:09:34.728 PM

debug

description: catchall: 0104 EF00 01 01 0040 00 0431 01 00 0000 24 01 4900

dev:24322026-03-18 05:09:29.742 PM

info

Refreshing...