[RELEASE] Tuya Scene Switch TS004F driver (w/ healthStatus)

wow
i tried the solution to pair again, and poof it is available in the dim controller now..

im starting to think i need to spend more (try to save less:) for hardware / check better for compatibility with hubitat... in general get away from the cheap tuya stuff if you just want it to work.

1 Like

Updated driver version 2.8.5 2025-11-29 : (dev. branch)

  • added HOBEIAN ZG-101ZS TS0044 _TZ3000_bgtzm4ny @bkinmuc ;
  • added TS0044 _TZ3000_a4xycprs _TZ3000_dziaict4 _TZ3000_j61x9rxn _TZ3000_kfu8zapd _TZ3000_ygvf9xzp
  • added a warning text for some models that require obligatory re-pairing :

2 Likes

I successfully reproduced the flooding of ZDO Node Descriptor Requests caused by certain devices after an 'incomplete' Zigbee pairing process.... And now this custom driver successfully simulates the ZDO 0x8002 response that the Hubitat platform is expected to send as a system-level answer :

Tuya Scene Switch TS004F ver. 2.9.0 2025-12-01 :

  • handleNodeDescRequest()

:partying_face:

4 Likes

Hi @kkossev ,
Another Tuya device for you to add if you can:

In Clusters: 0000,0001,0003,0004,0006,1000
Manufacturer: _TZ3000_gwkzibhs
Model: TS004F
Out Clusters: 0019,000A,0003,0004,0005,0006,0008,1000

Its one of these:
https://www.aliexpress.com/item/1005009944918471.html

Thanks!
C

1 Like

Hey boss man, have you had any luck with the _TZE200_nojsjtj2 driver? I purchased two of these for us to use if we need the other persons help by turning on a couple of power plugs with my 120vac sirens.

It seems I have the same problem as John. It does pair quickly but it does not register any button presses.

Thanks. Let me know what you need or want me to try. Thanks in advance.

Paul

Added to ver. 2.9.1 2025-12-22

Also, responding to ZDO requests was made optional and is disabled by default (these responses should be handled by Hubitat at the system level...).

image

2 Likes

Same issue. Its an SOS button coming up as a shock device, but the button does nothing.

1 Like

Unfortunately, there is still no solution for using the device with Zigbee coordinators other than Tuya.

Hi @kkossev ,
Another Tuya device for you to add if you can:

In Clusters: 0000,0003,0001,0020,0004
Manufacturer: _TZ3000_8rppvwda
Model: TS0041
Out Clusters: 0019,0006,0004

Its one of these: Smart Button

Thanks!

1 Like

Thank you for the device fingerprint, it will be added on the next driver update.

I don't know if I've stumbled across another scene switch but here is the info:

Application 41
Endpoint Id 01
In Clusters 0000,0003,0001,0006
Manufacturer _TZ3001_2kjvanir
Model TS0041
Out Clusters 000A,0019
Software Build null

This is the item ordered and received today from AliExpress:
https://www.aliexpress.com/item/1005010542026947.html?spm=a2g0o.order_list.order_list_main.29.108b18029rrqDK

Not sure if this has a driver or not, but no luck so far, even using HE drivers.

Thanks Don

Enable Debug logging.
Then pair the device again with your hub (without deleting it).
If it still doesn’t work, please post a screenshot of the logs that appear during the pairing process.

I put on debug logging, ensuring it was setup as Tuya Zigbee Scene Switch, and did a re-pair.

This is what the log contained relevant to that activity:

dev:2192026-01-08 16:39:50.213warn
configure...
dev:2192026-01-08 16:39:07.529error
org.codehaus.groovy.runtime.typehandling.GroovyCastException: Cannot cast object 'logsOff|dev219Once' with class 'java.lang.String' to class 'java.util.List' on line 56 (method updated)
dev:2192026-01-08 16:39:07.503warn
description logging is: true
dev:2192026-01-08 16:39:07.502warn
debug logging is: true
dev:2192026-01-08 16:39:07.485info
updated...

It thinks its there, I suppose, but nothing happens on a button press.

Please let me know if I can provide anything else helpful.

Thanks Don

Hi @kkossev
I have the device connected and it comes up at a 4 button item, then I get lost.... it seems I can only assign buttons to actions: press, double press, hold, release. I was expecting to be able to assign button numbers to other functions. I was also expecting to see button click events in the "last button number" and I'm not.

If I'm missing something obvious (as a relative newb) please let me know.

Otherwise, I pulled it apart and found a QR that suggests its a "ZG-101ZD-_2536_5774" a LEDEAST smart rotary dimmer switch.

And did a reconnect, here's the log:

dev:4012026-01-09 13:30:41.228

debug

Tuya Rotary Dimmer device _TZ3000_gwkzibhs identified as 4 keys scene switch model TS004F

dev:4012026-01-09 13:30:41.219

trace

Tuya Rotary Dimmer sendZigbeeCommands(cmd=[he raw 0x5C3C 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he raw 0x5C3C 1 0x01 0x0006 {10 00 00 04 80}, delay 50, he raw 0x5C3C 1 0x01 0xE001 {10 00 00 11 D0}, delay 50, he raw 0x5C3C 1 0x01 0x0001 {10 00 00 20 00 21 00}, delay 50, he wattr 0x5C3C 0x01 0x0006 0x8004 0x30 {01} {}, delay 50, he raw 0x5C3C 1 0x01 0x0006 {10 00 00 04 80}, delay 50])

dev:4012026-01-09 13:30:41.217

info

Tuya Rotary Dimmer sending Tuya Magic commands... Make sure the device is awake (a device button was pressed) before clicking on the Configure button!

dev:4012026-01-09 13:30:41.215

info

Tuya Rotary Dimmer battery reporting interval not changed.

dev:4012026-01-09 13:30:41.198

debug

Tuya Rotary Dimmer Configuring device model TS004F manufacturer _TZ3000_gwkzibhs ...

dev:4012026-01-09 13:30:30.031

debug

Tuya Rotary Dimmer deviceHealthCheck - online (notPresentCounter=1)

dev:4012026-01-09 13:30:12.675

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:12.672

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:12.669

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:11.788

info

Tuya Rotary Dimmer batteryVoltage is 3.0 V

dev:4012026-01-09 13:30:11.786

debug

Tuya Rotary Dimmer Event enter: [name:batteryVoltage, value:3.0]

dev:4012026-01-09 13:30:11.781

debug

Tuya Rotary Dimmer description is read attr - raw: 5188010001142000201E21000020C8, dni: 5188, endpoint: 01, cluster: 0001, size: 14, attrId: 0020, encoding: 20, command: 01, value: 1E21000020C8

dev:4012026-01-09 13:30:11.773

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:11.769

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:11.765

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:11.757

debug

Tuya Rotary Dimmer readAttributeResponse cluster: E001 unsupported attribute D011 status:86

dev:4012026-01-09 13:30:11.752

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086, profileId:0104, clusterId:E001, clusterInt:57345, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[11, D0, 86]]

dev:4012026-01-09 13:30:11.749

debug

Tuya Rotary Dimmer description is catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086

dev:4012026-01-09 13:30:10.672

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:10.668

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:10.664

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:09.805

debug

Tuya Rotary Dimmer readAttributeResponse cluster: E001 unsupported attribute D011 status:86

dev:4012026-01-09 13:30:09.799

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086, profileId:0104, clusterId:E001, clusterInt:57345, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[11, D0, 86]]

dev:4012026-01-09 13:30:09.796

debug

Tuya Rotary Dimmer description is catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086

dev:4012026-01-09 13:30:09.776

info

Tuya Rotary Dimmer batteryVoltage is 3.0 V

dev:4012026-01-09 13:30:09.774

debug

Tuya Rotary Dimmer Event enter: [name:batteryVoltage, value:3.0]

dev:4012026-01-09 13:30:09.769

debug

Tuya Rotary Dimmer description is read attr - raw: 5188010001142000201E21000020C8, dni: 5188, endpoint: 01, cluster: 0001, size: 14, attrId: 0020, encoding: 20, command: 01, value: 1E21000020C8

dev:4012026-01-09 13:30:09.761

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:09.757

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:09.753

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:08.670

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:08.665

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:08.662

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:07.769

info

Tuya Rotary Dimmer batteryVoltage is 3.0 V

dev:4012026-01-09 13:30:07.767

debug

Tuya Rotary Dimmer Event enter: [name:batteryVoltage, value:3.0]

dev:4012026-01-09 13:30:07.762

debug

Tuya Rotary Dimmer description is read attr - raw: 5188010001142000201E21000020C8, dni: 5188, endpoint: 01, cluster: 0001, size: 14, attrId: 0020, encoding: 20, command: 01, value: 1E21000020C8

dev:4012026-01-09 13:30:07.754

debug

Tuya Rotary Dimmer readAttributeResponse cluster: E001 unsupported attribute D011 status:86

dev:4012026-01-09 13:30:07.749

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086, profileId:0104, clusterId:E001, clusterInt:57345, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[11, D0, 86]]

dev:4012026-01-09 13:30:07.745

debug

Tuya Rotary Dimmer description is catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086

dev:4012026-01-09 13:30:07.737

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:07.733

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:07.729

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:07.556

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:07.551

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:07.548

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:07.339

debug

Tuya Rotary Dimmer writeAttributeResponse cluster: 0006 status:86

dev:4012026-01-09 13:30:07.334

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 04 01 860480, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[86, 04, 80]]

dev:4012026-01-09 13:30:07.330

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 04 01 860480

dev:4012026-01-09 13:30:06.612

info

Tuya Rotary Dimmer batteryVoltage is 3.0 V

dev:4012026-01-09 13:30:06.609

debug

Tuya Rotary Dimmer Event enter: [name:batteryVoltage, value:3.0]

dev:4012026-01-09 13:30:06.604

debug

Tuya Rotary Dimmer description is read attr - raw: 5188010001142000201E21000020C8, dni: 5188, endpoint: 01, cluster: 0001, size: 14, attrId: 0020, encoding: 20, command: 01, value: 1E21000020C8

dev:4012026-01-09 13:30:06.596

debug

Tuya Rotary Dimmer readAttributeResponse cluster: E001 unsupported attribute D011 status:86

dev:4012026-01-09 13:30:06.591

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086, profileId:0104, clusterId:E001, clusterInt:57345, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[11, D0, 86]]

dev:4012026-01-09 13:30:06.588

debug

Tuya Rotary Dimmer description is catchall: 0104 E001 01 01 0040 00 5188 00 00 0000 01 01 11D086

dev:4012026-01-09 13:30:06.058

debug

Tuya Rotary Dimmer readAttributeResponse cluster: 0006 unsupported attribute 8004 status:86

dev:4012026-01-09 13:30:06.053

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086, profileId:0104, clusterId:0006, clusterInt:6, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:01, data:[04, 80, 86]]

dev:4012026-01-09 13:30:06.049

debug

Tuya Rotary Dimmer description is catchall: 0104 0006 01 01 0040 00 5188 00 00 0000 01 01 048086

dev:4012026-01-09 13:30:05.239

debug

Tuya Rotary Dimmer skipping Basic cluster 0000 response

dev:4012026-01-09 13:30:05.233

debug

Tuya Rotary Dimmer raw: descMap: [raw:518801000064040042105F545A333030305F67776B7A696268730000002003010000209305000042065453303034460700003003FEFF86, dni:5188, endpoint:01, cluster:0000, size:64, attrId:0004, encoding:42, command:01, value:_TZ3000_gwkzibhs, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:93, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS004F, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]]

dev:4012026-01-09 13:30:05.223

warn

Tuya Rotary Dimmer exception caught while procesing event read attr - raw: 518801000064040042105F545A333030305F67776B7A696268730000002003010000209305000042065453303034460700003003FEFF86, dni: 5188, endpoint: 01, cluster: 0000, size: 64, attrId: 0004, encoding: 42, command: 01, value: 105F545A333030305F67776B7A696268730000002003010000209305000042065453303034460700003003FEFF86

dev:4012026-01-09 13:30:05.137

debug

Tuya Rotary Dimmer description is read attr - raw: 518801000064040042105F545A333030305F67776B7A696268730000002003010000209305000042065453303034460700003003FEFF86, dni: 5188, endpoint: 01, cluster: 0000, size: 64, attrId: 0004, encoding: 42, command: 01, value: 105F545A333030305F67776B7A696268730000002003010000209305000042065453303034460700003003FEFF86

dev:4012026-01-09 13:30:04.537

debug

Tuya Rotary Dimmer (ZDO 0013) device announcement from dni 5188, data=[00, 88, 51, 73, A0, 15, 39, 15, 38, C1, A4, 80]

dev:4012026-01-09 13:30:04.531

debug

Tuya Rotary Dimmer catchall descMap: [raw:catchall: 0000 0013 00 00 0040 00 5188 00 00 0000 00 00 00885173A015391538C1A480, profileId:0000, clusterId:0013, clusterInt:19, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:5188, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[00, 88, 51, 73, A0, 15, 39, 15, 38, C1, A4, 80]]

dev:4012026-01-09 13:30:04.526

debug

Tuya Rotary Dimmer description is catchall: 0000 0013 00 00 0040 00 5188 00 00 0000 00 00 00885173A015391538C1A480

dev:4012026-01-09 13:30:03.700

debug

Tuya Rotary Dimmer device _TZ3000_gwkzibhs identified as 4 keys scene switch model TS004F

dev:4012026-01-09 13:30:03.684

trace

Tuya Rotary Dimmer sendZigbeeCommands(cmd=[he raw 0x5188 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he raw 0x5188 1 0x01 0x0006 {10 00 00 04 80}, delay 50, he raw 0x5188 1 0x01 0xE001 {10 00 00 11 D0}, delay 50, he raw 0x5188 1 0x01 0x0001 {10 00 00 20 00 21 00}, delay 50, he wattr 0x5188 0x01 0x0006 0x8004 0x30 {01} {}, delay 50, he raw 0x5188 1 0x01 0x0006 {10 00 00 04 80}, delay 50])

dev:4012026-01-09 13:30:03.671

info

Tuya Rotary Dimmer sending Tuya Magic commands... Make sure the device is awake (a device button was pressed) before clicking on the Configure button!

dev:4012026-01-09 13:30:03.669

info

Tuya Rotary Dimmer battery reporting interval not changed.

dev:4012026-01-09 13:30:03.648

debug

Tuya Rotary Dimmer Configuring device model TS004F manufacturer _TZ3000_gwkzibhs ...

I removed this button a few days back and then reconnected it this morning. Then I noticed that it was now reading buttons 1 (pushed) 2 (rotate CW), and 3 (rotate CCW).

So I should be good now :slight_smile:

thx

C

1 Like

It was probably this :

1 Like

New SOS button with this driver :

⦁ unknown device model TS0215A manufacturer _TZ3000_0dumfk2z. Please report this log to the developer.

Reports 4 buttons, but does seem to work for a single press (not sure that double-clicks and holds are supposed to be available on this device).

1 Like

updated to version 2.9.2 2026-03-30 - (dev. branch)

  • added model TS0215A manufacturer '_TZ3000_0dumfk2', '_TZ3000_ssp0maqm', '_TZ3000_p3fph1go' as a SOS button @callumgw;
  • added TS0041 _TZ3000_8rppvwda @sales8
4 Likes

Updated to ver. 2.9.3 2026-04-27 (developments branch) :

  • added Third Reality 3RSB22BZ (Smart Button) support
  • added Third Reality 3RSB01085Z (Smart Scene Button S3, 3 buttons)

(The update is based on the Z2M implementation for these TR buttons and is not tested!)

1 Like

What are the criteria for incrementing the "Not Present Counter"? I have a couple of Tuya push buttons that routinely report being "offline" but function when pressed.

The one I'm looking at right now has a "Not Present Counter" value of 7 and a Health Status of "offline". Events shows that it registered as "online" at 2026-04-26 6:22:18.199 pm, and "offline" at 2026-04-27 7:52:20.013 am.

Also, would it be possible to add to Current States a "last pushed" timestamp?

Device Data:
image

1 Like