[RELEASE] Tuya Temperature Humidity Illuminance LCD Display with a Clock (w/ healthStatus)

@kkossev Thank you for the quick reply. I updated the driver and did the the obligatory pairing. The Model Group auto detect now identifies the modelGroup as "TS0601_Tuya_3", however it is still not getting the temperature or humidity.

I also tried adding another of the same model that has never been paired and it automatically picked up the correct driver and model group. Unfortunately it also is not getting the temperature or humidity. Note that the correct temp/humidity is showing on the devices local LCD screen so I know it has the data on the device.

Any other thoughts/ideas?

I have included latest Device Data, State Variables, and debug logs from when the device was added using the latest driver (2.1.1)

Device Data

Show raw names

### application ### 50
### endpointId ### 01
### manufacturer ### _TZE284_9ern5sfh
### model ### TS0601

Current States

Show raw names

healthStatus online

State Variables

configState 0
driverVersion 2.1.1 2026/04/14 7:37 AM
lastRx {"humiCfg":"-1,-1,-1","humiTime":1776209498789,"tempCfg":"-1,-1,-1","tempTime":1776209498789}
lastTx {"cfgFailure":false,"cfgTimer":0,"humiCfg":"-1,-1,-1","humiCfgOK":false,"tempCfg":"-1,-1,-1","tempCfgOK":false}
modelGroup TS0601_Tuya_3
notPresentCounter 0
stats {"date":"2026-04-14","rejoins":1,"rxCtr":13,"txCtr":3}
Debug Logs
dev:3152026-04-14 04:32:15.063 PMdebugBedroom temp sensor ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:32:15.062 PMdebugBedroom temp sensor ZDO Node Descriptor request, data=[98, 00, 00] (Sequence Number:98)
dev:3152026-04-14 04:32:15.046 PMdebugBedroom temp sensor parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 980000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[98, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 980000
dev:3152026-04-14 04:32:13.973 PMdebugBedroom temp sensor Tuya cluster confirmation for command 0x03 response 0x00 data = [03, 00]
dev:3152026-04-14 04:32:13.971 PMdebugBedroom temp sensor parse() descMap =[raw:catchall: 0104 EF00 01 01 0040 00 A8A7 00 00 0000 0B 01 0300, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[03, 00]] description = catchall: 0104 EF00 01 01 0040 00 A8A7 00 00 0000 0B 01 0300
dev:3152026-04-14 04:32:13.917 PMtraceBedroom temp sensor sendZigbeeCommands(cmd=[he cmd 0xA8A7 0x01 0xEF00 0x03 {}, delay 2000])
dev:3152026-04-14 04:32:13.916 PMdebugBedroom temp sensor quering Tuya DP's
dev:3152026-04-14 04:32:13.915 PMinfoBedroom temp sensor device announcement
dev:3152026-04-14 04:32:13.912 PMdebugBedroom temp sensor parse() descMap =[raw:catchall: 0000 0013 00 00 0040 00 A8A7 00 00 0000 00 00 97A7A88C186AFCCE38C1A480, profileId:0000, clusterId:0013, clusterInt:19, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[97, A7, A8, 8C, 18, 6A, FC, CE, 38, C1, A4, 80]] description = catchall: 0000 0013 00 00 0040 00 A8A7 00 00 0000 00 00 97A7A88C186AFCCE38C1A480
dev:3152026-04-14 04:32:04.336 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:32:04.334 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor request, data=[96, 00, 00] (Sequence Number:96)
dev:3152026-04-14 04:32:04.331 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 960000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[96, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 960000
dev:3152026-04-14 04:31:59.463 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Network Address response disabled by preference
dev:3152026-04-14 04:31:59.462 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Network Address request, data=[95, 16, 10, A9, FE, FF, 47, 68, 28, 00, 00] (Sequence Number:95)
dev:3152026-04-14 04:31:59.459 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0000 00 00 0040 00 A8A7 00 00 0000 00 00 951610A9FEFF4768280000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[95, 16, 10, A9, FE, FF, 47, 68, 28, 00, 00]] description = catchall: 0000 0000 00 00 0040 00 A8A7 00 00 0000 00 00 951610A9FEFF4768280000
dev:3152026-04-14 04:31:59.324 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:31:59.323 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor request, data=[94, 00, 00] (Sequence Number:94)
dev:3152026-04-14 04:31:59.321 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 940000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[94, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 940000
dev:3152026-04-14 04:31:54.318 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:31:54.314 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor request, data=[93, 00, 00] (Sequence Number:93)
dev:3152026-04-14 04:31:54.312 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 930000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[93, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 930000
dev:3152026-04-14 04:31:49.950 PMtraceTuya Temperature Humidity Illuminance LCD Display with a Clock sendZigbeeCommands(cmd=)
dev:3152026-04-14 04:31:49.949 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock Debug logging will be turned off after 24 hours
dev:3152026-04-14 04:31:49.935 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock Debug logging is true; Description text logging is true
dev:3152026-04-14 04:31:49.934 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock Updating null (Tuya Temperature Humidity Illuminance LCD Display with a Clock) model TS0601 manufacturer _TZE284_9ern5sfh modelGroupPreference = Auto detect (TS0601_Tuya_3)
dev:3152026-04-14 04:31:49.356 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Network Address response disabled by preference
dev:3152026-04-14 04:31:49.355 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Network Address request, data=[92, 16, 10, A9, FE, FF, 47, 68, 28, 00, 00] (Sequence Number:92)
dev:3152026-04-14 04:31:49.339 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0000 00 00 0040 00 A8A7 00 00 0000 00 00 921610A9FEFF4768280000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[92, 16, 10, A9, FE, FF, 47, 68, 28, 00, 00]] description = catchall: 0000 0000 00 00 0040 00 A8A7 00 00 0000 00 00 921610A9FEFF4768280000
dev:3152026-04-14 04:31:49.308 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:31:49.307 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock ZDO Node Descriptor request, data=[91, 00, 00] (Sequence Number:91)
dev:3152026-04-14 04:31:49.304 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 910000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[91, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 910000
dev:3152026-04-14 04:31:49.200 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock Received Write Attribute Response for cluster:0000 , data=[00] (Status: Success)
dev:3152026-04-14 04:31:49.197 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:catchall: 0104 0000 01 01 0040 00 A8A7 00 00 0000 04 01 00, profileId:0104, clusterId:0000, clusterInt:0, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description = catchall: 0104 0000 01 01 0040 00 A8A7 00 00 0000 04 01 00
dev:3152026-04-14 04:31:49.097 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock NOT PARSED : [raw:A8A701000068040042105F545A453238345F3965726E357366680000002003010000205005000042065453303630310700003003FEFF003000, dni:A8A7, endpoint:01, cluster:0000, size:68, attrId:0004, encoding:42, command:01, value:_TZE284_9ern5sfh, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:50, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS0601, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]]
dev:3152026-04-14 04:31:49.091 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock parse() descMap =[raw:A8A701000068040042105F545A453238345F3965726E357366680000002003010000205005000042065453303630310700003003FEFF003000, dni:A8A7, endpoint:01, cluster:0000, size:68, attrId:0004, encoding:42, command:01, value:_TZE284_9ern5sfh, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:50, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS0601, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]] description = read attr - raw: A8A701000068040042105F545A453238345F3965726E357366680000002003010000205005000042065453303630310700003003FEFF003000, dni: A8A7, endpoint: 01, cluster: 0000, size: 68, attrId: 0004, encoding: 42, command: 01, value: 105F545A453238345F3965726E357366680000002003010000205005000042065453303630310700003003FEFF003000
dev:3152026-04-14 04:31:49.087 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock is present
dev:3152026-04-14 04:31:48.869 PMtraceTuya Temperature Humidity Illuminance LCD Display with a Clock sendZigbeeCommands(cmd=[he raw 0xA8A7 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he wattr 0xA8A7 0x01 0x0000 0xFFDE 0x20 {13} {}, delay 200, delay 299])
dev:3152026-04-14 04:31:48.868 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock initializeDevice...
dev:3152026-04-14 04:31:48.864 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock configure()..
dev:3152026-04-14 04:31:48.790 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock Statistics were reset. Press F5 to refresh the device page
dev:3152026-04-14 04:31:48.788 PMwarnTuya Temperature Humidity Illuminance LCD Display with a Clock All Defaults Loaded! F5 to refresh
dev:3152026-04-14 04:31:48.787 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock All child devices DELETED
dev:3152026-04-14 04:31:48.786 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock All States DELETED
dev:3152026-04-14 04:31:48.785 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock Deleted states:
dev:3152026-04-14 04:31:48.782 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock All scheduled jobs DELETED
dev:3152026-04-14 04:31:48.776 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock All current states (attributes) DELETED
dev:3152026-04-14 04:31:48.775 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock Deleted attributes: healthStatus, humidity, checkInterval, soilFertility, battery, temperature, _info, rtt, illuminance, soilEC,
dev:3152026-04-14 04:31:48.747 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock All settings (preferences) DELETED
dev:3152026-04-14 04:31:48.746 PMdebugTuya Temperature Humidity Illuminance LCD Display with a Clock Deleted settings: txtEnable (true), logEnable (true), temperatureOffset (0.0), humidityOffset (0.0), modelGroupPreference (0), advancedOptions (false),
dev:3152026-04-14 04:31:48.731 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock InitializeVars()... fullInit = true
dev:3152026-04-14 04:31:48.722 PMinfoTuya Temperature Humidity Illuminance LCD Display with a Clock installed()...

Have you tried to force a change in temp (put device in your fist for a few minutes) or humidity (blow on the sensor hole)?

@rlynch I see a possible Zigbee rejoin / discovery issue in the logs :

dev:3152026-04-14 04:32:15.063 PMdebugBedroom temp sensor ZDO Node Descriptor response disabled by preference
dev:3152026-04-14 04:32:15.062 PMdebugBedroom temp sensor ZDO Node Descriptor request, data=[98, 00, 00] (Sequence Number:98)
dev:3152026-04-14 04:32:15.046 PMdebugBedroom temp sensor parse() descMap =[raw:catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 980000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:A8A7, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[98, 00, 00]] description = catchall: 0000 0002 00 00 0040 00 A8A7 00 00 0000 00 00 980000

Try the following :

  • in the Preferences tab, enable the 'Advanced Options'

  • enable the "Respond to ZDO requests."

  • save and close

  • do NOT delete the device

  • pair it again to your C-8 Pro hub, at a close distance.

If no temperature readings again, check whether the device remains connected: remove the batteries and wait 30 seconds before reinserting them. With the Debug preference enabled, you should see log entries indicating that the device is automatically reconnecting to the Zigbee network.

You can also try using the Double Luck voodoo to pair the device again.

Hi Krassimir,
Sent you the log files as requested.

1 Like

Nic - thank you for the logs, they are very useful and now I see where the problem is in the driver code. The fix is coming in the next build.

Can you please edit your post and delete the long logs? I have copied them, thanks!

2 Likes

Thank you kkossev !!
The ZDO request change did not make a difference. However, I tried the Double Luck Voodoo process and both devices are now working.

1 Like

Great news. I'm happy to help, however I can.

1 Like

I have updated the driver code, same version 2.1.1 , new time stamp '2026/04/19 10:50 AM'.
Please test and let me know whether the external temperature probe is working now.

2 Likes

Yes sir. I now have BOTH the external temp sensor reporting and the sensor within the display reporting !

Many thanks.

Just for your information:
I do see this in the logs but it does not affect the operation of the device or driver.
[dev:4174] (http://192.168.1.11/logs#)2026-04-19 07:27:50.627 PM

warn

4 da Palms Display componentRefresh() called but device is not DS18B20 model (TS0601_ZTH03PRO)

1 Like

ver. 2.1.2 2026-04-22 :

  • added COOLO CS-201Z _TZE200_npj9bug3 _TZE200_wrmhp6b3 into new 'TS0601_Soil_Coolo' group;
  • added soilMoisture attribute
1 Like

5 In 1 Zigbee Soil Tester Moisture Fertility Temperature Humidity Luminance Detection Sensor For Z2MQTT Tuya Smart Life Optional - AliExpress 1420

I am using a bunch of these sensors, I asked ChatGPT to create a device driver for me to obtain all the values based on a zigbee2mqtt driver, I am able to get fertility value along with moisture humidity and all but devices stop reporting after few minutes when i use that code, using your device driver and selecting TS0601_Soil_NEO only gives me temp, humidity and illumin. Any idea how can i get all values, Attached are some screenshots and drivercode from chatgpt

https://codeshare.io/aYY3p3



1 Like

Hi @mail.djain ,

These seem to be very interesting sensors... Your device is recognized as TS0601 _TZE284_hdml1aav (not Arteco A89G12C), so maybe something else in the firmware differs (not just diferent Zigbee model/manufacturer IDs)?

I will try looking at this device in the next days.

Hi were you able to look into these ? I would love to integrate these with HE :-).

Sorry Mail, this week, I spent all my free time fighting with Matter Lock codes... Hope will be able to release a stable version of the Matter Advanced Bridge soon, then I will have the time to go back to this topic.

I tried your wonderful driver to integrate this device:

But it shows only (half of the real) humidity:

The info logs are indicating that at least values for humidity and temperature are arriving:

IMHO those values have to be divided by 10 to get the real values.

BTW: The trace logs are showing values for three different value types (dp=2 for illuminance, dp=6 for temperature, and dp=7 for humidity):

FYI: And those are examples for the debug logs:

When I put the device under bright light I get warn logs like this:

It seems that the driver isn’t using the right relation between values and their types…

Please: What can I do to fix this? :thinking:

Hi Jost,

This is a new device that is unknown in this driver... that's why the humidity scaling is wrong. I will try to add it in a future update, but can't promise a date, there are already too many pending TODOs in my list...

Meanwhile, you can try to use AI to create a modified version of this driver for your own use for this particular device.

2 Likes

Done! :+1:

Only “problem”: The Zigbee messages of this device are incoming much to often; Do you (or someone else) know a way to slow it down? (I’m not talking about reducing the events the driver is firing - that’s already working.)

I fear “my” device is using other DPs for configuration - if any? :thinking: