Requesting 'Node Descriptor' timeout on DevelCo / Frient Water Leakage Sensor

Hello all,

I’m quite new to HA, though I’ve known about it for some time. Since moving last summer I can finally do the investments I like into home automation. As such, I recently got my first home assistant device. In this case I have the HA Yellow POE edition. It is running the latest version of Home Assistant.

I was successfully able to set-up most of my zigbee devices: SONOFF temp sensors, Hue motion sensors, and SkyDance 0-10v Dimmer modules. This is working quite well!

However, I also have a DevelCo / Friend Water Leakage Sensor (FLSZB110) which I’m not able to register on my network. In my case, the device will start interview, but never finish.

Would it require some sort of ZHA Quirk? On Z2M, this device already required some custom engineering to make it work.

Here’s the Z2M integration page: https://github.com/Koenkk/zigbee2mqtt.io/blob/d2be5c987a7a8e9b7e5590dd89be2c2b83ff109a/docs/devices/FLSZB-110.md
And here’s a discussion around developing Z2M integration: Koenkk/zigbee2mqtt#7219

I can get the ZHA integration to start interviewing the device (though it is required to reset the sensor each time). However after 5 tries ZHA completes the interview process.

According to the logs how I understand the logs, it appears that the device does not respond to the ‘Node Descriptor’ request in time. Then the request times out, and only then the device responds with the requested package:

> [0x27a1] Requesting 'Node Descriptor'
> [0x27a1] Extending timeout for 0x08 request
> Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 45, 754116, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=22, profile_id=0, cluster_id=32770, data=Serialized[b"\x08\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=144, rssi=-64)
> Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x08\x80\xa1'\x00"]

Below i have also included the full logs for connecting this device.

Full Logs
Feeding watchdog
Device 0x5114 (3c:2e:f5:ff:fe:ba:9e:c0) joined the network
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 30, 446113, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=0, source_route=None, extended_timeout=False, tsn=0, profile_id=0, cluster_id=19, data=Serialized[b"\x00\xa1'\xd2u\x003\x00\xbc\x15\x00\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=116, rssi=-71)
Device 0x27a1 (00:15:bc:00:33:00:75:d2) joined the network
[0x27a1] Scheduling initialization
[0x27a1] Canceling old initialize call
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 19: Serialized[b"\x00\xa1'\xd2u\x003\x00\xbc\x15\x00\x00"]
[0x27a1:zdo] ZDO request ZDOCmd.Device_annce: [0x27A1, 00:15:bc:00:33:00:75:d2, 0]
Tries remaining: 5
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x02 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 30, 459067, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=2, profile_id=0, cluster_id=2, data=Serialized[b'\x01\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=116, rssi=-71)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 2: Serialized[b'\x01\x00\x00']
[0x27a1:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
[0x27a1:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000])
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 30, 824849, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x25B5), src_ep=2, dst=AddrModeAddress(addr_mode=<AddrMode.Broadcast: 15>, address=<BroadcastAddress.ALL_ROUTERS_AND_COORDINATOR: 65532>), dst_ep=255, source_route=None, extended_timeout=False, tsn=246, profile_id=260, cluster_id=1030, data=Serialized[b'\x18\xee\n\x00\x00\x18\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=100, rssi=-75)
[0x25B5:2:0x0406] Received ZCL frame: b'\x18\xee\n\x00\x00\x18\x00'
[0x25B5:2:0x0406] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=238, command_id=10, *direction=<Direction.Client_to_Server: 1>)
[0x25B5:2:0x0406] Decoded ZCL frame: PhilipsOccupancySensing:Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=bitmap8, value=<bitmap8: 0>))])
[0x25B5:2:0x0406] Received command 0x0A (TSN 238): Report_Attributes(attribute_reports=[Attribute(attrid=0x0000, value=TypeValue(type=bitmap8, value=<bitmap8: 0>))])
[0x25B5:2:0x0406] Attribute report received: occupancy=<bitmap8: 0>
[0x5114](SNZB-02P): Device seen - marking the device available and resetting counter
[0x5114](SNZB-02P): Update device availability -  device available: True - new availability: True - changed: False
[0xB4A1](SML003): Device seen - marking the device available and resetting counter
[0xB4A1](SML003): Update device availability -  device available: True - new availability: True - changed: False
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 31, 978763, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=4, profile_id=0, cluster_id=32770, data=Serialized[b"\x01\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=120, rssi=-70)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x01\x80\xa1'\x00"]
[0x27a1:zdo] ZDO request ZDOCmd.Node_Desc_rsp: [<Status.INV_REQUESTTYPE: 128>, 0x27A1, None]
[0x27a1:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_rsp([<Status.INV_REQUESTTYPE: 128>, 0x27A1, None])
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 32, 90346, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=6, profile_id=0, cluster_id=32770, data=Serialized[b"\x02\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=120, rssi=-70)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x02\x80\xa1'\x00"]
Feeding watchdog
Tries remaining: 4
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x03 request
[0xB8AD](TS0501B): Attempting to checkin with device - missed checkins: 1
[0xB8AD:1:0x0000] Sending request header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Server_to_Client: 0>, disable_default_response=0, reserved=0, *is_cluster=False, *is_general=True), tsn=13, command_id=<GeneralCommand.Read_Attributes: 0>, *direction=<Direction.Server_to_Client: 0>)
[0xB8AD:1:0x0000] Sending request: Read_Attributes(attribute_ids=[4])
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 34, 283967, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=8, profile_id=0, cluster_id=32770, data=Serialized[b"\x03\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=124, rssi=-69)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x03\x80\xa1'\x00"]
Tries remaining: 3
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x04 request
[0x9928](SNZB-02D): Device seen - marking the device available and resetting counter
[0x9928](SNZB-02D): Update device availability -  device available: True - new availability: True - changed: False
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 36, 293196, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=10, profile_id=0, cluster_id=32770, data=Serialized[b"\x04\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=120, rssi=-70)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x04\x80\xa1'\x00"]
Tries remaining: 2
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x05 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 37, 838985, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=12, profile_id=0, cluster_id=32770, data=Serialized[b"\x05\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=100, rssi=-75)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x05\x80\xa1'\x00"]
Tries remaining: 1
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x06 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 40, 154823, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=14, profile_id=0, cluster_id=32770, data=Serialized[b"\x06\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=108, rssi=-73)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x06\x80\xa1'\x00"]
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 40, 233587, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=16, profile_id=0, cluster_id=2, data=Serialized[b'\x03\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=64, rssi=-84)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 2: Serialized[b'\x03\x00\x00']
[0x27a1] Scheduling initialization
[0x27a1:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
[0x27a1:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000])
Tries remaining: 5
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x07 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 41, 924671, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=18, profile_id=0, cluster_id=32770, data=Serialized[b"\x07\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=92, rssi=-77)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x07\x80\xa1'\x00"]
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 41, 952183, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=20, profile_id=0, cluster_id=32770, data=Serialized[b"\x07\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=96, rssi=-76)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x07\x80\xa1'\x00"]
[0x27a1:zdo] ZDO request ZDOCmd.Node_Desc_rsp: [<Status.INV_REQUESTTYPE: 128>, 0x27A1, None]
[0x27a1:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_rsp([<Status.INV_REQUESTTYPE: 128>, 0x27A1, None])
Feeding watchdog
Tries remaining: 4
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x08 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 45, 754116, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=22, profile_id=0, cluster_id=32770, data=Serialized[b"\x08\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=144, rssi=-64)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x08\x80\xa1'\x00"]
Tries remaining: 3
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x09 request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 47, 937334, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=24, profile_id=0, cluster_id=32770, data=Serialized[b"\t\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=144, rssi=-64)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\t\x80\xa1'\x00"]
Tries remaining: 2
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x0a request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 50, 247040, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=26, profile_id=0, cluster_id=2, data=Serialized[b'\x11\x00\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=140, rssi=-65)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 2: Serialized[b'\x11\x00\x00']
[0x27a1:zdo] ZDO request ZDOCmd.Node_Desc_req: [0x0000]
[0x27a1:zdo] No handler for ZDO request:ZDOCmd.Node_Desc_req([0x0000])
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 51, 789645, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=28, profile_id=0, cluster_id=32770, data=Serialized[b"\n\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=112, rssi=-72)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\n\x80\xa1'\x00"]
Feeding watchdog
Tries remaining: 1
[0x27a1] Requesting 'Node Descriptor'
[0x27a1] Extending timeout for 0x0b request
Received a packet: ZigbeePacket(timestamp=datetime.datetime(2024, 1, 12, 13, 26, 54, 15712, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x27A1), src_ep=0, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=0, source_route=None, extended_timeout=False, tsn=30, profile_id=0, cluster_id=32770, data=Serialized[b"\x0b\x80\xa1'\x00"], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=112, rssi=-72)
Received frame on uninitialized device <Device model=None manuf=None nwk=0x27A1 ieee=00:15:bc:00:33:00:75:d2 is_initialized=False> from ep 0 to ep 0, cluster 32770: Serialized[b"\x0b\x80\xa1'\x00"]
Feeding watchdog

Thanks in advance!