[RELEASE] Tuya Zigbee Multi-Sensor 4 In 1 (PIR motion sensors) w/ healthStatus

Sounds to me like the device is not sending the Lux information. I had a motion sensor that quit sending motion, just battery and temperature. Took the battery out and swapped it with another sensor. Several months later, tried it again and it was working.

I’ve tried

  • HE inbuilt "Generic Zigbee Motion Sensor (no temp)" driver. Didn’t work
  • Tuya 4 in 1 Sensor. Profile: Unknown. Didn’t work
  • Tuya 4 in 1 Sensor. Profile: Tuya TS0202 Motion Sensor (IAS) . Didn’t work
  • Paired, Re-paird multiple times within 1-2m from HE. Didn’t work

Sensor was detected and successfully paired but it is not transmitting motion status back to hub.

Label Value
Application 46
Endpoint Id 01
Manufacturer _tz3000_lf56vpxj
Model TS0202
Tuya Version 1.0.6

Any advice is greatly appreciated. Thanks.

Once you manually select this profile, make sure the Debug loggin is enabled before clicking on the Save button.

Then, pair the Device again to your hub (without deleting it). Please pair it close to the hub.

Post the debug logs that follow the start of the new pairing process.

@kkossev hi there. sorry for the huge delay in reporting back on the 4-in-1 I was having issues with.
I tried your suggestion - and want to report, just as you said - you need to reconnect this device for it to start reporting! I switched to the korean driver - and still got no Lux / illuminance.

I pulled reports from my influx/grafana - this unit stopped reporting Lux about 65 days ago! I believe the unit has just simply died reporting Lux as someone else mentioned!
I”m switching back to your driver - and will live with the unit limping - and see if I can find another strong Temp/Motion/Humidity/Lux unit to replace this. I really liked this unit too! Never had a battery issue(2ct of AAA), it has a nice mount plate and just seemed to run and run. Do you have any suggested 4 in 1’s you really like?

dev:9052026-07-31 5:10:21.971 pmdebugTuya AAA PIR no refresh() commands defined for device type MultiSensor4in1
dev:9052026-07-31 5:10:21.969 pmdebugTuya AAA PIR no customRefresh method defined
dev:9052026-07-31 5:10:21.967 pmdebugTuya AAA PIR refreshFromDeviceProfileList()
dev:9052026-07-31 5:10:21.965 pmdebugTuya AAA PIR customRefresh()
dev:9052026-07-31 5:10:21.952 pmdebugTuya AAA PIR refresh()... DEVICE_TYPE is MultiSensor4in1 model=TS0202 manufacturer=_TZ3000_lf56vpxj
dev:9052026-07-31 4:58:38.038 pmdebugTuya AAA PIR deviceHealthCheck - online (notPresentCounter=1)
dev:9052026-07-31 4:31:08.059 pminfoTuya AAA PIR trace logging disabled...
dev:9052026-07-31 4:03:27.834 pminfoTuya AAA PIR Motion reset to inactive after 72s (software timeout)
dev:9052026-07-31 4:02:58.826 pmdebugTuya AAA PIR clearing the Status event
dev:9052026-07-31 4:02:30.157 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[47, 00, 00]
dev:9052026-07-31 4:02:30.153 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 470000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[47, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 470000
dev:9052026-07-31 4:02:27.839 pminfoTuya AAA PIR Motion is active 12s
dev:9052026-07-31 4:02:27.803 pmdebugTuya AAA PIR customParseIasMessage: Alarm 1 is set
dev:9052026-07-31 4:02:27.800 pmdebugTuya AAA PIR parse: zone status: zone status 0x0001 -- extended status 0x00 - sourceEndpoint:01, zoneId:00, delay:0000
dev:9052026-07-31 4:02:25.284 pmwarnTuya AAA PIR Unprocessed ZDO command: cluster=0000 command=00 attrId=null value=null data=[46, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]
dev:9052026-07-31 4:02:25.280 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 466D8D47FEFF958EDC0000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[46, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]] description=catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 466D8D47FEFF958EDC0000
dev:9052026-07-31 4:02:25.157 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[45, 00, 00]
dev:9052026-07-31 4:02:25.153 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 450000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[45, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 450000
dev:9052026-07-31 4:02:15.453 pminfoTuya AAA PIR Detected motion
dev:9052026-07-31 4:02:15.417 pmdebugTuya AAA PIR customParseIasMessage: Alarm 1 is set
dev:9052026-07-31 4:02:15.415 pmdebugTuya AAA PIR parse: zone status: zone status 0x0001 -- extended status 0x00 - sourceEndpoint:01, zoneId:00, delay:0000
dev:9052026-07-31 4:02:14.460 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[43, 00, 00]
dev:9052026-07-31 4:02:14.456 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 430000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[43, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 430000
dev:9052026-07-31 4:02:10.718 pminfoTuya AAA PIR Motion reset to inactive after 23s
dev:9052026-07-31 4:02:10.715 pmdebugTuya AAA PIR customParseIasMessage: Alarm 1 is cleared
dev:9052026-07-31 4:02:10.713 pmdebugTuya AAA PIR parse: zone status: zone status 0x0000 -- extended status 0x00 - sourceEndpoint:01, zoneId:00, delay:0000
dev:9052026-07-31 4:02:09.587 pmwarnTuya AAA PIR Unprocessed ZDO command: cluster=0000 command=00 attrId=null value=null data=[42, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]
dev:9052026-07-31 4:02:09.583 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 426D8D47FEFF958EDC0000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[42, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]] description=catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 426D8D47FEFF958EDC0000
dev:9052026-07-31 4:02:09.459 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[41, 00, 00]
dev:9052026-07-31 4:02:09.455 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 410000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[41, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 410000
dev:9052026-07-31 4:02:04.459 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[40, 00, 00]
dev:9052026-07-31 4:02:04.455 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 400000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[40, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 400000
dev:9052026-07-31 4:02:03.849 pminfoTuya AAA PIR standardParseIASCluster: IAS Zone State report is 'Enrolled' (1)
dev:9052026-07-31 4:02:03.848 pmdebugTuya AAA PIR standardParseIASCluster IAS read attribute 0000 response is 01
dev:9052026-07-31 4:02:03.846 pmdebugTuya AAA PIR standardParseIASCluster: cluster=[raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] attrInt=0 value=01
dev:9052026-07-31 4:02:03.844 pmdebugTuya AAA PIR customParseIASCluster: received unknown 0x0500 attribute 0x0000 (value 01)
dev:9052026-07-31 4:02:03.842 pmtraceTuya AAA PIR processClusterAttributeFromDeviceProfile: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0]
dev:9052026-07-31 4:02:03.840 pmtraceTuya AAA PIR customParseIASCluster: zigbee received cluster 0x0500 attribute 0x0000 value 1 (raw 01)
dev:9052026-07-31 4:02:03.837 pmdebugTuya AAA PIR parse: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] description=read attr - raw: 7C0C0105000A00003001, dni: 7C0C, endpoint: 01, cluster: 0500, size: 0A, attrId: 0000, encoding: 30, command: 01, value: 01
dev:9052026-07-31 4:02:03.821 pminfoTuya AAA PIR standardParseIASCluster: IAS Zone State report is 'Enrolled' (1)
dev:9052026-07-31 4:02:03.820 pmdebugTuya AAA PIR standardParseIASCluster IAS read attribute 0000 response is 01
dev:9052026-07-31 4:02:03.818 pmdebugTuya AAA PIR standardParseIASCluster: cluster=[raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] attrInt=0 value=01
dev:9052026-07-31 4:02:03.816 pmdebugTuya AAA PIR customParseIASCluster: received unknown 0x0500 attribute 0x0000 (value 01)
dev:9052026-07-31 4:02:03.814 pmtraceTuya AAA PIR processClusterAttributeFromDeviceProfile: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0]
dev:9052026-07-31 4:02:03.812 pmtraceTuya AAA PIR customParseIASCluster: zigbee received cluster 0x0500 attribute 0x0000 value 1 (raw 01)
dev:9052026-07-31 4:02:03.809 pmdebugTuya AAA PIR parse: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] description=read attr - raw: 7C0C0105000A00003001, dni: 7C0C, endpoint: 01, cluster: 0500, size: 0A, attrId: 0000, encoding: 30, command: 01, value: 01
dev:9052026-07-31 4:02:01.627 pmdebugTuya AAA PIR zigbee IAS_ZONE_CLUSTER command 0x00 response: Success
dev:9052026-07-31 4:02:01.623 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000
dev:9052026-07-31 4:02:01.312 pmdebugTuya AAA PIR zigbee IAS_ZONE_CLUSTER command 0x00 response: Success
dev:9052026-07-31 4:02:01.305 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000
dev:9052026-07-31 4:01:59.839 pminfoTuya AAA PIR standardParseIASCluster: IAS Zone State report is 'Enrolled' (1)
dev:9052026-07-31 4:01:59.837 pmdebugTuya AAA PIR standardParseIASCluster IAS read attribute 0000 response is 01
dev:9052026-07-31 4:01:59.834 pmdebugTuya AAA PIR standardParseIASCluster: cluster=[raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] attrInt=0 value=01
dev:9052026-07-31 4:01:59.829 pmdebugTuya AAA PIR customParseIASCluster: received unknown 0x0500 attribute 0x0000 (value 01)
dev:9052026-07-31 4:01:59.827 pmtraceTuya AAA PIR processClusterAttributeFromDeviceProfile: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0]
dev:9052026-07-31 4:01:59.822 pmtraceTuya AAA PIR customParseIASCluster: zigbee received cluster 0x0500 attribute 0x0000 value 1 (raw 01)
dev:9052026-07-31 4:01:59.818 pmdebugTuya AAA PIR parse: descMap = [raw:7C0C0105000A00003001, dni:7C0C, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] description=read attr - raw: 7C0C0105000A00003001, dni: 7C0C, endpoint: 01, cluster: 0500, size: 0A, attrId: 0000, encoding: 30, command: 01, value: 01
dev:9052026-07-31 4:01:59.803 pmdebugTuya AAA PIR zigbee response write IAS_ZONE_CLUSTER attribute response: Success
dev:9052026-07-31 4:01:59.799 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00
dev:9052026-07-31 4:01:59.593 pmwarnTuya AAA PIR Unprocessed ZDO command: cluster=0000 command=00 attrId=null value=null data=[3F, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]
dev:9052026-07-31 4:01:59.588 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 3F6D8D47FEFF958EDC0000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3F, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]] description=catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 3F6D8D47FEFF958EDC0000
dev:9052026-07-31 4:01:59.552 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[3E, 00, 00]
dev:9052026-07-31 4:01:59.548 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3E0000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3E, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3E0000
dev:9052026-07-31 4:01:59.533 pmdebugTuya AAA PIR zigbee IAS_ZONE_CLUSTER command 0x00 response: Success
dev:9052026-07-31 4:01:59.528 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 0B 01 0000
dev:9052026-07-31 4:01:59.514 pmdebugTuya AAA PIR sendZigbeeCommands: sent cmd=[he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 2000]
dev:9052026-07-31 4:01:59.505 pmdebugTuya AAA PIR enroll response: [he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 2000]
dev:9052026-07-31 4:01:59.501 pminfoTuya AAA PIR Sending IAS enroll response...
dev:9052026-07-31 4:01:59.499 pmdebugTuya AAA PIR parse: enroll request: enroll request endpoint 0x01 : data 0x000D
dev:9052026-07-31 4:01:59.484 pmdebugTuya AAA PIR zigbee response write IAS_ZONE_CLUSTER attribute response: Success
dev:9052026-07-31 4:01:59.432 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00
dev:9052026-07-31 4:01:59.246 pmdebugTuya AAA PIR sendZigbeeCommands: sent cmd=[he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 2000]
dev:9052026-07-31 4:01:59.239 pmdebugTuya AAA PIR enroll response: [he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 2000, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 2000]
dev:9052026-07-31 4:01:59.234 pminfoTuya AAA PIR Sending IAS enroll response...
dev:9052026-07-31 4:01:59.232 pmdebugTuya AAA PIR parse: enroll request: enroll request endpoint 0x01 : data 0x000D
dev:9052026-07-31 4:01:59.219 pmdebugTuya AAA PIR zigbee response write IAS_ZONE_CLUSTER attribute response: Success
dev:9052026-07-31 4:01:59.212 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description=catchall: 0104 0500 01 01 0040 00 7C0C 00 00 0000 04 01 00
dev:9052026-07-31 4:01:59.110 pmdebugTuya AAA PIR received device model TS0202
dev:9052026-07-31 4:01:59.108 pmtraceTuya AAA PIR Tuya check-in message (attribute 0001 reported: 46)
dev:9052026-07-31 4:01:59.106 pmdebugTuya AAA PIR Basic cluster: ZCLVersion = 03
dev:9052026-07-31 4:01:59.102 pmdebugTuya AAA PIR received device manufacturer _TZ3000_lf56vpxj
dev:9052026-07-31 4:01:59.090 pmdebugTuya AAA PIR parse: descMap = [raw:7C0C01000068040042105F545A333030305F6C6635367670786A0000002003010000204605000042065453303230320700003003FEFF003000, dni:7C0C, endpoint:01, cluster:0000, size:68, attrId:0004, encoding:42, command:01, value:_TZ3000_lf56vpxj, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:46, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS0202, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]] description=read attr - raw: 7C0C01000068040042105F545A333030305F6C6635367670786A0000002003010000204605000042065453303230320700003003FEFF003000, dni: 7C0C, endpoint: 01, cluster: 0000, size: 68, attrId: 0004, encoding: 42, command: 01, value: 105F545A333030305F6C6635367670786A0000002003010000204605000042065453303230320700003003FEFF003000
dev:9052026-07-31 4:01:58.793 pminfoTuya AAA PIR sent device configuration
dev:9052026-07-31 4:01:58.790 pmdebugTuya AAA PIR configure(): sent cmds = [he raw 0x7C0C 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 224]
dev:9052026-07-31 4:01:58.787 pmdebugTuya AAA PIR sendZigbeeCommands: sent cmd=[he raw 0x7C0C 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 224]
dev:9052026-07-31 4:01:58.772 pmdebugTuya AAA PIR configureDevice(): cmds=[he wattr 0x7C0C 0x01 0x0500 0x0010 0xF0 {B4D59413006F0D00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x7C0C 1 0x01 0x0500 {10 00 00 00 00}, delay 224]
dev:9052026-07-31 4:01:58.767 pmdebugTuya AAA PIR Enrolling IAS device ...
dev:9052026-07-31 4:01:58.761 pmdebugTuya AAA PIR customConfigureDevice()
dev:9052026-07-31 4:01:58.760 pminfoTuya AAA PIR configureDevice...
dev:9052026-07-31 4:01:58.758 pmdebugTuya AAA PIR initializeDevice(): cmds=
dev:9052026-07-31 4:01:58.757 pmdebugTuya AAA PIR no customInitializeDevice method defined
dev:9052026-07-31 4:01:58.755 pminfoTuya AAA PIR initializeDevice...
dev:9052026-07-31 4:01:58.754 pmdebugTuya AAA PIR aqaraBlackMagic() was SKIPPED
dev:9052026-07-31 4:01:58.745 pminfoTuya AAA PIR tuyaBlackMagic()...
dev:9052026-07-31 4:01:58.735 pmdebugTuya AAA PIR configure(): settings: [healthCheckMethod:1, healthCheckInterval:240, voltageToPercent:false, batteryDelay:0, invertMotion:false, minReportingTime:10, maxReportingTime:3600, illuminanceThreshold:10, illuminanceCoeff:1.0, ignoreDistance:true, keepTime:2, sensitivity:2, txtEnable:true, logEnable:true, allStatusTextEnable:false, forcedProfile:Tuya TS0202 Motion sensor (IAS), advancedOptions:true, ignoreDuplicatedZigbeeMessages:false, traceEnable:true, temperatureOffset:0.0, humidityOffset:0.0, motionReset:true, motionResetTimer:60]
dev:9052026-07-31 4:01:58.734 pminfoTuya AAA PIR configure()... cfgCtr=4
dev:9052026-07-31 4:01:48.763 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[3C, 00, 00]
dev:9052026-07-31 4:01:48.759 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3C0000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3C, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3C0000
dev:9052026-07-31 4:01:47.595 pminfoTuya AAA PIR Detected motion
dev:9052026-07-31 4:01:47.488 pmdebugTuya AAA PIR customParseIasMessage: Alarm 1 is set
dev:9052026-07-31 4:01:47.486 pmdebugTuya AAA PIR parse: zone status: zone status 0x0001 -- extended status 0x00 - sourceEndpoint:01, zoneId:FF, delay:0000
dev:9052026-07-31 4:01:44.234 pmdebugTuya AAA PIR ignored motion inactive event after 767s
dev:9052026-07-31 4:01:44.226 pmdebugTuya AAA PIR customParseIasMessage: Alarm 1 is cleared
dev:9052026-07-31 4:01:44.220 pmdebugTuya AAA PIR parse: zone status: zone status 0x0000 -- extended status 0x00 - sourceEndpoint:01, zoneId:FF, delay:0000
dev:9052026-07-31 4:01:43.881 pmwarnTuya AAA PIR Unprocessed ZDO command: cluster=0000 command=00 attrId=null value=null data=[3B, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]
dev:9052026-07-31 4:01:43.875 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 3B6D8D47FEFF958EDC0000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3B, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]] description=catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 3B6D8D47FEFF958EDC0000
dev:9052026-07-31 4:01:43.759 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[3A, 00, 00]
dev:9052026-07-31 4:01:43.755 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3A0000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[3A, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 3A0000
dev:9052026-07-31 4:01:38.759 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[39, 00, 00]
dev:9052026-07-31 4:01:38.755 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 390000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[39, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 390000
dev:9052026-07-31 4:01:33.885 pmwarnTuya AAA PIR Unprocessed ZDO command: cluster=0000 command=00 attrId=null value=null data=[38, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]
dev:9052026-07-31 4:01:33.879 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 386D8D47FEFF958EDC0000, profileId:0000, clusterId:0000, clusterInt:0, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[38, 6D, 8D, 47, FE, FF, 95, 8E, DC, 00, 00]] description=catchall: 0000 0000 00 00 0040 00 7C0C 00 00 0000 00 00 386D8D47FEFF958EDC0000
dev:9052026-07-31 4:01:33.786 pmdebugTuya AAA PIR Unprocessed ZDO command: cluster=0002 command=00 attrId=null value=null data=[37, 00, 00]
dev:9052026-07-31 4:01:33.774 pmdebugTuya AAA PIR parse: descMap = [raw:catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 370000, profileId:0000, clusterId:0002, clusterInt:2, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7C0C, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[37, 00, 00]] description=catchall: 0000 0002 00 00 0040 00 7C0C 00 00 0000 00 00 370000
dev:9052026-07-31 4:01:08.234 pminfoTuya AAA PIR updated
dev:9052026-07-31 4:01:08.230 pmdebugTuya AAA PIR sendZigbeeCommands: sent cmd=[null]
dev:9052026-07-31 4:01:08.219 pmwarnTuya AAA PIR sendZigbeeCommands it: no commands to send! it=null (cmd=[null])
dev:9052026-07-31 4:01:08.155 pmdebugTuya AAA PIR warning: couldn't find map for preference sensitivity
dev:9052026-07-31 4:01:08.154 pmdebugTuya AAA PIR updateAllPreferences: foundMap = [:]
dev:9052026-07-31 4:01:08.152 pmdebugTuya AAA PIR warning: couldn't find map for preference keepTime
dev:9052026-07-31 4:01:08.150 pmdebugTuya AAA PIR updateAllPreferences: foundMap = [:]
dev:9052026-07-31 4:01:08.148 pmdebugTuya AAA PIR warning: couldn't find map for preference motionReset
dev:9052026-07-31 4:01:08.147 pmdebugTuya AAA PIR updateAllPreferences: foundMap = [:]
dev:9052026-07-31 4:01:08.145 pmdebugTuya AAA PIR getPreferencesMapByName: preference motionReset is boolean
dev:9052026-07-31 4:01:08.139 pmdebugTuya AAA PIR updateAllPreferences: preferences=[motionReset:true, keepTime:false, sensitivity:false]
dev:9052026-07-31 4:01:08.135 pmdebugTuya AAA PIR current state.deviceProfile=TS0202_MOTION_IAS, settings.forcedProfile=Tuya TS0202 Motion sensor (IAS), getProfileKey()=TS0202_MOTION_IAS
dev:9052026-07-31 4:01:08.117 pmdebugTuya AAA PIR customUpdated()
dev:9052026-07-31 4:01:08.111 pmdebugTuya AAA PIR deviceHealthCheck is scheduled every 240 minutes
dev:9052026-07-31 4:01:08.057 pminfoscheduling health check every 240 minutes by Activity check method
dev:9052026-07-31 4:01:08.022 pmtraceTuya AAA PIR [healthCheckMethod:1, healthCheckInterval:240, voltageToPercent:false, batteryDelay:0, invertMotion:false, minReportingTime:10, maxReportingTime:3600, illuminanceThreshold:10, illuminanceCoeff:1.0, ignoreDistance:true, keepTime:2, sensitivity:2, txtEnable:true, logEnable:true, allStatusTextEnable:false, forcedProfile:Tuya TS0202 Motion sensor (IAS), advancedOptions:true, ignoreDuplicatedZigbeeMessages:false, traceEnable:true, temperatureOffset:0.0, humidityOffset:0.0, motionReset:true, motionResetTimer:60]
dev:9052026-07-31 4:01:07.981 pmtraceTuya AAA PIR [healthCheckMethod:1, healthCheckInterval:240, voltageToPercent:false, batteryDelay:0, invertMotion:false, minReportingTime:10, maxReportingTime:3600, illuminanceThreshold:10, illuminanceCoeff:1.0, ignoreDistance:true, keepTime:2, sensitivity:2, txtEnable:true, logEnable:true, allStatusTextEnable:false, forcedProfile:Tuya TS0202 Motion sensor (IAS), advancedOptions:true, ignoreDuplicatedZigbeeMessages:false, traceEnable:true, temperatureOffset:0.0, humidityOffset:0.0, motionReset:true, motionResetTimer:60]
dev:9052026-07-31 4:01:07.944 pminfoTuya AAA PIR driver version 3.5.6 2026/06/04 5:30 PM (TS0202 _TZ3000_lf56vpxj) (C-8 2.5.0.159)
dev:9052026-07-31 4:01:07.931 pminfoTuya AAA PIR updated()...

Hi @KuehDadar,

Thank you for the logs. They show that IAS enrollment completed successfully and that the driver received and processed several motion-active reports, as well as a motion-inactive report.

So, at the Zigbee and driver level, the sensor was working during this log capture. The remaining warning messages are either harmless ZDO discovery traffic from the re-pairing process or unrelated driver log noise.

Could you please confirm that the motion value under Current States now changes to active when you move in front of the sensor, and returns to inactive afterward? It would also be useful to confirm that it remains reliable for a day or two.

Once confirmed, I can treat the re-pair as the solution and add the TS0202 / _TZ3000_lf56vpxj fingerprint for automatic profile selection.

You can now disable Trace logging. Please leave Debug logging enabled only if the Current States value still does not follow the actual motion.


(This log autopsy was performed automatically by Codex 5.6 Sol under @kkossev’s supervision. The patient produced several valid IAS pulses and appears alive, but remains under observation.)

Thanks for looking in to this.

Unfortunately, after initial pairing, sensor doesn't seem to update motion value. I tried walking infront of it, sensor led blinks red but hubitat did not receive any motion update from sensor.

I'll disable trace logging and monitor for another 2 days before I return the device as faulty.

Any idea what else can I try to fix this?

Hi @KuehDadar,

I am 99.99% sure that the device is not defective; the problem appears to be on the other side.... most likely related to the Zigbee coordinator or the pairing process.

Analyzing the logs again, I suspect that the device leaves the Zigbee network, or becomes unreachable approximately one minute after the initial join.

During the first ~56 seconds, the device repeatedly sends several ZDO discovery requests, including Node Descriptor and Network Address requests. These requests normally require a response from the coordinator. After the last request at approximately 4:02:30, the device becomes silent in the logs. The red LED may still flash locally, but that does not confirm that a Zigbee message reached Hubitat.

Could you please confirm the following?

  1. Are you pairing the device to a C-8 or C-8 Pro hub?
  2. Is the hub running the latest platform version, currently 2.5.1.1nn?
  3. In the live logs, search for "parse:"
    After the initial pairing sequence, do you see any new parse: messages when the sensor detects motion and the red LED flashes?

The parse: message is logged whenever the driver receives a Zigbee frame from the device. If the LED flashes but no new parse: entries appear, this would strongly suggest that the device has dropped off the Zigbee network, or that the coordinator’s ZDO responses are not reaching or being accepted by the device.

I have one more idea to try, before I advise you to return the problematic device ...

  1. yes I'm using a C-8
  2. Just updated. Updated to version 3.5.6 2026/06/04 5:30 PM (TS0202 _TZ3000_lf56vpxj) (C-8 2.5.1.142) from version 3.5.6 2026/06/04 5:30 PM (TS0202 _TZ3000_lf56vpxj) (C-8 2.5.0.159). Re-paired device. No improvement.
  3. my live log screen is blank, is there some settings i need to change to turn live log on? from past logs, I only see parse: messages during the initial pairing phase. no more new parse: message from 1min onwards after the last pairing.

Update: I think I managed to get the sensor to stay on the zigbee network. what I think I did, lots of trial and error:

  • try re-pairing device with my wifi network temperorily turned off

  • reboot zigbee network

  • rebuild zigbee network, then switched on all powered zigbee devices (lights, power outlets etc)

will continue to monitor for 1-2 day to see if device stays on zigbee network

hi @kkossev - I have 2 motion sensors that use the Tuya Multi-Sensor driver. In my case the subroute for device type gives me the 2 in 1 if I'm explaining that in some semblance of a meaningful way. The 2 sensors report Lux changes really often to my subscription (I built a rooms Omni driver that avg's sensors). I tweaked the Lux Threshold to 250 hoping to calm down it's reporting events in the logs (which trigger my app to pick up the changes) - Am I using this wrong?

Hi Shumo,

I am testing a new update of this driver with a bunch of minor bug fixes; however, I am not 100% confident that I have found a reason for excessive illumination events not being throttled by the 'lux threshold' 250 setting.

If you enable the Debug logging, you should see illuminance reports rejected because the 'delta' is below the configured threshold.

Can you find debug logs that incorrectly skip the threshold check?

Also, please copy/paste your particular device Zigbee details (Zigbee model/manufacturers, inClusters list if shown, etc.). Was your device recognized automatically as a 'Tuya 2in1', or did you assign this device profile manually?

Thanks for getting right back to me @kkossev ! I can't tell you if it was manual or auto detected. I have the Tuya 4-in-1 installed - it's what I use for a couple of other devices. The device (I have 2 of this particular unit) was previously using a generic driver until recently (about 3 months ago).

With Debug on its clear that the delta is operational.

But thats just weird - as a snap of the log show updates less than the delta before I turned debug on

I'm going to use the 'swap' trick to put a virtual in, remove this device, then put it back to check the automation on the driver. I'll snap the device details at that time.

After a clean zigbee exclude (by removing the device) a re-add brought this back as 'Human Presence Sensor'.

Changing to driver 'Device' - I'm actually NOT getting any response back to 'Get Info'.

So I cap'ed the device pairing info

Automatically - HE put the driver 'Human Presence Sensor'. This driver does show the Illumance attribute which was unexpected but still, not a very flexible driver. switching to the Device driver - and pushing Get Info I get - but note this is more than a minute later.

Repeating the process once more, I excluded, then re-added - again it came up as a Human Presence Sensor. I manually switched it to Tuya Multi Sensor 4 in 1. When I did that the device name CHANGED itself to Tuya 2 in 1 Zigbee Mini PIR Motion Detector + Bright Lux ZG-204ZL. I saved and exited. Then went back in the device and the device profile was 'Tuya 2in1 (Motion and Illuminance) sensor.'.

The logs (debug turned itself on) had lots of this :

The default Lux Threshold was back to 10. I manually changed it to 250.

I'd like to note that my HPM is set to notify me, but yesterday before reaching out here, I did discover that there was a 3.5.7 version available directly from your Git, but my updates from HPM had me on 3.5.6, as if package json wasn't yet delivering. Your notes on 3.5.7 say it's a device add so not sure it had any impact.

Thank you for the logs and for the additional info, please wait for a driver update next days.

There is a chance that the illuminance reporting frequency can be device-configured (not only driver software-filtered as it is now), but this needs to be confirmed or denied with the real device.

Hi @jshimota ,

Update to v3.6.0 (dev branch), it should fix the following issues :

Raw driver file: https://raw.githubusercontent.com/kkossev/Hubitat/development/Drivers/Tuya%20Multi%20Sensor%204%20In%201/Tuya%20Multi%20Sensor%204%20In%201.groovy

  1. Wrong driver on re-pair (Human Presence Sensor / no response from Device). Your unit's newer firmware pairs with a different cluster list than the original ZG-204ZL entry. That fingerprint is now added, so a fresh exclude and re-pair should auto-select this driver again. The driver has to be saved on the hub before you pair, since fingerprints are only read at join time.

  2. Lux threshold resetting to its default instead of holding 250. Save Preferences had a bug where some preference writes, including sensitivity and keep time, were not actually reaching the device even though the UI accepted them. That is fixed, so the threshold should now stick.

  3. Repeated illuminance in the logs and the duplicate attribute. Your sensor reports lux twice, once over the Tuya datapoint and once over the standard Zigbee illuminance cluster, about half a second apart. The driver now uses only the Tuya datapoint for this device family and ignores the duplicate, which should cut the log noise roughly in half.

  4. Illuminance reporting frequency. There is a new Illuminance Interval setting (1 to 720 minutes, factory default 1 minute) that controls how often the sensor itself sends a lux reading. Raise it if you want fewer reports. It only gets written while the PIR is awake, so trigger a motion event right after saving it.

After updating, please first set your lux threshold and Illuminance Interval again, then re-pair (without deleting the device). Let me know if the driver sticks and the log volume looks better.

Do you sleep?! wow. I'll put it right to use. Exclude and re-pair the units tomorrow AM.

Afternoon sir @kkossev . I'm writing a long response in an effort to provide useful feedback for YOUR efforts. First - I have to say NO one writes drivers that are so sophisticated and robust and stable as you!
I have implemented the dev branch 3.6.0 from your URL posted.

I have a number of devices that are handled by your driver - I haven't any reason to look at anything besides this specific profile. I have 4 devices of this exact model, and they all use the same firmware as previously noted. (I updated them in HA easily a few months ago).

image

I know you stated I didn't need to re-pair, but I actually wanted to and did. I swapped the original devices with Virtual Omni Sensors to act as placeholders so I kept the 'in use by'.
I then Excluded all 4 units. Once they were removed, I took all 4 units and pulled out their batteries. (They go into searching mode automagically and will immediately jump back on if you don't.) One at a time, I started the Add Device routine - then put the battery back. It won't go into beacon until you push and hold the button for 10 seconds - then the light begins blinking and immediately they pop onto the Add Device detection window.

The device Instantly was recognized as I mentioned as a Tuya 2 in 1 Zigbee Mini PIR Motion Detecto + Bright Lux ZG-204ZL.
the unit automatically detected the profile perfectly as well. Tuya 2 in 1.

At this point I adjusted the Lux Threshold to 20 AND enabled the Advanced Options and hit Save. I learned that there is a unique characteristic that was problematic. The default value of the device and profile is 'Invert Motion Active/Not Active' is enabled! So, with the unit facing away from me, and no motion - it said 'Active'. I learned I had to turn that off. I also set the Min reporting time for the Illumenance to 30 sec. More that sufficient for my needs.

I did all 4 units this way, and it was flawless.

The device Attributes/and states are extremely detailed and useful.

The results so far are impeccable. I do want to have a 24 hr period where I can visually review the specific results of each device, but in the last 30 minutes, not one issue has shown in the logs!

This is the most amazing Driver - there is NOTHING as incredible as this - I love your library implementation as well! I remember when Tuya was... shall we say, problematic? The Tuya devices running under your driver head are the most stable and robust I have. Thank you. Feel free to PM me a link for coffee! - Shu

Reporting back in on the illuminance fix for 2 in i. It's perfect :slight_smile: