[RE-RELEASE] Tuya Zigbee Dimmer Module (w/ healthStatus)

hi Kkossev
sorry for the late reply i had a family emergency. i was just testing the driver and still it only turn on and off the fan. it does.t see the light switch and it doenst change the fan speed. 2025-11-25 11:30:11.516 AM

warn

fan light command "setLevel(3)" failed after 5 retries.

dev:10192025-11-25 11:28:48.852 AM

info

scheduling health check every 10 minutes

dev:10192025-11-25 11:27:15.249 AM

info

scheduling health check every 10 minutes

dev:10192025-11-25 11:27:08.550 AM

info

fan light updating settings for the parent device ... [temperatureOffset:0.0, humidityOffset:0.0, temperatureSensitivity:0.5, humiditySensitivity:5, illuminanceSensitivity:12, minTempAlarmPar:0.0, maxTempAlarmPar:39.0, minHumidityAlarmPar:20, maxHumidityAlarmPar:60, minReportingTimeTemp:10, maxReportingTimeTemp:3600, minReportingTimeHumidity:10, maxReportingTimeHumidity:3600, advancedOptions:true, infoEnable:true, debugEnable:true, autoRefresh:true, ledMode:2, lightType:0, traceEnable:true, forcedProfile:TS0601 LERLINK Fan Switch, healthCheckInterval:10, minLevel:0, maxLevel:100, autoOn:true, powerOnMode:0]

dev:10192025-11-25 11:27:08.549 AM

trace

fan light getChildByEndpointId returning this: fan light

dev:10192025-11-25 11:27:08.548 AM

trace

fan light getChildByEndpointId endpointId=01

let me know how to proceed
thanks
Will

1 Like

Please enable the Debug logging option and click on Save preferences button. The debug logs will be turned off automatically after 24 hours.

Then, send a setLevel 3 command again. I need to see what is the device response to this command only.

here it is.
dev:10192025-12-02 07:27:19.276 AM

debug

fan light parse: catchall received confirmation from clusterId=EF00 for command=0B data=[00, 00]

dev:10192025-12-02 07:27:19.275 AM

trace

fan light parse: catchall clusterId=EF00 command=0B data=[00, 00]

dev:10192025-12-02 07:27:19.273 AM

trace

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

dev:10192025-12-02 07:27:19.272 AM

debug

fan light parse: received raw description: catchall: 0104 EF00 01 01 0040 00 C445 00 00 0000 0B 01 0000

dev:10192025-12-02 07:27:19.234 AM

debug

fan light sendZigbeeCommands: [he cmd 0xC445 0x01 0xEF00 0x00 {9B93030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:19.233 AM

debug

fan light cmdSetLevel: TS0601: sending cmdsTuya=[he cmd 0xC445 0x01 0xEF00 0x00 {9B93030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:19.232 AM

debug

fan light fan light sendTuyaCommand = [he cmd 0xC445 0x01 0xEF00 0x00 {9B93030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:19.229 AM

debug

fan light cmdSetLevel: TS0601: sending cmdSetLevel command=03 value=30 (1E)

dev:10192025-12-02 07:27:19.226 AM

trace

fan light cmdSetLevel: child=fan light childDni=C445-01 value=3 duration=0

dev:10192025-12-02 07:27:19.226 AM

trace

fan light getChildByEndpointId returning this: fan light

dev:10192025-12-02 07:27:19.224 AM

trace

fan light getChildByEndpointId endpointId=01

dev:10192025-12-02 07:27:19.223 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:19.221 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:19.220 AM

trace

fan light levelToValue: level=3 reScaled=3 (mult=1.0, minLevel100=0, maxLevel100=100)

dev:10192025-12-02 07:27:19.172 AM

trace

fan light scheduleCommandTimeoutCheck: delay=10 isParent=true

dev:10192025-12-02 07:27:14.626 AM

debug

fan light sendZigbeeCommands: [he rattr 0xC445 0x01 0x0006 0 {}, delay 100, he rattr 0xC445 0x01 0x0008 0 {}, delay 100]

dev:10192025-12-02 07:27:14.605 AM

debug

fan light cmdRefresh: (childDni=C445-01 endpointId=01) isParent()=true

dev:10192025-12-02 07:27:14.603 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:14.602 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:14.601 AM

debug

fan light refresh: parent C445-01

dev:10192025-12-02 07:27:14.547 AM

trace

fan light scheduleCommandTimeoutCheck: delay=10 isParent=true

dev:10192025-12-02 07:27:13.629 AM

debug

fan light parse: catchall received confirmation from clusterId=EF00 for command=0B data=[00, 00]

dev:10192025-12-02 07:27:13.628 AM

trace

fan light parse: catchall clusterId=EF00 command=0B data=[00, 00]

dev:10192025-12-02 07:27:13.627 AM

trace

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

dev:10192025-12-02 07:27:13.626 AM

debug

fan light parse: received raw description: catchall: 0104 EF00 01 01 0040 00 C445 00 00 0000 0B 01 0000

dev:10192025-12-02 07:27:13.568 AM

debug

fan light sendZigbeeCommands: [he cmd 0xC445 0x01 0xEF00 0x00 {FA6A030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:13.567 AM

debug

fan light cmdSetLevel: TS0601: sending cmdsTuya=[he cmd 0xC445 0x01 0xEF00 0x00 {FA6A030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:13.566 AM

debug

fan light fan light sendTuyaCommand = [he cmd 0xC445 0x01 0xEF00 0x00 {FA6A030200011E} {}, delay 2000]

dev:10192025-12-02 07:27:13.563 AM

debug

fan light cmdSetLevel: TS0601: sending cmdSetLevel command=03 value=30 (1E)

dev:10192025-12-02 07:27:13.561 AM

trace

fan light cmdSetLevel: child=fan light childDni=C445-01 value=3 duration=0

dev:10192025-12-02 07:27:13.560 AM

trace

fan light getChildByEndpointId returning this: fan light

dev:10192025-12-02 07:27:13.559 AM

trace

fan light getChildByEndpointId endpointId=01

dev:10192025-12-02 07:27:13.557 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:13.556 AM

trace

fan light childDniToEndpointId: childDni=C445-01 childDniPattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ match[0][1]=C445 match[0][2]=01 device.deviceNetworkId=C445 match=java.util.regex.Matcher[pattern=^([0-9A-Za-z]+)-([0-9A-Za-z]+)$ region=0,7 lastmatch=C445-01]

dev:10192025-12-02 07:27:13.555 AM

trace

fan light levelToValue: level=3 reScaled=3 (mult=1.0, minLevel100=0, maxLevel100=100)

dev:10192025-12-02 07:27:13.510 AM

trace

fan light scheduleCommandTimeoutCheck: delay=10 isParent=true

Hi Folks,
new to this driver stuff, but I recently got 2 Avatto Dimmers and they didnt work with the driver, so after a bit of digging I added 4 lines of code to get the manufacturer id to work and now they recognise and perform ok. The only issue is the dimming doesnt seem to be linear, 50% isnt half the light, you need to get down to 20% or less. Not sure if this is common or an easy fix?

Anyway, it would be good to get these devices added to the driver, the lines I added were:

"_TZE284_nqqylykc": [ numEps: 1, model: "TS0601", inClusters: "0004,0005,EF00,0000",          joinName: "Avatto Zigbee 1-Gang Dimmer module" ],               // Avatto 
"_TZE284_jtbgusdc": [ numEps: 2, model: "TS0601", inClusters: "0004,0005,EF00,0000,ED00",     joinName: "Avatto Zigbee 2-Gang Dimmer module" ],               // Avatto

and under "TS0601_DIMMER" : [

            [numEps: 1, profileId:"0104", endpointId:"01", inClusters:"0004,0005,EF00,0000", outClusters:"0019,000A", model:"TS0601", manufacturer:"_TZE284_nqqylykc", deviceJoinName: "Avatto ZigBee 1-Gang Dimmer"],             // 
            [numEps: 2, profileId:"0104", endpointId:"01", inClusters:"0004,0005,EF00,0000,ED00", outClusters:"0019,000A", model:"TS0601", manufacturer:"_TZE284_jtbgusdc", deviceJoinName: "Avatto ZigBee 2-Gang Dimmer"],        // 

Thanks

1 Like