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

Was not successful changing display to F. Clicking the pair button wakes it up (for reference) Tried re-pairing also.

dev:1772025-02-22 15:01:38.379infoSensor Kitchen Display temperature is 78.62 °F (delayed)
dev:1772025-02-22 15:01:38.251infoSensor Kitchen Display humidity is 71.8 % RH (delayed)
dev:1772025-02-22 15:01:36.336infoSensor Kitchen Display Reporting Configuration Response for humidity (status: Success) is: min=10 max=3600 delta=500
dev:1772025-02-22 15:01:36.335debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:36.334debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0405 attribite:0000, data=[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01] (Status: Success) min=10 max=3600 delta=500
dev:1772025-02-22 15:01:36.332debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401, profileId:0104, clusterId:0405, clusterInt:1029, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01]] description = catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401
dev:1772025-02-22 15:01:35.017infoSensor Kitchen Display Received Write Attribute Response for cluster:E002 , data=[86, 0B, E0] (Status: Failure)
dev:1772025-02-22 15:01:35.015debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0, profileId:0104, clusterId:E002, clusterInt:57346, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[86, 0B, E0]] description = catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0
dev:1772025-02-22 15:01:34.708infoSensor Kitchen Display Reporting Configuration Response for battery % (status: Success) is: min=10 max=14400 delta=1
dev:1772025-02-22 15:01:34.707debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:34.705debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0001 attribite:0021, data=[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01] (Status: Success) min=10 max=14400 delta=1
dev:1772025-02-22 15:01:34.704debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801, profileId:0104, clusterId:0001, clusterInt:1, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01]] description = catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801
dev:1772025-02-22 15:01:34.503infoSensor Kitchen Display Reporting Configuration Response for humidity (status: Success) is: min=10 max=3600 delta=500
dev:1772025-02-22 15:01:34.502debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:34.501debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0405 attribite:0000, data=[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01] (Status: Success) min=10 max=3600 delta=500
dev:1772025-02-22 15:01:34.499debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401, profileId:0104, clusterId:0405, clusterInt:1029, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01]] description = catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401
dev:1772025-02-22 15:01:34.367debugSensor Kitchen Display DELAYING 4 seconds event : [name:temperature, unit:°F, value:78.6, type:delayed, isStateChange:true, descriptionText:temperature is 78.62 °F]
dev:1772025-02-22 15:01:34.365debugSensor Kitchen Display parse() descMap =[raw:175C0104020A0000291E0A, dni:175C, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:0A1E, clusterInt:1026, attrInt:0] description = read attr - raw: 175C0104020A0000291E0A, dni: 175C, endpoint: 01, cluster: 0402, size: 0A, attrId: 0000, encoding: 29, command: 0A, value: 1E0A
dev:1772025-02-22 15:01:34.258infoSensor Kitchen Display Reporting Configuration Response for temperature (status: Success) is: min=10 max=3600 delta=50
dev:1772025-02-22 15:01:34.257debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:34.255debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0402 attribite:0000, data=[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00] (Status: Success) min=10 max=3600 delta=50
dev:1772025-02-22 15:01:34.254debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200, profileId:0104, clusterId:0402, clusterInt:1026, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00]] description = catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200
dev:1772025-02-22 15:01:34.237debugSensor Kitchen Display DELAYING 4 seconds event : [value:72, name:humidity, unit:% RH, type:delayed, isStateChange:true, descriptionText:humidity is 71.8 % RH]
dev:1772025-02-22 15:01:34.235debugSensor Kitchen Display parse() descMap =[raw:175C0104050A000021CE02, dni:175C, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:02CE, clusterInt:1029, attrInt:0] description = read attr - raw: 175C0104050A000021CE02, dni: 175C, endpoint: 01, cluster: 0405, size: 0A, attrId: 0000, encoding: 21, command: 0A, value: CE02
dev:1772025-02-22 15:01:34.135infoSensor Kitchen Display Received Configure Reporting Response for cluster:0001 , data=[00, 00, 21, 00] (Status: Success)
dev:1772025-02-22 15:01:34.133debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 07 01 00002100, profileId:0104, clusterId:0001, clusterInt:1, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00, 00, 21, 00]] description = catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 07 01 00002100
dev:1772025-02-22 15:01:34.126infoSensor Kitchen Display Received bind response, data=[BE, 00] (Sequence Number:BE, Status: Success)
dev:1772025-02-22 15:01:34.124debugSensor Kitchen Display parse() descMap =[raw:catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 BE00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[BE, 00]] description = catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 BE00
dev:1772025-02-22 15:01:34.067debugSensor Kitchen Display getBatteryPercentageResult: rawValue = 200 -> 100%
dev:1772025-02-22 15:01:34.065debugSensor Kitchen Display parse() descMap =[raw:175C01000110210020C82000201E, dni:175C, 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]]] description = read attr - raw: 175C01000110210020C82000201E, dni: 175C, endpoint: 01, cluster: 0001, size: 10, attrId: 0021, encoding: 20, command: 0A, value: C82000201E
dev:1772025-02-22 15:01:33.957debugSensor Kitchen Display getBatteryPercentageResult: rawValue = 200 -> 100%
dev:1772025-02-22 15:01:33.955debugSensor Kitchen Display parse() descMap =[raw:175C01000108210020C8, dni:175C, endpoint:01, cluster:0001, size:08, attrId:0021, encoding:20, command:0A, value:C8, clusterInt:1, attrInt:33] description = read attr - raw: 175C01000108210020C8, dni: 175C, endpoint: 01, cluster: 0001, size: 08, attrId: 0021, encoding: 20, command: 0A, value: C8
dev:1772025-02-22 15:01:33.710traceSensor Kitchen Display sendZigbeeCommands(cmd=[zdo bind 0x175C 0x01 0x01 0x0001 {A4C138590486F759} {}, delay 200, he cr 0x175C 0x01 1 33 32 10 14400 {01} {}, delay 200, he raw 0x175C 1 0x01 0x0402 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0405 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0001 {10 00 08 00 2100}, delay 250, he wattr 0x175C 0x01 0xE002 0xE00B 0x30 {01} {}, delay 266])
dev:1772025-02-22 15:01:33.708infoSensor Kitchen Display no changed configuration parameters to be sent to the device.
dev:1772025-02-22 15:01:33.707warntemperatureScale = 1
dev:1772025-02-22 15:01:33.704debugSensor Kitchen Display Humidity reporting already configured (10,3600,500), skipping ...
dev:1772025-02-22 15:01:33.703debugSensor Kitchen Display Temperature reporting already configured (10,3600,50), skipping ...
dev:1772025-02-22 15:01:33.702infoSensor Kitchen Display Debug logging will be turned off after 24 hours
dev:1772025-02-22 15:01:33.684infoSensor Kitchen Display Debug logging is true; Description text logging is true
dev:1772025-02-22 15:01:33.682infoSensor Kitchen Display Updating Sensor Kitchen Display (Tuya Temperature Humidity Illuminance LCD Display with a Clock) model TS0201 manufacturer _TZ3210_ncw88jfq modelGroupPreference = Auto detect (TS0201_TH)
dev:1772025-02-22 15:01:28.415infoSensor Kitchen Display temperature is 78.8 °F
dev:1772025-02-22 15:01:28.412debugSensor Kitchen Display parse() descMap =[raw:175C0104020A000029280A, dni:175C, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:0A28, clusterInt:1026, attrInt:0] description = read attr - raw: 175C0104020A000029280A, dni: 175C, endpoint: 01, cluster: 0402, size: 0A, attrId: 0000, encoding: 29, command: 0A, value: 280A
dev:1772025-02-22 15:01:28.273infoSensor Kitchen Display humidity is 74.6 % RH
dev:1772025-02-22 15:01:28.271debugSensor Kitchen Display parse() descMap =[raw:175C0104050A000021EA02, dni:175C, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:02EA, clusterInt:1029, attrInt:0] description = read attr - raw: 175C0104050A000021EA02, dni: 175C, endpoint: 01, cluster: 0405, size: 0A, attrId: 0000, encoding: 21, command: 0A, value: EA02
dev:1772025-02-22 15:01:28.187debugSensor Kitchen Display getBatteryPercentageResult: rawValue = 200 -> 100%
dev:1772025-02-22 15:01:28.186debugSensor Kitchen Display parse() descMap =[raw:175C01000110210020C82000201E, dni:175C, 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]]] description = read attr - raw: 175C01000110210020C82000201E, dni: 175C, endpoint: 01, cluster: 0001, size: 10, attrId: 0021, encoding: 20, command: 0A, value: C82000201E
dev:1772025-02-22 15:01:17.764infoSensor Kitchen Display Received Write Attribute Response for cluster:E002 , data=[86, 0B, E0] (Status: Failure)
dev:1772025-02-22 15:01:17.762debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0, profileId:0104, clusterId:E002, clusterInt:57346, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[86, 0B, E0]] description = catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0
dev:1772025-02-22 15:01:17.152infoSensor Kitchen Display Reporting Configuration Response for battery % (status: Success) is: min=10 max=14400 delta=1
dev:1772025-02-22 15:01:17.151debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:17.150debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0001 attribite:0021, data=[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01] (Status: Success) min=10 max=14400 delta=1
dev:1772025-02-22 15:01:17.148debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801, profileId:0104, clusterId:0001, clusterInt:1, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01]] description = catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801
dev:1772025-02-22 15:01:16.950infoSensor Kitchen Display Reporting Configuration Response for humidity (status: Success) is: min=10 max=3600 delta=500
dev:1772025-02-22 15:01:16.948debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:16.947debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0405 attribite:0000, data=[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01] (Status: Success) min=10 max=3600 delta=500
dev:1772025-02-22 15:01:16.946debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401, profileId:0104, clusterId:0405, clusterInt:1029, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01]] description = catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401
dev:1772025-02-22 15:01:16.727infoSensor Kitchen Display Reporting Configuration Response for temperature (status: Success) is: min=10 max=3600 delta=50
dev:1772025-02-22 15:01:16.726debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:01:16.725debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0402 attribite:0000, data=[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00] (Status: Success) min=10 max=3600 delta=50
dev:1772025-02-22 15:01:16.723debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200, profileId:0104, clusterId:0402, clusterInt:1026, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00]] description = catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200
dev:1772025-02-22 15:01:16.609infoSensor Kitchen Display Received bind response, data=[B7, 00] (Sequence Number:B7, Status: Success)
dev:1772025-02-22 15:01:16.608debugSensor Kitchen Display parse() descMap =[raw:catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 B700, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[B7, 00]] description = catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 B700
dev:1772025-02-22 15:01:16.156traceSensor Kitchen Display sendZigbeeCommands(cmd=[zdo bind 0x175C 0x01 0x01 0x0001 {A4C138590486F759} {}, delay 200, he cr 0x175C 0x01 1 33 32 10 14400 {01} {}, delay 200, he raw 0x175C 1 0x01 0x0402 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0405 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0001 {10 00 08 00 2100}, delay 250, he wattr 0x175C 0x01 0xE002 0xE00B 0x30 {01} {}, delay 266])
dev:1772025-02-22 15:01:16.154infoSensor Kitchen Display no changed configuration parameters to be sent to the device.
dev:1772025-02-22 15:01:16.153warntemperatureScale = 1
dev:1772025-02-22 15:01:16.151debugSensor Kitchen Display Humidity reporting already configured (10,3600,500), skipping ...
dev:1772025-02-22 15:01:16.150debugSensor Kitchen Display Temperature reporting already configured (10,3600,50), skipping ...
dev:1772025-02-22 15:01:16.148infoSensor Kitchen Display Debug logging will be turned off after 24 hours
dev:1772025-02-22 15:01:16.133infoSensor Kitchen Display Debug logging is true; Description text logging is true
dev:1772025-02-22 15:01:16.132infoSensor Kitchen Display Updating Sensor Kitchen Display (Tuya Temperature Humidity Illuminance LCD Display with a Clock) model TS0201 manufacturer _TZ3210_ncw88jfq modelGroupPreference = Auto detect (TS0201_TH)
dev:1772025-02-22 15:01:15.866infoSensor Kitchen Display humidity is 80.8 % RH
dev:1772025-02-22 15:01:15.864debugSensor Kitchen Display parse() descMap =[raw:175C0104050A0000212803, dni:175C, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:0328, clusterInt:1029, attrInt:0] description = read attr - raw: 175C0104050A0000212803, dni: 175C, endpoint: 01, cluster: 0405, size: 0A, attrId: 0000, encoding: 21, command: 0A, value: 2803
dev:1772025-02-22 15:01:15.810warnSensor Kitchen Display ignored invalid humidity 152.6 (152.6)
dev:1772025-02-22 15:01:15.808debugSensor Kitchen Display parse() descMap =[raw:175C0104050A000021F605, dni:175C, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:05F6, clusterInt:1029, attrInt:0] description = read attr - raw: 175C0104050A000021F605, dni: 175C, endpoint: 01, cluster: 0405, size: 0A, attrId: 0000, encoding: 21, command: 0A, value: F605
dev:1772025-02-22 15:01:15.797infoSensor Kitchen Display temperature is 79.16 °F
dev:1772025-02-22 15:01:15.755debugSensor Kitchen Display parse() descMap =[raw:175C0104020A0000293C0A, dni:175C, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:0A3C, clusterInt:1026, attrInt:0] description = read attr - raw: 175C0104020A0000293C0A, dni: 175C, endpoint: 01, cluster: 0402, size: 0A, attrId: 0000, encoding: 29, command: 0A, value: 3C0A

Here's another log. I tried switching back to C in preferences (save, click pairing button) then switch to F and save, click pair button.

dev:1772025-02-22 15:05:34.790infoSensor Kitchen Display Received Write Attribute Response for cluster:E002 , data=[86, 0B, E0] (Status: Failure)
dev:1772025-02-22 15:05:34.788debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0, profileId:0104, clusterId:E002, clusterInt:57346, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[86, 0B, E0]] description = catchall: 0104 E002 01 01 0040 00 175C 00 00 0000 04 01 860BE0
dev:1772025-02-22 15:05:34.783infoSensor Kitchen Display Reporting Configuration Response for battery % (status: Success) is: min=10 max=14400 delta=1
dev:1772025-02-22 15:05:34.782debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:05:34.781debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0001 attribite:0021, data=[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01] (Status: Success) min=10 max=14400 delta=1
dev:1772025-02-22 15:05:34.779debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801, profileId:0104, clusterId:0001, clusterInt:1, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 21, 00, 20, 0A, 00, 40, 38, 01]] description = catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 09 01 00002100200A00403801
dev:1772025-02-22 15:05:34.158infoSensor Kitchen Display temperature is 76.64 °F
dev:1772025-02-22 15:05:34.156debugSensor Kitchen Display parse() descMap =[raw:175C0104020A000029B009, dni:175C, endpoint:01, cluster:0402, size:0A, attrId:0000, encoding:29, command:0A, value:09B0, clusterInt:1026, attrInt:0] description = read attr - raw: 175C0104020A000029B009, dni: 175C, endpoint: 01, cluster: 0402, size: 0A, attrId: 0000, encoding: 29, command: 0A, value: B009
dev:1772025-02-22 15:05:34.152infoSensor Kitchen Display Reporting Configuration Response for humidity (status: Success) is: min=10 max=3600 delta=500
dev:1772025-02-22 15:05:34.150debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:05:34.149debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0405 attribite:0000, data=[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01] (Status: Success) min=10 max=3600 delta=500
dev:1772025-02-22 15:05:34.147debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401, profileId:0104, clusterId:0405, clusterInt:1029, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 21, 0A, 00, 10, 0E, F4, 01]] description = catchall: 0104 0405 01 01 0040 00 175C 00 00 0000 09 01 00000000210A00100EF401
dev:1772025-02-22 15:05:34.015infoSensor Kitchen Display humidity is 30.8 % RH
dev:1772025-02-22 15:05:34.013debugSensor Kitchen Display parse() descMap =[raw:175C0104050A0000213401, dni:175C, endpoint:01, cluster:0405, size:0A, attrId:0000, encoding:21, command:0A, value:0134, clusterInt:1029, attrInt:0] description = read attr - raw: 175C0104050A0000213401, dni: 175C, endpoint: 01, cluster: 0405, size: 0A, attrId: 0000, encoding: 21, command: 0A, value: 3401
dev:1772025-02-22 15:05:33.976infoSensor Kitchen Display Reporting Configuration Response for temperature (status: Success) is: min=10 max=3600 delta=50
dev:1772025-02-22 15:05:33.975debugSensor Kitchen Display both T&H configured!
dev:1772025-02-22 15:05:33.974debugSensor Kitchen Display Received Read Reporting Configuration response (0x09) for cluster:0402 attribite:0000, data=[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00] (Status: Success) min=10 max=3600 delta=50
dev:1772025-02-22 15:05:33.972debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200, profileId:0104, clusterId:0402, clusterInt:1026, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:09, direction:01, data:[00, 00, 00, 00, 29, 0A, 00, 10, 0E, 32, 00]] description = catchall: 0104 0402 01 01 0040 00 175C 00 00 0000 09 01 00000000290A00100E3200
dev:1772025-02-22 15:05:33.938infoSensor Kitchen Display Received Configure Reporting Response for cluster:0001 , data=[00, 00, 21, 00] (Status: Success)
dev:1772025-02-22 15:05:33.936debugSensor Kitchen Display parse() descMap =[raw:catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 07 01 00002100, profileId:0104, clusterId:0001, clusterInt:1, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:07, direction:01, data:[00, 00, 21, 00]] description = catchall: 0104 0001 01 01 0040 00 175C 00 00 0000 07 01 00002100
dev:1772025-02-22 15:05:33.907infoSensor Kitchen Display Received bind response, data=[CE, 00] (Sequence Number:CE, Status: Success)
dev:1772025-02-22 15:05:33.906debugSensor Kitchen Display parse() descMap =[raw:catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 CE00, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:175C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[CE, 00]] description = catchall: 0000 8021 00 00 0040 00 175C 00 00 0000 00 00 CE00
dev:1772025-02-22 15:05:33.869debugSensor Kitchen Display getBatteryPercentageResult: rawValue = 200 -> 100%
dev:1772025-02-22 15:05:33.868debugSensor Kitchen Display parse() descMap =[raw:175C01000110210020C82000201E, dni:175C, 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]]] description = read attr - raw: 175C01000110210020C82000201E, dni: 175C, endpoint: 01, cluster: 0001, size: 10, attrId: 0021, encoding: 20, command: 0A, value: C82000201E
dev:1772025-02-22 15:05:33.759debugSensor Kitchen Display getBatteryPercentageResult: rawValue = 200 -> 100%
dev:1772025-02-22 15:05:33.758debugSensor Kitchen Display parse() descMap =[raw:175C01000108210020C8, dni:175C, endpoint:01, cluster:0001, size:08, attrId:0021, encoding:20, command:0A, value:C8, clusterInt:1, attrInt:33] description = read attr - raw: 175C01000108210020C8, dni: 175C, endpoint: 01, cluster: 0001, size: 08, attrId: 0021, encoding: 20, command: 0A, value: C8
dev:1772025-02-22 15:05:33.313traceSensor Kitchen Display sendZigbeeCommands(cmd=[zdo bind 0x175C 0x01 0x01 0x0001 {A4C138590486F759} {}, delay 200, he cr 0x175C 0x01 1 33 32 10 14400 {01} {}, delay 200, he raw 0x175C 1 0x01 0x0402 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0405 {10 00 08 00 0000}, delay 250, he raw 0x175C 1 0x01 0x0001 {10 00 08 00 2100}, delay 250, he wattr 0x175C 0x01 0xE002 0xE00B 0x30 {01} {}, delay 266])
dev:1772025-02-22 15:05:33.312infoSensor Kitchen Display no changed configuration parameters to be sent to the device.
dev:1772025-02-22 15:05:33.310warntemperatureScale = 1
dev:1772025-02-22 15:05:33.309debugSensor Kitchen Display Humidity reporting already configured (10,3600,500), skipping ...
dev:1772025-02-22 15:05:33.307debugSensor Kitchen Display Temperature reporting already configured (10,3600,50), skipping ...
dev:1772025-02-22 15:05:33.306infoSensor Kitchen Display Debug logging will be turned off after 24 hours
dev:1772025-02-22 15:05:33.292infoSensor Kitchen Display Debug logging is true; Description text logging is true
dev:1772025-02-22 15:05:33.291infoSensor Kitchen Display Updating Sensor Kitchen Display (Tuya Temperature Humidity Illuminance LCD Display with a Clock) model TS0201 manufacturer _TZ3210_ncw88jfq modelGroupPreference = Auto detect (TS0201_TH)
1 Like

Thank you for the logs.
I see the device is responding back with a status ‘Failure’ on the temperature scale configuration command, will need to dig further.

Here's a link to some info I found regarding this device I linked above. The poster claims he was able to change the display to read F instead of C.

I tried looking at you driver code but couldn't decipher what the zigbee write command was doing around line 1163 enough to change it and try what I found.

I can confirm the Tuya DataPoint ID for changing the display is 101 according to this method. Find Tuya Data Points | Zigbee2MQTT

Maybe this will be of use in getting these to display in F.

Next step is wire shark if this doesn't pan out

1 Like

Mine all come up on device in f immediately after joining.

Is that on the HE device page/logs or on the display on the sensor? This is specifically about changing the display on the sensor.

Pairing to HE, Zigbee2MQTT or a Tuya hub the display on the sensors all show temp in C. Only in Tuya app (so far) can the display be set to show temp in F.

Sensor

The one I have is different and shown a few posts back.

@kkossev I decided to play with wireshark. And the sensor I referenced above. I also found some info on the Tuya protocol at Serial Communication Protocol-Tuya Developer Platform-Tuya Developer

Here are the relevant packets sent to/from the sensor from a Tuya hub using Tuya developer cloud) to change the display on the sensor to read either F or C.

Sent to sensor to change to C

Sensor responds


To sensor to change display to F

Sensor responds


Hope this helps.
Mike

2 Likes

Hi Guys, quick question..

So im using this driver with the HT sensor
Manufacturer: _TZ3210_ncw88jfq
Model: TS0201
image

it seems to be working fine , values reported are correctly, but logs are showing errors..

java.lang.NumberFormatException: For input string: "Celsius"

Tried playing around w/ the model group and stuff and reinitialized, then the device stopped responding

That's the exact same sensor/mfg I have. I did not have to change the model/group.

I would re-pair the device, You may want to remove it from HE first but re-pairing should reinitialize with correct driver parameters.

If you're wanting change the display to read in F, After you re-pair it click the Initialize button on the device "Commands" tab, and a moment later click the pairing button on the sensor. That will make sure it is awake to receive the commands from HE. Your logs indicate it's sleeping. Most battery powered devices will go to sleep and only wake up to transmit data. clicking the pairing button on the device wakes it up to receive data/instructions.

Next do the same for the Temperature unit on the "preferences" tab. Select "Fahrenheit", click "Save" then within 1 second click the pairing button on the sensor. The display should switch to F.

That's the procedure I used on 7 sensors and they all work without errors.

On a different note with these sensors they have a habit of occasionally (sometimes frequently) reporting erroneous/extreme low and incorrect humidity values.

Here's an example. The Green element in the graph below is one of these sensors on my patio. The Blue element is a different type of humidity sensor on another part of my property. You can see that both track pretty close but then the Tuya sensor reports an invalid humidity 2 separate times. This does occur over multiple units so it is not a one off instance. Just an FYI.

Blue line is in my main bathroom. The high peak was a shower.

thank you for the info and the head's up on the weird tuya values from time to time. i will watch out for these.

After sucess with the first USB powered temp/humidity sensor I bought from Amazon, I tried to buy another. The original seller had none available, so I bought the same device from a different seller.

The manufacturer is the same on both devices, specifically:
Mfg: _TZ3000_utwgoauk
However, the model numbers are different
First device: TS0201 - this one works great & stays paired
New device: SNZB-02 - this one won't stay paired

SNZB-02 is listed in @kkossev 's original post as a supported device so seems like it should work, but does not. Any suggestions?

I've recently picked up 2 of the Sonoff SNZB-02WD devices. They work with this driver, however I don't seem to be able to configure/select (under Advanced) the reporting based on a Temperature or Humidity change delta, only based on time.

Any idea on why? Is this not configurable for the device, or is that this device isn't "Auto Detected" and I need to manually select one of the profiles -- and if so, which one?

As the Sonoff 02D is available in this driver, I'd think this should be the same - but then again, not sure if Sonoff made other changes between the devices

Hi @kkossev, about a year or so ago I bought the following tuya temp/humidity/clock from aliexpress:

I’ve only ever had partial success with your driver- it will set the time on the device, and receive one or two temperature readings, but then stops receiving any events.

Changing the model setting doesn’t seem to help.

If I remove the device from Hubitat, re-pair it and re-apply the driver, it will usually set the time again and receive a reading or two. Taking out the batteries, adding them back and playing with the driver has also given the same result one time.

Is there anything I could do to help troubleshoot the driver with this device?

I need to know the device Zigbee Model and Manufacturer, as registered on your HE hub.

Here it is:

|Manufacturer|_TZE204_cirvgep4|

|Model|TS0601|

Hi Matt,

Update the driver manually to ver. 1.8.6 '2025/08/12 7:43 AM' (raw code link).

You may need to pair the device again to your hub (without deleting it before).

I don't know whether it will work more stable, but at least the data received should be decoded correctly. Your device seems to be a new variation of an existing model.

Installed the update and re-paired it. Like before, it still isn’t updating the temp or humidity beyond the first reading it receives.

I tried ping, refresh and reset statistics.

Would you like me to share the logs?

Just enable the Debug logging and then rapidly change the humidity. Is there anything in the live logs?

Don’t send any commands from the device web page, the sensor should send reports automatically.