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

I see a comment on the seller's site complaining about a non-working power supply that came with the radar... Do you have another power supply unit to test with?
Are you pairing it close to the HE hub? What Zigbee channel your hub is configured? (just of info, I am not aware of any ZIgbee channels restrictions for these devices). Do you see a 'Found a Zigbee device' message during the pairing process or nothing is shown at all?

I haven't tried with another power supply. I'll see if I have another 12V PSU with the same plug.

I'm within 10cm of the hub when pairing. My current ZigBee channel is 20. In the logs I see "Zigbee Discovery Running", then nothing, then "Zigbee Discovery Stopped".

@kkossev When i do a search for "Tyua Zigbee Multi-Sensor 4 In 1" in HPM i am unable to see this driver. i can see other Tuya Zigbee drivers.
Are there some extra steps to get this driver from HPM?

I purchased the following Tuya Zigbee Contact Sensor (with LUX) from Aliexpress:
[Tuya Smart Zigbee Door Window Sensor With Lux Light Detectors Security Protection Smart Life Control Via Alexa Google Home - Ba Accessories - AliExpress] from "IHOMECAM SMART STORE"

Could you please help add support for this in your driver?
Here are the details from getInfo:

  • endpointId: 01
  • application: 43
  • endpointId: 01
  • inClusters: 0001,0500,0000
  • manufacturer: _TZE200_pay2byax
  • model: TS0601
  • outClusters: 0019,000A
  • profileId: 0104
  • softwareBuild:
  • The Generic Zigbee Contact Sensor driver does not work.
  • Right after pairing, HE detects it as "unknown Zigbee Device" and assigns "Device" in the "Device Name"
  • I tried bunch of other Contact sensor driver and none of them worked.
  • Finally i tweaked a semi-working driver and made the necessary Groovy changes and now i can successfully parse the open and close events.
  • But this device seems to send two back to back open/close events (5 secs apart)

Below is my Driver code that is working(sorry do not have github account to post the driver)

Summary

/*
*

  • Tuya Zigbee Contact Sensor Version v2.0.0

*/

metadata {
definition (name: "Tuya Zigbee Contact Sensor", namespace: "Abhay", author: "Abhay Mangalore", importUrl: "to-do") {
capability "Sensor"
capability "Initialize"
capability "ContactSensor"
capability "MotionSensor"

    command "resetToOpen"
    command "resetToClosed"

    fingerprint deviceJoinName: "Tuya Contact Sensor", model: "TS0601", profileId: "0104", deviceId: "EF00", inClusters:"0001,0500,0000", outClusters:"0019,000A", manufacturer: "_TZE200_pay2byax"

}

preferences {
input(name: "debugLogging", type: "bool", title: "Enable debug logging", description: "", defaultValue: false, submitOnChange: true, displayDuringSetup: false, required: true)
input(name: "infoLogging", type: "bool", title: "Enable info logging", description: "", defaultValue: true, submitOnChange: true, displayDuringSetup: false, required: true)
input(name: "enableMotion", type: "bool", title: "Enable motion", description: "", defaultValue: false, submitOnChange: true, displayDuringSetup: false, required: true)
input(name: "resetMotionSeconds", type: "number", title: "Reset motion after (seconds)", description: "", defaultValue: 30, submitOnChange: true, displayDuringSetup: false, required: true)
}

}

void initialize() {
logInfo("initialize()")
unschedule()
}

def void parse(String description) {
logDebug("Parsing: '${description}'")
Map msgMap = zigbee.parseDescriptionAsMap(description)
logInfo("msgMap: ${msgMap}")

if (msgMap["clusterId"] == 'EF00') {
  List<Integer> data = msgMap["data"]
    if (data.size > 7) {
        logDebug("Ignore larger data during an Open/Close event")
    }
    else {
      Integer open_close = Integer.parseInt(data[6], 16)
        logDebug("last byte value is ${open_close}")
      if (open_close == 0) {
        close()
        last_open_close = 0
      } else if (open_close == 1){
        open()        
        last_open_close = 1
      } else {
        logDebug("lgnore event")  
      }
        
    }
} else {
  log.warn("General catch all - description:${description} | msgMap:${msgMap}")
}

}

private void logDebug(message) {
if (debugLogging) log.debug(message)
}

private void logInfo(message) {
if (infoLogging) log.info(message)
}

void open() {
logInfo("Contact open")
setToOpen(false)
}

void close() {
logInfo("Contact closed")
setToClose(false)
}

void resetToOpen() {
logInfo("resetToOpen()")
setToOpen(true)
}

void resetToClosed() {
logInfo("resetToClosed()")
setToClose(true)
}

private void setToOpen(boolean reset)
{
resetText = reset ? " (reset)" : ""
sendEvent(name: "contact", value: "open", isStateChange: !reset, descriptionText: "Contact open${resetText}")
if (enableMotion) {
if (resetMotionSeconds > 0) {
runIn(resetMotionSeconds, 'deactivateMotion')
} else {
deactivateMotion()
}
}
}

private void setToClose(boolean reset)
{
resetText = reset ? " (reset)" : ""
sendEvent(name: "contact", value: "closed", isStateChange: !reset, descriptionText: "Contact closed${resetText}")
if (enableMotion) {
unschedule('deactivateMotion')
sendEvent(name: "motion", value: "active", isStateChange: !reset, descriptionText: "Motion active${resetText}")
}
}

private void deactivateMotion() {
sendEvent(name: "motion", value: "inactive", isStateChange: !reset, descriptionText: "Motion inactive")
}

Here are the GetInfo logs and the catchall messages that are received during the open/close events

Summary

Manufacturer: _TZE200_pay2byax
Endpoint 01 application: 43
Endpoint 01 endpointId: 01
Endpoint 01 idAsInt: 1
Endpoint 01 inClusters: 0001,0500,0000
Endpoint 01 initialized: true
Endpoint 01 manufacturer: _TZE200_pay2byax
Endpoint 01 model: TS0601
Endpoint 01 outClusters: 0019,000A
Endpoint 01 profileId: 0104
Endpoint 01 stage: 4

dev:2702023-01-18 12:39:40.874 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A70202000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A7, 02, 02, 00, 04, 00, 00, 00, 64]]
dev:2702023-01-18 12:39:30.885 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A60202000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A6, 02, 02, 00, 04, 00, 00, 00, 64]]
dev:2702023-01-18 12:39:21.517 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A50202000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A5, 02, 02, 00, 04, 00, 00, 00, 64]]
dev:2702023-01-18 12:39:21.294 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A40202000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A4, 02, 02, 00, 04, 00, 00, 00, 64]]
dev:2702023-01-18 12:39:21.080 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A36502000400000220, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A3, 65, 02, 00, 04, 00, 00, 02, 20]]
dev:2702023-01-18 12:39:20.853 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A20101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A2, 01, 01, 00, 01, 01]]
dev:2702023-01-18 12:39:10.812 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A10202000400000064, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A1, 02, 02, 00, 04, 00, 00, 00, 64]]
dev:2702023-01-18 12:39:06.816 PMinfoZigbee parsed:[raw:catchall: 0000 8005 00 00 0040 00 7459 00 00 0000 00 00 A30059740101, profileId:0000, clusterId:8005, clusterInt:32773, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[A3, 00, 59, 74, 01, 01]]
dev:2702023-01-18 12:39:04.635 PMinfofingerprint profileId:"0104", endpointId:"01", inClusters:"0001,0500,0000", outClusters:"0019,000A", model:"TS0601", manufacturer:"_TZE200_pay2byax"
dev:2702023-01-18 12:39:04.433 PMtraceZCL version:03
dev:2702023-01-18 12:39:04.431 PMtraceSoftware Build Id:unknown
dev:2702023-01-18 12:39:04.428 PMtraceModel:TS0601
dev:2702023-01-18 12:39:04.425 PMtraceManufacturer:_TZE200_pay2byax
dev:2702023-01-18 12:39:03.887 PMdebuggetting info for unknown Zigbee device...
sys:12023-01-18 12:39:02.992 PMinfoZigbee Discovery Stopped
dev:2702023-01-18 12:39:02.014 PMinfoZigbee parsed:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A065020004000002A0, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A0, 65, 02, 00, 04, 00, 00, 02, A0]]
sys:12023-01-18 12:39:01.931 PMinfoCreated Unknown Zigbee Device
dev:2702023-01-18 12:39:01.863 PMdebugconfigure() called...
sys:12023-01-18 12:38:44.632 PMinfoInitializing Zigbee Device A4C138D671248ED8, 06B4
sys:12023-01-18 12:38:28.936 PMinfoZigbee Discovery Running

dev:2702023-01-18 12:43:59.078 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AE0101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AE0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AE, 01, 01, 00, 01, 00]]
dev:2702023-01-18 12:43:54.308 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AD0101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AD0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AD, 01, 01, 00, 01, 00]]
dev:2702023-01-18 12:43:54.092 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AC6502000400000239 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AC6502000400000239, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AC, 65, 02, 00, 04, 00, 00, 02, 39]]
dev:2702023-01-18 12:43:51.791 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AB0101000101 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AB0101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AB, 01, 01, 00, 01, 01]]
dev:2702023-01-18 12:43:51.575 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AA6502000400000237 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AA6502000400000237, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AA, 65, 02, 00, 04, 00, 00, 02, 37]]
dev:2702023-01-18 12:43:50.631 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A90101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A90101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A9, 01, 01, 00, 01, 00]]
dev:2702023-01-18 12:43:50.417 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A8650200040000021F | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00A8650200040000021F, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, A8, 65, 02, 00, 04, 00, 00, 02, 1F]]

ON OPEN:
dev:2702023-01-18 12:49:21.893 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B10101000101 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B10101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, B1, 01, 01, 00, 01, 01]]
dev:2702023-01-18 12:49:17.125 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B00101000101 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B00101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, B0, 01, 01, 00, 01, 01]]
dev:2702023-01-18 12:49:16.910 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AF6502000400000242 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00AF6502000400000242, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, AF, 65, 02, 00, 04, 00, 00, 02, 42]]

ON Close:
dev:2702023-01-18 12:50:53.231 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B40101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B40101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, B4, 01, 01, 00, 01, 00]]
dev:2702023-01-18 12:50:48.461 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B30101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B30101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, B3, 01, 01, 00, 01, 00]]
dev:2702023-01-18 12:50:48.255 PMwarnGeneral catch all - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B26502000400000242 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00B26502000400000242, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, B2, 65, 02, 00, 04, 00, 00, 02, 42]]

1 Like

and here are the logs when i tried another driver from Oh-Labs:

Summary

dev:2702023-01-19 12:29:31.844 AMinfoCOPY AND PASTE THIS ROW TO THE DEVELOPER: fingerprint model:"TS0601", manufacturer:"_TZE200_pay2byax", profileId:"0104", endpointId:"01", inClusters:"0001,0500,0000", outClusters:"0019,000A", application:"43"
dev:2702023-01-19 12:29:31.841 AMtraceApplication: 43
dev:2702023-01-19 12:29:31.839 AMtraceModel: TS0601
dev:2702023-01-19 12:29:31.837 AMtraceManufacturer: _TZE200_pay2byax
dev:2702023-01-19 12:29:31.834 AMdebugGetting info for Zigbee device...
dev:2702023-01-19 12:29:31.831 AMinfoGet Info Semaphore Cleared!
dev:2702023-01-19 12:27:36.753 AMinfoUnhandled Event IGNORE THIS - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00660101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00660101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 66, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:27:36.748 AMtraceWaiting for the Get Info Semaphore to clear...
dev:2702023-01-19 12:27:32.447 AMinfoCOPY AND PASTE THIS ROW TO THE DEVELOPER: fingerprint model:"TS0601", manufacturer:"_TZE200_pay2byax", profileId:"0104", endpointId:"01", inClusters:"0001,0500,0000", outClusters:"0019,000A", application:"43"
dev:2702023-01-19 12:27:32.444 AMtraceApplication: 43
dev:2702023-01-19 12:27:32.441 AMtraceModel: TS0601
dev:2702023-01-19 12:27:32.439 AMtraceManufacturer: _TZE200_pay2byax
dev:2702023-01-19 12:27:32.437 AMdebugGetting info for Zigbee device...
dev:2702023-01-19 12:27:32.430 AMdebugd=[nwkAddrOfInterest:7459, endpointId:01, profileId:0104, applicationDevice:0402, applicationVersion:01, inClusters:0001,0500,0000, outClusters:0019,000A], ll=18, icn=3, ocn=2
dev:2702023-01-19 12:27:32.406 AMinfoUnhandled Event IGNORE THIS - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00650101000100 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00650101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 65, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:27:32.403 AMtraceWaiting for the Get Info Semaphore to clear...
dev:2702023-01-19 12:27:32.400 AMtraceSimple Descriptor Information Received - description:catchall: 0000 8004 00 00 0040 00 7459 00 00 0000 00 00 D300597412010401020401030100000500000219000A00 | parseMap:[raw:catchall: 0000 8004 00 00 0040 00 7459 00 00 0000 00 00 D300597412010401020401030100000500000219000A00, profileId:0000, clusterId:8004, clusterInt:32772, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[D3, 00, 59, 74, 12, 01, 04, 01, 02, 04, 01, 03, 01, 00, 00, 05, 00, 00, 02, 19, 00, 0A, 00]]
dev:2702023-01-19 12:27:32.393 AMtraceWaiting for the Get Info Semaphore to clear...
dev:2702023-01-19 12:27:32.143 AMdebugdirty model = TS0601, clean model=TS0601
dev:2702023-01-19 12:27:32.141 AMtraceModel Name Received
dev:2702023-01-19 12:27:32.138 AMtraceWaiting for the Get Info Semaphore to clear...
dev:2702023-01-19 12:27:32.050 AMtraceManufacturer Name Received
dev:2702023-01-19 12:27:32.048 AMtraceWaiting for the Get Info Semaphore to clear...
dev:2702023-01-19 12:27:31.836 AMinfoUnhandled Event IGNORE THIS - description:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00646502000400000000 | msgMap:[raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00646502000400000000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 64, 65, 02, 00, 04, 00, 00, 00, 00]]
dev:2702023-01-19 12:27:31.787 AMinfoINCOMPLETE - DO NOT SUBMIT THIS - TRY AGAIN: fingerprint model:"TS0601", manufacturer:"_TZE200_pay2byax", profileId:"0104", endpointId:"01", inClusters:"0001,0500,0000", outClusters:"0019,000A", application:"43"
dev:2702023-01-19 12:27:31.784 AMdebugsendZigbeeCommands(cmd=[he raw 7459 0 0 0x0004 {00 5974 01} {0x0000}])
dev:2702023-01-19 12:27:31.781 AMwarnOne or multiple pieces of data needed for the fingerprint is missing, requesting it from the device. If it is a sleepy device you may have to wake it up and run this command again. Run this command again to get the new fingerprint.
dev:2702023-01-19 12:27:31.778 AMtraceApplication: 43
dev:2702023-01-19 12:27:31.776 AMtraceModel: TS0601
dev:2702023-01-19 12:27:31.773 AMtraceManufacturer: _TZE200_pay2byax
dev:2702023-01-19 12:27:31.771 AMdebugGetting info for Zigbee device...
dev:2702023-01-19 12:27:31.768 AMtraceRunning Automatic Get Info

@kkossev I added your driver HPM. Then made a single line change to add initial support to this device:
fingerprint profileId:"0104", endpointId:"01", inClusters:"0001,0500,0000", outClusters:"0019,000A", model:"TS0601", manufacturer:"_TZE200_pay2byax", deviceJoinName: "Tuya 2 in 1 Zigbee Contact Sensor + Lux"//https://www.aliexpress.us/item/3256804802567831.html

  • Went the device page for this sensor that was already paired.
  • Changed the driver and selected your modified driver.
  • Press Save and did "Initialize" (woke the device at the same time by moving the magnet)
    Here are the logs from case.
Summary

dev:2702023-01-19 12:28:02.180 PMinfoGarage Door Sensor Received bind response, data=[22, 82] (Sequence Number:22, Status: Failure)
dev:2702023-01-19 12:28:02.177 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2282, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[22, 82]]
dev:2702023-01-19 12:28:01.425 PMdebugGarage Door Sensor device has received Tuya cluster ZCL command 0x00 response 0x00 data = [00, 00]
dev:2702023-01-19 12:28:01.422 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]
dev:2702023-01-19 12:28:00.049 PMinfoGarage Door Sensor Motion is active 4s
dev:2702023-01-19 12:28:00.046 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 1
dev:2702023-01-19 12:28:00.044 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=1
dev:2702023-01-19 12:28:00.034 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00240101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 24, 01, 01, 00, 01, 01]]
dev:2702023-01-19 12:27:59.514 PMdebugGarage Door Sensor device has received Tuya cluster ZCL command 0x00 response 0x00 data = [00, 00]
dev:2702023-01-19 12:27:59.512 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]
dev:2702023-01-19 12:27:59.395 PMinfoGarage Door Sensor Received bind response, data=[22, 82] (Sequence Number:22, Status: Failure)
dev:2702023-01-19 12:27:59.393 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2282, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[22, 82]]
dev:2702023-01-19 12:27:59.269 PMdebugGarage Door Sensor device has received Tuya cluster ZCL command 0x00 response 0x00 data = [00, 00]
dev:2702023-01-19 12:27:59.265 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 00 00 0000 0B 01 0000, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:0B, direction:01, data:[00, 00]]
dev:2702023-01-19 12:27:59.143 PMinfoGarage Door Sensor Received bind response, data=[22, 82] (Sequence Number:22, Status: Failure)
dev:2702023-01-19 12:27:59.141 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2282, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[22, 82]]
dev:2702023-01-19 12:27:59.018 PMinfoGarage Door Sensor Initialization finished version=1.1.1 (Timestamp: 2023/01/08 06:06 PM)
dev:2702023-01-19 12:27:59.016 PMinfoGarage Door Sensor manufacturer = _TZE200_pay2byax
dev:2702023-01-19 12:27:57.139 PMinfoGarage Door Sensor Received bind response, data=[21, 82] (Sequence Number:21, Status: Failure)
dev:2702023-01-19 12:27:57.136 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2182, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[21, 82]]
dev:2702023-01-19 12:27:57.094 PMinfoGarage Door Sensor preferencies updates are sent to the device...
dev:2702023-01-19 12:27:57.092 PMdebugGarage Door Sensor sendZigbeeCommands (cmd=[he cmd 0x7459 0x01 0xEF00 0x00 {00010904000101}, delay 2000, he cmd 0x7459 0x01 0xEF00 0x00 {00020A04000100}, delay 2000])
dev:2702023-01-19 12:27:57.089 PMdebugGarage Door Sensor sending the changed AdvancedOptions
dev:2702023-01-19 12:27:57.086 PMwarnGarage Door Sensor changing TS0601 Keep Time to : 0
dev:2702023-01-19 12:27:57.083 PMdebugGarage Door Sensor sendTuyaCommand = [he cmd 0x7459 0x01 0xEF00 0x00 {00020A04000100}, delay 2000]
dev:2702023-01-19 12:27:57.077 PMwarnGarage Door Sensor changing TS0601 sensitivity to : 1
dev:2702023-01-19 12:27:57.074 PMdebugGarage Door Sensor sendTuyaCommand = [he cmd 0x7459 0x01 0xEF00 0x00 {00010904000101}, delay 2000]
dev:2702023-01-19 12:27:57.032 PMinfoGarage Door Sensor Debug logging is will be turned off after 24 hours
dev:2702023-01-19 12:27:56.989 PMinfoGarage Door Sensor Debug logging is true; Description text logging is true
dev:2702023-01-19 12:27:56.986 PMinfoGarage Door Sensor Updating Garage Door Sensor (Device) model TS0601 manufacturer _TZE200_pay2byax
dev:2702023-01-19 12:27:56.837 PMinfoGarage Door Sensor Received bind response, data=[20, 82] (Sequence Number:20, Status: Failure)
dev:2702023-01-19 12:27:56.831 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2082, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[20, 82]]
dev:2702023-01-19 12:27:56.572 PMdebugGarage Door Sensor write attribute response is success
dev:2702023-01-19 12:27:56.569 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 0000 01 01 0040 00 7459 00 00 0000 04 01 00, profileId:0104, clusterId:0000, clusterInt:0, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]
dev:2702023-01-19 12:27:56.499 PMinfoGarage Door Sensor Tuya device manufacturer is _TZE200_pay2byax
dev:2702023-01-19 12:27:56.492 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:745901000068040042105F545A453230305F70617932627961780000002003010000204305000042065453303630310700003003FEFF003000, dni:7459, endpoint:01, cluster:0000, size:68, attrId:0004, encoding:42, command:01, value:_TZE200_pay2byax, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:43, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS0601, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]]
dev:2702023-01-19 12:27:56.458 PMinfoGarage Door Sensor is present
dev:2702023-01-19 12:27:55.936 PMdebugGarage Door Sensor sendZigbeeCommands (cmd=[he raw 0x7459 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he wattr 0x7459 0x01 0x0000 0xFFDE 0x20 {13} {}, delay 200, delay 200, zdo bind 0x7459 0x02 0x01 0x0402 {A4C138D671248ED8} {}, delay 200, zdo bind 0x7459 0x02 0x01 0x0405 {A4C138D671248ED8} {}, delay 200, zdo bind 0x7459 0x03 0x01 0x0400 {A4C138D671248ED8} {}])
dev:2702023-01-19 12:27:55.814 PMinfoGarage Door Sensor configure()..
dev:2702023-01-19 12:27:55.797 PMinfoGarage Door Sensor installed()
dev:2702023-01-19 12:27:55.664 PMinfoGarage Door Sensor InitializeVars( fullInit = true )...
dev:2702023-01-19 12:27:55.656 PMinfoGarage Door Sensor Initialize( fullInit = true )...
dev:2702023-01-19 12:27:55.274 PMinfoGarage Door Sensor Motion is active 60s
dev:2702023-01-19 12:27:55.272 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 1
dev:2702023-01-19 12:27:55.269 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=1
dev:2702023-01-19 12:27:55.267 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00230101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 23, 01, 01, 00, 01, 01]]
dev:2702023-01-19 12:27:55.250 PMinfoGarage Door Sensor Motion is active 0s
dev:2702023-01-19 12:27:55.239 PMdebugGarage Door Sensor motion event 0x65 fncmd = 541
dev:2702023-01-19 12:27:55.236 PMdebugGarage Door Sensor dp_id=2 dp=101 fncmd=541
dev:2702023-01-19 12:27:55.222 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 0022650200040000021D, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 22, 65, 02, 00, 04, 00, 00, 02, 1D]]
dev:2702023-01-19 12:27:55.050 PMinfoGarage Door Sensor InitializeVars( fullInit = false )...
dev:2702023-01-19 12:27:55.037 PMdebugGarage Door Sensor updating the settings from the current driver version null to the new version 1.1.1 2023/01/08 06:06 PM

  • Then did the initialize and here are the logs for that.
Summary

dev:2702023-01-19 12:34:15.715 PMdebugGarage Door Sensor ignored motion inactive event after 31s
dev:2702023-01-19 12:34:15.712 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:34:15.710 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:34:15.707 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002E0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2E, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:34:14.400 PMdebugGarage Door Sensor ignored motion inactive event after 29s
dev:2702023-01-19 12:34:14.398 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:34:14.395 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:34:14.392 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002E0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2E, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:34:12.100 PMdebugGarage Door Sensor ignored motion inactive event after 27s
dev:2702023-01-19 12:34:12.098 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:34:12.095 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:34:12.092 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002D0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2D, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:34:10.837 PMinfoGarage Door Sensor Motion reset to inactive after 26s
dev:2702023-01-19 12:34:10.835 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:34:10.832 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:34:10.830 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002D0101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2D, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:34:10.773 PMinfoGarage Door Sensor Motion is active 26s
dev:2702023-01-19 12:34:10.770 PMdebugGarage Door Sensor motion event 0x65 fncmd = 543
dev:2702023-01-19 12:34:10.768 PMdebugGarage Door Sensor dp_id=2 dp=101 fncmd=543
dev:2702023-01-19 12:34:10.765 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002C650200040000021F, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2C, 65, 02, 00, 04, 00, 00, 02, 1F]]
dev:2702023-01-19 12:34:09.520 PMinfoGarage Door Sensor Motion is active 24s
dev:2702023-01-19 12:34:09.518 PMdebugGarage Door Sensor motion event 0x65 fncmd = 543
dev:2702023-01-19 12:34:09.515 PMdebugGarage Door Sensor dp_id=2 dp=101 fncmd=543
dev:2702023-01-19 12:34:09.513 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002C650200040000021F, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2C, 65, 02, 00, 04, 00, 00, 02, 1F]]
dev:2702023-01-19 12:33:50.168 PMinfoGarage Door Sensor Motion is active 5s
dev:2702023-01-19 12:33:50.166 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 1
dev:2702023-01-19 12:33:50.163 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=1
dev:2702023-01-19 12:33:50.161 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002B0101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2B, 01, 01, 00, 01, 01]]
dev:2702023-01-19 12:33:45.405 PMinfoGarage Door Sensor Motion is active 0s
dev:2702023-01-19 12:33:45.400 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 1
dev:2702023-01-19 12:33:45.398 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=1
dev:2702023-01-19 12:33:45.395 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 002A0101000101, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 2A, 01, 01, 00, 01, 01]]
dev:2702023-01-19 12:33:45.208 PMinfoGarage Door Sensor Detected motion
dev:2702023-01-19 12:33:45.204 PMdebugGarage Door Sensor motion event 0x65 fncmd = 541
dev:2702023-01-19 12:33:45.200 PMdebugGarage Door Sensor dp_id=2 dp=101 fncmd=541
dev:2702023-01-19 12:33:45.195 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 0029650200040000021D, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 29, 65, 02, 00, 04, 00, 00, 02, 1D]]
dev:2702023-01-19 12:32:11.997 PMdebugGarage Door Sensor ignored motion inactive event after 10s
dev:2702023-01-19 12:32:11.994 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:32:11.992 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:32:11.989 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00280101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 28, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:32:07.419 PMinfoGarage Door Sensor Motion reset to inactive after 6s
dev:2702023-01-19 12:32:07.417 PMdebugGarage Door Sensor (DP=0x01) motion event fncmd = 0
dev:2702023-01-19 12:32:07.414 PMdebugGarage Door Sensor dp_id=1 dp=1 fncmd=0
dev:2702023-01-19 12:32:07.412 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 00270101000100, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 27, 01, 01, 00, 01, 00]]
dev:2702023-01-19 12:32:07.197 PMinfoGarage Door Sensor Received bind response, data=[28, 82] (Sequence Number:28, Status: Failure)
dev:2702023-01-19 12:32:07.194 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0000 8021 00 00 0040 00 7459 00 00 0000 00 00 2882, profileId:0000, clusterId:8021, clusterInt:32801, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[28, 82]]
dev:2702023-01-19 12:32:07.070 PMdebugGarage Door Sensor write attribute response is success
dev:2702023-01-19 12:32:07.067 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 0000 01 01 0040 00 7459 00 00 0000 04 01 00, profileId:0104, clusterId:0000, clusterInt:0, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]]
dev:2702023-01-19 12:32:06.970 PMinfoGarage Door Sensor Tuya device manufacturer is _TZE200_pay2byax
dev:2702023-01-19 12:32:06.966 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:745901000068040042105F545A453230305F70617932627961780000002003010000204305000042065453303630310700003003FEFF003000, dni:7459, endpoint:01, cluster:0000, size:68, attrId:0004, encoding:42, command:01, value:_TZE200_pay2byax, clusterInt:0, attrInt:4, additionalAttrs:[[value:03, encoding:20, attrId:0000, consumedBytes:4, attrInt:0], [value:43, encoding:20, attrId:0001, consumedBytes:4, attrInt:1], [value:TS0601, encoding:42, attrId:0005, consumedBytes:9, attrInt:5]]]
dev:2702023-01-19 12:32:06.766 PMinfoGarage Door Sensor Motion is active 5s
dev:2702023-01-19 12:32:06.764 PMdebugGarage Door Sensor motion event 0x65 fncmd = 539
dev:2702023-01-19 12:32:06.761 PMdebugGarage Door Sensor dp_id=2 dp=101 fncmd=539
dev:2702023-01-19 12:32:06.759 PMdebugGarage Door Sensor parse(_TZE200_pay2byax) descMap = [raw:catchall: 0104 EF00 01 01 0040 00 7459 01 00 0000 02 01 0026650200040000021B, profileId:0104, clusterId:EF00, clusterInt:61184, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:7459, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:02, direction:01, data:[00, 26, 65, 02, 00, 04, 00, 00, 02, 1B]]
dev:2702023-01-19 12:32:01.628 PMdebugGarage Door Sensor sendZigbeeCommands (cmd=[he raw 0x7459 1 0x01 0x0000 {10 00 00 04 00 00 00 01 00 05 00 07 00 FE FF}, delay 200, he wattr 0x7459 0x01 0x0000 0xFFDE 0x20 {13} {}, delay 200, delay 200, zdo bind 0x7459 0x02 0x01 0x0402 {A4C138D671248ED8} {}, delay 200, zdo bind 0x7459 0x02 0x01 0x0405 {A4C138D671248ED8} {}, delay 200, zdo bind 0x7459 0x03 0x01 0x0400 {A4C138D671248ED8} {}])
dev:2702023-01-19 12:32:01.580 PMinfoGarage Door Sensor configure()..

  • HW is now able to detect events from this sensor. But since this driver is a PIR sensor driver, the Open/Close from sensor is marked as motion active/Inactive state.
  • More changes are required to handle the LUX part as well.

Hi @Abhay ,

I don't have a dedicated driver for Tuya contact sensors, as the one I own works fine with HE inbuilt drivers. For your device, which has an illuminance sensor also, there is some partial support in another driver, so let's continue the discussion in that thread.

Looking to potentially pick up this one primarily for the USB powered as I have a few spots I could put them so they could truly be set-it-and-forget it!

Wondering about the other sensors though - are they actually accurate?

Also any general feedback about quality/speed/issues with this one?

I am using this sensor for about 6 months USB powered, and no issues noticed.
Hopefully, some other users will share their experience.

@kkossev Can you please recommend 4 in 1 sensor which can be wall mounted and also works appropriately with HE?

Or a Human Presence sensor which can be wall mounted and works properly with HE

I need an AliExpress link :slight_smile:

Judging from the first post in this thread

AliExpress: link
Amazon.de : link
Price range: Mid

Reports: Motion, Temperature, Humidity
Configuration:Sensitivity, Keep Time

I would say:
Zigbee ID: _TZ3210_zmy9hjay, _TYST11_i5j6ifxj, _TYST11_7hfcudw5
AliExpress: link
Price Range: Mid

Or

AliExpress: link
Amazon.de : link
Price range: Mid

Reports: Motion, Temperature, Humidity
Configuration:Sensitivity, Keep Time

1 Like

But they dont help to check static human presence like these do I believe. As I believe PIR sensor only helps to detect motion. And not able to track human when there is no motion.

AED 44.33 52% Off | Smart Life Zigbee Human Presence Detector Tuya Wifi MmWave Radar Pir Montion Sensor With Luminance Detection For Alexa, Google
https://a.aliexpress.com/_mP3A774

I think I need FP1 kinda sensor that Aqara have one. Or radar sensor I believe.

There are also mmWave zigbee radar devices mentioned in that first post. Check that for reference

Yes I already had a look. But both are ceiling censor which I cannot use. I am looking for wall sensor. Two of them listed over there seems to be problematic as the author mentioned not recommended to buy.

Man… some people are hard to please :laughing::sunglasses::muscle:t3:

Maybe this could be usefull, but since it is not mentioned as supported, its anybodies guess

I just found Aqara sensor will work with HE without Aqara hub

Aqara FP1 and P1 motion sensors - #63 by kkossev , so my issue is solved as they are quality one and more accurate I believe.

This is Xiaomi Bluetooth mmWave.
I hope Zigbee products come out.

US $20.16 20%OFF | Linptech Smart Human Presence Sensor ES1 Linkage Millimeter Wave Radar Inductive Static Human Recognition 6m Sensing Distance
https://a.aliexpress.com/_mO4u8h4

1 Like

Just came in today;
Model TS0202

Confirmed TS0202, working without issues


* fingerprint profileId:"0104", 
* endpointId:"01"
* inClusters:"0001,0500,0003,0000", 
* outClusters:"1000,0006,0019,000A", 
* model:"TS0202", 
* ZCL version:03
* Software Build Id:unknown
* Model:TS0202
* Manufacturer:_TZ3000_6ygjfyll

EDIT/ ADD
Exported to HomeKit as motion sensor with battery, works fine.
Dont forget to remove the functionality that the homekit app provides like illuminance and temp. These are not supported by this device.

1 Like

Just got mine. Maybe I don’t understand the logic because it does not detect any motion.

manufacturer: _TZE200_3towulqd
model: TS0601

I’ve set lux treshold to 50 and expect it to detect motion when lux is below that. It does not.

No, the logic in the driver is “do not report Lux if the illuminance changed less than 50 lx”. This is to avoid too frequent lux reporting for some sensors.

You could use RM5 or RoomLighting app to add further logic - ignore the motion, if the illuminance is below a certain value.

You are saying that it should report motion no matter what? That it does not do. I see only illumination changes and battery status. I’ll try another one while I have three of those.