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

Here is the data section:

  • endpointId: 01
  • application: 48
  • manufacturer: _TZE200_cirvgep4
  • model: TS0601

Here is more about the device:

The small leaflet says in their app " You can switch the temperature unit between Fahrenheit and Celsius in the setting then press the reset button once. it will sync on both on the screen and in the app"

Hi @kkossev did you get a chance to look at it by any chance? Thank you!

Hi @user611 ,
Please update to dev. branch ver. 1.3.10 "2023/11/28 7:19 AM".
The HE hub Celsius/Fahrenheit setting is now sent to your device when clicking on the Preferences Save button. I don't know if this sensor is a sleepy device or not, so you may need to press shortly the pairing button on the device at the same time when you click on the Save button in the browser to make it wake up and accept the setting.

I have also enabled the temperature sensitivity configuration, please let me know if this works as well.

OK thank you! i will test it out when i get home! Should i delete the drivers from HPM and add this one? or just add this one as separate driver and then switch the device driver?

Don't delete the driver that you have installed from HPM.

Manually update to the dev. branch version - the easiest way is to use the 'Import' button within Hubitat Driver Code Editor :

thank you for the new driver. finally got it working! It is very finicky device for pairing! it changed the Celsius/Fahrenheit on the screen that is nice now!

Hard to say how the temperature sensitivity working actually! i have two devices on one i set the temp sensitivity to 0.1 and other one 0.5 so 0.1 reports a little frequently but not consistently so really hard to say how well this works.

I will keep monitoring for sometime and see how it goes!

thank you again!

1 Like

Hello :wave: I have this temperature/humidity sensor from Ali

Trying driver "Tuya Temperature Humidity Illuminance LCD Display with a Clock" version "1.3.10".

It doesn't show the measured values. Is there a solution for that?

Device info:

Manufacturer:	_TZE200_9yapgbuv
Endpoint 01 application:	48
Endpoint 01 endpointId:	01
Endpoint 01 idAsInt:	1
Endpoint 01 inClusters:	0004,0005,EF00,0000
Endpoint 01 initialized:	true
Endpoint 01 manufacturer:	_TZE200_9yapgbuv
Endpoint 01 model:	TS0601
Endpoint 01 outClusters:	0019,000A
Endpoint 01 profileId:	0104
Endpoint 01 stage:	4

Screenshot:

I tried to set the model group to TS0601_Tuya and Tuya2, didn't help...

Thanks for reply

Did you pair the device after installing the custom driver, or the driver was already installed when you paired the device to the hub?

Pair it again, close to the hub.

I tried both already (now again..)


then... (F5 makes no difference btw)

1 Like

Is anything in the live logs coming from the device when you remove and re-insert the battery again? Make sure the Debug logging is turned on in advance.

Stats: rxCtr state counts the number of the Zigbee messages received from teh device - this number is too low..

This is a sleepy Zigbee device, so Initialize / Ping / Refresh buttons will do nothing. The device must be initialized properly during the pairing and the most important - to stay connected to the Hubitat hub.

If removing and re-instering the battery shows no new activity in the live logs, we may have a connectivity problem. If you see something received - this is a good sign.

I wanted to proceed with the steps you provided but at first, I just randomly refreshed the page, and the measurements were suddenly there :thinking: :tada:

1 Like

Good to see that!

I have also noticed that sometimes the device web page does not update automatically, you need to press F5 or n the browser to refresh

1 Like

It is refreshing the measurements automatically now (without page refresh). I was probably inpatient previously after re-pairing when I didn't see those immediately, so I pressed "initialize" and other random attempts which probably broke the thing... Thanks for your help.

1 Like

I have a feeling that battery reading is not correct when minus celsius degrees. Battery is 100% only for while and then it drops to 1%. It works fine but reports 1%. Same behavior in two different locations in different hubs.

_TZ3000_bguser20

I don't have this device exactly, mine is _TZ3000_xr3htd96, but it does not report regularly when put inside the freezer at negative temperatures... I will need to wait for the outside temperatures to go down in the next weeks, as the battery level is not reported frequently.

You can try with Debug preference turned on - look at the device Past Logs what exactly was sent at the time, when the driver registered 1% battery?

Summary


dev:556
2023-12-11 21:11:48.136debugLämpö Jutan autopaikalla getBatteryPercentageResult: rawValue = 2 -> 1%

dev:5562023-12-11 21:11:48.124debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F01000110210020022000201A, dni:2D1F, endpoint:01, cluster:0001, size:10, attrId:0021, encoding:20, command:0A, value:02, clusterInt:1, attrInt:33, additionalAttrs:[[value:1A, encoding:20, attrId:0020, consumedBytes:4, attrInt:32]]]

dev:5562023-12-11 21:02:52.636infoLämpö Jutan autopaikalla temperature is 21.67 °C

dev:5562023-12-11 21:02:52.614debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A0000297708, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:0877, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:53:28.236debugLämpö Jutan autopaikalla NOT PARSED : [raw:2D1F0100003ADFFF421901000000110100000011010000001101000000110100000011, dni:2D1F, endpoint:01, cluster:0000, size:3A, attrId:FFDF, encoding:42, command:0A, value:, clusterInt:0, attrInt:65503]

dev:5562023-12-11 20:53:28.231debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0100003ADFFF421901000000110100000011010000001101000000110100000011, dni:2D1F, endpoint:01, cluster:0000, size:3A, attrId:FFDF, encoding:42, command:0A, value:, clusterInt:0, attrInt:65503]

dev:5562023-12-11 20:52:58.015infoLämpö Jutan autopaikalla humidity is 56.9 % RH (delayed)

dev:5562023-12-11 20:52:57.891infoLämpö Jutan autopaikalla temperature is 22.66 °C (delayed)

dev:5562023-12-11 20:52:52.983debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.9 % RH]

dev:5562023-12-11 20:52:52.976debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213616, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1636, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:52.851debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.6, type:delayed, isStateChange:true, descriptionText:temperature is 22.66 °C]

dev:5562023-12-11 20:52:52.844debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DA08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DA, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:47.743infoLämpö Jutan autopaikalla humidity is 56.9 % RH (delayed)

dev:5562023-12-11 20:52:47.676infoLämpö Jutan autopaikalla humidity is 56.9 % RH

dev:5562023-12-11 20:52:47.671debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213616, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1636, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:47.631infoLämpö Jutan autopaikalla temperature is 22.67 °C (delayed)

dev:5562023-12-11 20:52:47.551infoLämpö Jutan autopaikalla temperature is 22.66 °C

dev:5562023-12-11 20:52:47.545debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DA08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DA, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:42.681debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.9 % RH]

dev:5562023-12-11 20:52:42.674debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213516, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1635, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:42.552debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.6, type:delayed, isStateChange:true, descriptionText:temperature is 22.67 °C]

dev:5562023-12-11 20:52:42.546debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DB08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DB, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:37.757infoLämpö Jutan autopaikalla humidity is 56.8 % RH (delayed)

dev:5562023-12-11 20:52:37.682infoLämpö Jutan autopaikalla humidity is 56.9 % RH

dev:5562023-12-11 20:52:37.675debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213516, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1635, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:37.551infoLämpö Jutan autopaikalla temperature is 22.69 °C

dev:5562023-12-11 20:52:37.546debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DD08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DD, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:32.684debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.8 % RH]

dev:5562023-12-11 20:52:32.677debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213416, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1634, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:32.564debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.7, type:delayed, isStateChange:true, descriptionText:temperature is 22.71 °C]

dev:5562023-12-11 20:52:32.557debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DF08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DF, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:27.683infoLämpö Jutan autopaikalla humidity is 56.8 % RH

dev:5562023-12-11 20:52:27.675debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213416, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1634, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:27.557infoLämpö Jutan autopaikalla temperature is 22.71 °C

dev:5562023-12-11 20:52:27.550debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029DF08, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08DF, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:22.684debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.8 % RH]

dev:5562023-12-11 20:52:22.676debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213416, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1634, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:22.566debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.7, type:delayed, isStateChange:true, descriptionText:temperature is 22.73 °C]

dev:5562023-12-11 20:52:22.556debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E108, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E1, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:17.688infoLämpö Jutan autopaikalla humidity is 56.8 % RH

dev:5562023-12-11 20:52:17.681debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213316, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1633, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:17.554infoLämpö Jutan autopaikalla temperature is 22.75 °C

dev:5562023-12-11 20:52:17.548debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E308, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E3, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:12.710debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.8 % RH]

dev:5562023-12-11 20:52:12.701debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213116, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1631, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:12.603debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.7, type:delayed, isStateChange:true, descriptionText:temperature is 22.75 °C]

dev:5562023-12-11 20:52:12.597debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E308, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E3, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:07.883infoLämpö Jutan autopaikalla humidity is 56.8 % RH (delayed)

dev:5562023-12-11 20:52:07.718infoLämpö Jutan autopaikalla humidity is 56.8 % RH

dev:5562023-12-11 20:52:07.713debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213016, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1630, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:07.678infoLämpö Jutan autopaikalla temperature is 22.78 °C (delayed)

dev:5562023-12-11 20:52:07.608infoLämpö Jutan autopaikalla temperature is 22.76 °C

dev:5562023-12-11 20:52:07.602debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E408, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E4, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:52:02.709debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [value:57, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 56.8 % RH]

dev:5562023-12-11 20:52:02.700debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213016, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1630, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:52:02.568debugLämpö Jutan autopaikalla DELAYING 5 seconds event : [name:temperature, unit:°C, value:22.7, type:delayed, isStateChange:true, descriptionText:temperature is 22.78 °C]

dev:5562023-12-11 20:52:02.560debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E608, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E6, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:51:57.697infoLämpö Jutan autopaikalla humidity is 56.8 % RH

dev:5562023-12-11 20:51:57.689debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104050A0000213016, dni:2D1F, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:1630, clusterInt:1029, attrInt:0]

dev:5562023-12-11 20:51:57.564infoLämpö Jutan autopaikalla temperature is 22.8 °C

dev:5562023-12-11 20:51:57.557debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0104020A000029E808, dni:2D1F, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:08E8, clusterInt:1026, attrInt:0]

dev:5562023-12-11 20:51:52.663debugLämpö Jutan autopaikalla getBatteryPercentageResult: rawValue = 200 -> 100%

dev:5562023-12-11 20:51:52.658debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F01000110210020C82000201E, dni:2D1F, endpoint:01, cluster:0001, size:10, attrId:0021, encoding:20, command:0A, value:C8, clusterInt:1, attrInt:33, additionalAttrs:[[value:1E, encoding:20, attrId:0020, consumedBytes:4, attrInt:32]]]

dev:5562023-12-11 20:51:52.535debugLämpö Jutan autopaikalla Tuya check-in message (attribute 0001 reported: 45)

dev:5562023-12-11 20:51:52.529debugLämpö Jutan autopaikalla parse() descMap = [raw:2D1F0100001801002045E2FF2033E4FF2001, dni:2D1F, endpoint:01, cluster:0000, size:18, attrId:0001, encoding:20, command:0A, value:45, clusterInt:0, attrInt:1, additionalAttrs:[[value:33, encoding:20, attrId:FFE2, consumedBytes:4, attrInt:65506], [value:01, encoding:20, attrId:FFE4, consumedBytes:4, attrInt:65508]]]

dev:5562023-12-11 20:51:46.155infoLämpö Jutan autopaikalla device announcement

dev:5562023-12-11 20:51:46.151debugLämpö Jutan autopaikalla parse() descMap = [raw:catchall: 0000 0013 00 00 0040 00 2D1F 00 00 0000 00 00 001F2DFE63BFB8C338C1A480, profileId:0000, clusterId:0013, clusterInt:19, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:2D1F, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[00, 1F, 2D, FE, 63, BF, B8, C3, 38, C1, A4, 80]]

It doesn’t seem to need minus degrees afterall. I only have those outside.

Took sensor inside and let it warm to room temp. Rejoined with same batteries. Few battery reportings 100% and then to 1%. Strange

Thank you for the detailed logs!
For me, this is undoubtedly a device firmware bug, but it could be patched by ignoring the 1% battery report in the driver, if the previously reported battery percentage was greater than 10% as an example, as it is obviously abnormal the battery percentage remaining to drop so quickly.

Hi,

Previous battery value was 100% and the real value is still probably the same. Just checked with battery tester and voltage is fine.

Hello,
Can I change humidity sensitivity to 1% for this device?

  • manufacturer: _TZ3000_xr3htd96
  • model: TS0201

Until now, temperature change each 1°C change but humidity update only each 30min exactly. I need more responsive humidity update for bathroom.
Thank you

I ordered one of these from Amazon. Looked exactly like one of the supported devices. But alas, while it paired -- not getting anything useful for temp/humidity.

It's coming back as

endpointId: 01
application: 48
manufacturer: _TZE200_cirvgep4
model: TS0601
tuyaVersion: 1.0.8

The comments in the driver mention this "thing" -- but other than the comments, I'm seeing no reference to it in the actual code.

  • ver. 1.3.5 2023-05-28 kkossev - sendRttEvent exception fixed; added _TZE200_cirvgep4 in TS0601_Tuya group;
  • ver. 1.3.9 2023-09-29 kkossev - added Sonoff SNZB-02P; added TS0201 _TZ3210_ncw88jfq; moved _TZE200_yjjdcqsq and _TZE200_cirvgep4 to a new group 'TS0601_Tuya_2'; added _TZE204_upagmta9, added battery state 'low', 'medium', 'high'

Symptoms: No temp, no humidity, clock not sync'd

Current States

  • _info : installed
  • healthStatus : online
  • powerSource : dc

State Variables

  • lastTx : {"tempCfg":"-1,-1,-1","humiCfg":"-1,-1,-1","tempCfgOK":false,"humiCfgOK":false,"cfgFailure":false,"cfgTimer":0}
  • modelGroup : TS0601_Tuya_2
  • lastRx : {"tempTime":1702604378065,"humiTime":1702604378065,"tempCfg":"-1,-1,-1","humiCfg":"-1,-1,-1"}
  • stats : {"date":"2023-12-14","rxCtr":4283,"txCtr":4,"rejoins":1096}
  • driverVersion : 1.3.9 2023/09/29 10:54 PM
  • notPresentCounter : 0
  • configState : 0

Logs:

dev:10892023-12-16 10:38:31.874 AMdebugTemperature - Tuya Display 1 parse() descMap = [raw:catchall: 0104 EF00 01 01 0040 00 802A 01 00 0000 11 01 000340, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:802A, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:11, direction:01, data:[00, 03, 40]]

dev:10892023-12-16 10:38:30.823 AMdebugTemperature - Tuya Display 1 Tuya check-in message (attribute 0001 reported: 48)

dev:10892023-12-16 10:38:30.819 AMdebugTemperature - Tuya Display 1 parse() descMap = [raw:802A0100001801002048E2FF2038E4FF2001, dni:802A, endpoint:01, cluster:0000, size:18, attrId:0001, encoding:20, command:0A, value:48, clusterInt:0, attrInt:1, additionalAttrs:[[value:38, encoding:20, attrId:FFE2, consumedBytes:4, attrInt:65506], [value:01, encoding:20, attrId:FFE4, consumedBytes:4, attrInt:65508]]]

dev:10892023-12-16 10:38:25.801 AMinfoTemperature - Tuya Display 1 device announcement

dev:10892023-12-16 10:38:25.742 AMdebugTemperature - Tuya Display 1 parse() descMap = [raw:catchall: 0000 0013 00 00 0040 00 802A 00 00 0000 00 00 002A80E3260B4AF238C1A480, profileId:0000, clusterId:0013, clusterInt:19, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:802A, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[00, 2A, 80, E3, 26, 0B, 4A, F2, 38, C1, A4, 80]]

1 Like