[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