New Sonoff SNZB-03P Motion Sensors not detecting

Hi everyone

I've had no issues with any of the recent Sonoff devices I have added to my hub including the old Sonoff devices or now the new "P" devices (all working just fine).

The only device that does seem to be an issue is the SNZB-03P motion sensors. I am thinking it is a driver issue for the new devices but would really appreciate anyone's help if they do know.

They power on fine, pair instantly, remain in the Zigbee mesh, however when clicking on the Device to set it up it comes through as a "Device" as a default. When changing this to the Generic Zigbee Motion Sensor (both the temp and no temp types), or using the Markus driver for the old SNZB-03 version, it still seems the only state it can detect is its battery level.

I have waited 24 hours, tried 3 different SNZB-03P motion sensor devices, ensured battery contact was good, configured, refreshed, re-paired, re-powered hubitat, re-built the mesh, but it seems that nothing it getting them to figure out that they need to be detecting motion. I have also kept them right next to the Hub during this process.

The LEDs also do blink when short-pressing the button on the sensor which it supposed to indicate that it is within range and working, however the LED does not flash or do anything when moving in front of the device to say that it has detected something. Logs do not show any activity other than the just mentioned short-pressing of the device.

I have an option to Update Firmware, but I am worried this may just brick the sensor.

Very thankful for any tips from anyone, thank you

Data of one of the motion sensors:

  • endpointId: 01
  • application: 00
  • inClusters: 0000,0001,0003,0020,0406,0500,FC57
  • manufacturer: eWeLink
  • model: SNZB-03P
  • outClusters: 0003,0019
  • softwareBuild: 2.2.1
1 Like

What is your hub - C-8 or older model?

@kkossev Hub Model C-8 Pro.

Looks like the new SNZB-03P does have different clusters to the old version too...

This means that the device is paired and the Zigbee connection is OK....

Can you try the Tuya 4-in-1 driver?

Manually install (or update to the latest version) of the Tuya driver, enable the Debug logs, then pair the Sonoff sensor again (without deleting it). I will need the live logs from the pairing process.

Yes, the 0x0406 cluster is new, most probably it is used to send a binary 'light' or 'dark' illuminance switch, Sonoff used this in some of their other products.

1 Like

@kkossev Thank you! This driver did work (logs below if you are still interested).

When re-pairing (not deleting) and then selecting the Tuya 4-in-1 driver, it worked straight away. I have now loaded it on 3 different Sonoff SNZB-03P devices and using it to trigger various motion rules, all working just fine.

It seems that the inactive reset timer is a little random though, sometimes it will hit the 60s bang on (or +/- a few seconds), but other times it will only reset after a logged 200+ seconds. I am not sure if this is just interference in signal or not yet but will keep monitoring.

Another question, is there a way to push a manual edit of how many seconds it will wait until it will reset motion and look for new motion? I am keen to have the delay a little shorter if possible.

Thanks!

dev:182024-08-03 07:30:16.592 PMdebugMotion Sensor 1 FC11 attribute 2001 value is 01
dev:182024-08-03 07:30:16.591 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E01FC110801202001, dni:214E, endpoint:01, cluster:FC11, size:08, attrId:2001, encoding:20, command:0A, value:01, clusterInt:64529, attrInt:8193] description = read attr - raw: 214E01FC110801202001, dni: 214E, endpoint: 01, cluster: FC11, size: 08, attrId: 2001, encoding: 20, command: 0A, value: 01
dev:182024-08-03 07:30:16.079 PMinfoMotion Sensor 1 Motion is active 28s
dev:182024-08-03 07:30:16.076 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E0104060800001801, dni:214E, endpoint:01, cluster:0406, size:08, attrId:0000, encoding:18, command:0A, value:01, clusterInt:1030, attrInt:0] description = read attr - raw: 214E0104060800001801, dni: 214E, endpoint: 01, cluster: 0406, size: 08, attrId: 0000, encoding: 18, command: 0A, value: 01
dev:182024-08-03 07:29:57.851 PMinfoMotion Sensor 1 IAS Zone State repot is 'Enrolled' (1)
dev:182024-08-03 07:29:57.849 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E0105000A00003001, dni:214E, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] description = read attr - raw: 214E0105000A00003001, dni: 214E, endpoint: 01, cluster: 0500, size: 0A, attrId: 0000, encoding: 30, command: 01, value: 01
dev:182024-08-03 07:29:57.367 PMdebugMotion Sensor 1 IAS write attribute response is success
dev:182024-08-03 07:29:57.365 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0104 0500 01 01 0040 00 214E 00 00 0000 04 01 00, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description = catchall: 0104 0500 01 01 0040 00 214E 00 00 0000 04 01 00
dev:182024-08-03 07:29:57.081 PMdebugMotion Sensor 1 sendZigbeeCommands (cmd=[he wattr 0x214E 0x01 0x0500 0x0010 0xF0 {71FA5BFEFF699EA4}, delay 300, he raw 0x214E 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x214E 1 0x01 0x0500 {10 00 00 00 00}, delay 201])
dev:182024-08-03 07:29:57.079 PMdebugMotion Sensor 1 enroll response: [he wattr 0x214E 0x01 0x0500 0x0010 0xF0 {71FA5BFEFF699EA4}, delay 300, he raw 0x214E 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x214E 1 0x01 0x0500 {10 00 00 00 00}, delay 201]
dev:182024-08-03 07:29:57.077 PMinfoMotion Sensor 1 Sending IAS enroll response...
dev:182024-08-03 07:29:57.075 PMdebugMotion Sensor 1 parse: enroll request: enroll request endpoint 0x01 : data 0x000D
dev:182024-08-03 07:29:55.956 PMdebugMotion Sensor 1 NOT PARSED : descMap = [raw:catchall: 0104 0003 01 FF 0040 00 214E 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:214E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:] description = catchall: 0104 0003 01 FF 0040 00 214E 01 00 0000 01 00
dev:182024-08-03 07:29:55.953 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0104 0003 01 FF 0040 00 214E 01 00 0000 01 00 , profileId:0104, clusterId:0003, clusterInt:3, sourceEndpoint:01, destinationEndpoint:FF, options:0040, messageType:00, dni:214E, isClusterSpecific:true, isManufacturerSpecific:false, manufacturerId:0000, command:01, direction:00, data:] description = catchall: 0104 0003 01 FF 0040 00 214E 01 00 0000 01 00
dev:182024-08-03 07:29:52.574 PMinfoMotion Sensor 1 Received match descriptor request, data=[04, 00, 00, 04, 01, 00, 01, 57, FC] (Sequence Number:04, Input cluster count:00 Input cluster: 0x5701)
dev:182024-08-03 07:29:52.572 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0400000401000157FC, profileId:0000, clusterId:0006, clusterInt:6, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[04, 00, 00, 04, 01, 00, 01, 57, FC]] description = catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0400000401000157FC
dev:182024-08-03 07:29:52.124 PMinfoMotion Sensor 1 Motion is active 4s
dev:182024-08-03 07:29:52.122 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E0104060800001801, dni:214E, endpoint:01, cluster:0406, size:08, attrId:0000, encoding:18, command:0A, value:01, clusterInt:1030, attrInt:0] description = read attr - raw: 214E0104060800001801, dni: 214E, endpoint: 01, cluster: 0406, size: 08, attrId: 0000, encoding: 18, command: 0A, value: 01
dev:182024-08-03 07:29:51.474 PMinfoMotion Sensor 1 Received match descriptor request, data=[03, 00, 00, 04, 01, 00, 01, 57, FC] (Sequence Number:03, Input cluster count:00 Input cluster: 0x5701)
dev:182024-08-03 07:29:51.472 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0300000401000157FC, profileId:0000, clusterId:0006, clusterInt:6, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[03, 00, 00, 04, 01, 00, 01, 57, FC]] description = catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0300000401000157FC
dev:182024-08-03 07:29:49.370 PMinfoMotion Sensor 1 IAS Zone State repot is 'Enrolled' (1)
dev:182024-08-03 07:29:49.367 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E0105000A00003001, dni:214E, endpoint:01, cluster:0500, size:0A, attrId:0000, encoding:30, command:01, value:01, clusterInt:1280, attrInt:0] description = read attr - raw: 214E0105000A00003001, dni: 214E, endpoint: 01, cluster: 0500, size: 0A, attrId: 0000, encoding: 30, command: 01, value: 01
dev:182024-08-03 07:29:49.190 PMinfoMotion Sensor 1 Received match descriptor request, data=[02, 00, 00, 04, 01, 00, 01, 57, FC] (Sequence Number:02, Input cluster count:00 Input cluster: 0x5701)
dev:182024-08-03 07:29:49.187 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0200000401000157FC, profileId:0000, clusterId:0006, clusterInt:6, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[02, 00, 00, 04, 01, 00, 01, 57, FC]] description = catchall: 0000 0006 00 00 0040 00 214E 00 00 0000 00 00 0200000401000157FC
dev:182024-08-03 07:29:48.852 PMdebugMotion Sensor 1 IAS write attribute response is success
dev:182024-08-03 07:29:48.850 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0104 0500 01 01 0040 00 214E 00 00 0000 04 01 00, profileId:0104, clusterId:0500, clusterInt:1280, sourceEndpoint:01, destinationEndpoint:01, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:04, direction:01, data:[00]] description = catchall: 0104 0500 01 01 0040 00 214E 00 00 0000 04 01 00
dev:182024-08-03 07:29:48.629 PMinfoMotion Sensor 1 IAS Zone Type repot is 'Motion Sensor' (13)
dev:182024-08-03 07:29:48.627 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E0105000C0100310D00, dni:214E, endpoint:01, cluster:0500, size:0C, attrId:0001, encoding:31, command:01, value:000D, clusterInt:1280, attrInt:1] description = read attr - raw: 214E0105000C0100310D00, dni: 214E, endpoint: 01, cluster: 0500, size: 0C, attrId: 0001, encoding: 31, command: 01, value: 0D00
dev:182024-08-03 07:29:48.352 PMinfoMotion Sensor 1 received device manufacturer eWeLink
dev:182024-08-03 07:29:48.350 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:214E01000046040042076557654C696E6B0500004208534E5A422D3033500040004205322E322E31, dni:214E, endpoint:01, cluster:0000, size:46, attrId:0004, encoding:42, command:01, value:eWeLink, clusterInt:0, attrInt:4, additionalAttrs:[[value:SNZB-03P, encoding:42, attrId:0005, consumedBytes:11, attrInt:5], [value:2.2.1, encoding:42, attrId:4000, consumedBytes:8, attrInt:16384]]] description = read attr - raw: 214E01000046040042076557654C696E6B0500004208534E5A422D3033500040004205322E322E31, dni: 214E, endpoint: 01, cluster: 0000, size: 46, attrId: 0004, encoding: 42, command: 01, value: 076557654C696E6B0500004208534E5A422D3033500040004205322E322E31
dev:182024-08-03 07:29:48.210 PMinfoMotion Sensor 1 Received device announcement, data=[81, 4E, 21, A1, 78, 32, FE, FF, 12, 27, 84, 80] (Sequence Number:81, Device network ID: 214E, Capability Information: 80)
dev:182024-08-03 07:29:48.207 PMdebugMotion Sensor 1 parse: (eWeLink, UNKNOWN, 1.9.2 2024/06/15 9:01 AM) descMap = [raw:catchall: 0000 0013 00 00 0040 00 214E 00 00 0000 00 00 814E21A17832FEFF12278480, profileId:0000, clusterId:0013, clusterInt:19, sourceEndpoint:00, destinationEndpoint:00, options:0040, messageType:00, dni:214E, isClusterSpecific:false, isManufacturerSpecific:false, manufacturerId:0000, command:00, direction:00, data:[81, 4E, 21, A1, 78, 32, FE, FF, 12, 27, 84, 80]] description = catchall: 0000 0013 00 00 0040 00 214E 00 00 0000 00 00 814E21A17832FEFF12278480
dev:182024-08-03 07:29:48.190 PMdebugMotion Sensor 1 sendZigbeeCommands (cmd=[he raw 0x214E 1 0x01 0x0000 {10 00 00 04 00 05 00 00 40}, delay 200, he raw 0x214E 1 0x01 0x0500 {10 00 00 01 00}, delay 201, he wattr 0x214E 0x01 0x0500 0x0010 0xF0 {71FA5BFEFF699EA4}, delay 300, he raw 0x214E 1 0x01 0x0500 {01 23 00 00 00}, delay 300, he raw 0x214E 1 0x01 0x0500 {10 00 00 00 00}, delay 224])
dev:182024-08-03 07:29:48.187 PMdebugMotion Sensor 1 Enrolling IAS device ...
dev:182024-08-03 07:29:48.183 PMdebugMotion Sensor 1 tuyaBlackMagic for IAS device ...
dev:182024-08-03 07:29:48.179 PMdebugMotion Sensor 1 tuyaBlackMagic for non-Tuya device ...
dev:182024-08-03 07:29:48.141 PMinfoMotion Sensor 1 configure()..
sys:12024-08-03 07:29:47.133 PMinfoFound previously joined Zigbee device Motion Sensor 1
sys:12024-08-03 07:29:44.660 PMinfoZigbee Discovery Running

1 Like

Is the Lux level recognised?

I just bought a bunch of these as an update to the original non P version. Have also been able to get this to work using the Tuya driver. Any more info on additional configuration options for timeout/retriggering etc?

@TTaeng It seems I missed your post some months ago... : (

To enable the software reset timer in this driver, you must first toggle the 'Reset Motion To Inactive' switch in the Preferences section and click the Save Preferences button.

Then, you can modify the 'Motion Reset Timer' timeout.

Make sure you click on the Save Preferences button.

1 Like

@kkossev Does this mean that it will switch to inactive after 60 seconds regardless if there is motion still present? Or does it mean it will wait 60 seconds to go inactive after motion has stopped?

I am looking at purchasing a couple of these, do any of you gentlemen that purchased these have any experience info you want to share?

The ''Motion Reset' timer is restarted on each 'motion detected' event received from the device. So yes, it will force the motion attribute to an inactive state even when there is still motion, but the device does not send new motion events regularly.

This auto-reset option is unnecessary for these motion sensors that send both 'motion active' and 'motion inactive' Zigbee messages. However, some sensors send only 'motion active' messages - they never send 'motion inactive' messages. That's why this option is needed for some specific devices only and is turned off by default.

1 Like

Makes sense. I appreciate the reply.

What are some motion sensors that send both motion active and motion inactive indications?

Hue does.

1 Like

Most of the PIR motion sensors are sending both active and inactive messages,
Those who are only sending 'motion active' messages are more of an exception.

3 Likes

I am assuming any PIR sensors that will change the status to motion and then inactive on its own without a reset timing is sending both signals. Is this correct?

They are probably out there but I haven't met a PIR sensor that doesn't send Inactive.
Lots of my pistons test for Inactive and I have Aqara, SmartThings, Hue and Sonoff (the exception here).

@kkossev or anyone else of this great knowledgeable community I was wondering if you could teach me something. I installed a couple of the Sonoff SNZB-03P motion sensors and didn't realize I had left the debug log setting turned on. I went into the log for something else and noticed these debug entries. I have attached a screenshot of the logs. Is this normal? Is there something wrong? I don't understand what parse is or the other stuff so I am lost. Just for reference the sensor appears to be working fine. I know this may be nothing but please educate me.


1 Like

I'm no expert but I thinks that's all normal for Debug/Logs.
Just turn them off unless @kkossev says otherwise.

1 Like

Thank you. I did turn them off. Just trying to learn what some of this means so I can contribute.

I've paired a Sonoff (eWeLink) SNZB-03P motion sensor, using the Tuya Multi Sensor 4-in-1 driver. From my State and Device data, see Sonoff (eWeLink) SNZB-03P motion sensor - doesn't reporting battery level? - #3 by John_Land

I've tried to set the reset time to 10 secs. That appears to work in the UI, with the UI indicating "inactive" after 10 seconds and the log saying "reset to inactive after 10s (software timeout)".

HOWEVER, the sensor does not ACTUALLY reset -- it will not re-trigger for up to 6 minutes after being "reset" to inactive by the driver.

Is this a problem with the driver, the sensor, or my configuration?

Platform Version = 2.4.1.125
Hardware Version = C-8 Pro

1 Like