I have this dimming remote in my small Zigbee network that I am playing around with - just the coordinator, the remote, a light switch, and a dimmable lamp:
If I try to bind the remote to either the light switch or the dimmer, I get a success message for the binding, but an failure message for the specific clusters .
Here are debug logs for just the light:
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy.topology] Finished scanning neighbors for all devices
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] processing cluster: 6 Bind_req --> [84:71:27:ff:fe:c7:a1:09]
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy.device] [0x44da] Extending timeout for 0x44 request
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x44DA, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.FAIL: 1>)
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteDisc.Req(Dst=0x44DA, Options=<RouteDiscoveryOptions.UNICAST: 0>, Radius=30)
2021-09-29 18:26:12 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteDisc.Rsp(Status=<Status.SUCCESS: 0>)
2021-09-29 18:26:13 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x44DA), dst_ep=0, src_ep=0, cluster=ZDOCmd.Bind_req, sequence=68, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b"D\xf6\xa1\xcc\x01\x00\x8d\x15\x00\x01\x06\x00\x03\t\xa1\xc7\xfe\xff'q\x84\x01"
2021-09-29 18:26:13 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Bind_req({'SrcAddress': 00:15:8d:00:01:cc:a1:f6, 'SrcEndpoint': 1, 'ClusterID': 6, 'DstAddress': MultiAddress(addrmode=3, ieee=84:71:27:ff:fe:c7:a1:09, endpoint=1)}) and replaced with ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=6, Address=MultiAddress(addrmode=3, ieee=84:71:27:ff:fe:c7:a1:09, endpoint=1))
2021-09-29 18:26:13 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=6, Address=MultiAddress(addrmode=3, ieee=84:71:27:ff:fe:c7:a1:09, endpoint=1))
2021-09-29 18:26:13 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindReq.Rsp(Status=<Status.SUCCESS: 0>)
2021-09-29 18:26:26 DEBUG (MainThread) [zigpy_znp.api] Sending request: SYS.Ping.Req()
2021-09-29 18:26:26 DEBUG (MainThread) [zigpy_znp.api] Received command: SYS.Ping.Rsp(Capabilities=<MTCapabilities.APP_CNF|GP|UTIL|ZDO|AF|SYS: 1625>)
# Break here just to emphasise these lines
2021-09-29 18:26:28 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] cluster: 6 Bind_req --> [84:71:27:ff:fe:c7:a1:09] failed:
2021-09-29 18:26:28 INFO (MainThread) [homeassistant.components.zha.api] Devices bound: source_ieee: [00:15:8d:00:01:cc:a1:f6]target_ieee: [84:71:27:ff:fe:c7:a1:09]
The last couple of lines are what jumped out to me - cluster 6 is OnOff
and reports failed, but we go on to report the devices as bound.
It’s very similar for the dimmable lamp, only also with cluster 8 LevelControl
:
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] processing cluster: 6 Bind_req --> [08:6b:d7:ff:fe:5d:80:8c]
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] processing cluster: 8 Bind_req --> [08:6b:d7:ff:fe:5d:80:8c]
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy.device] [0x44da] Extending timeout for 0x45 request
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x44DA, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy.device] [0x44da] Extending timeout for 0x46 request
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.FAIL: 1>)
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteChk.Req(Dst=0x44DA, RtStatus=<RouteStatus.ACTIVE: 1>, Options=<RouteOptions.NO_ROUTE_CACHE|MTO_ROUTE: 3>)
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteChk.Rsp(Status=<RoutingStatus.FAIL: 1>)
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.ExtRouteDisc.Req(Dst=0x44DA, Options=<RouteDiscoveryOptions.UNICAST: 0>, Radius=30)
2021-09-29 18:26:59 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.ExtRouteDisc.Rsp(Status=<Status.SUCCESS: 0>)
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x44DA), dst_ep=0, src_ep=0, cluster=ZDOCmd.Bind_req, sequence=69, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'E\xf6\xa1\xcc\x01\x00\x8d\x15\x00\x01\x06\x00\x03\x8c\x80]\xfe\xff\xd7k\x08\x01'
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Bind_req({'SrcAddress': 00:15:8d:00:01:cc:a1:f6, 'SrcEndpoint': 1, 'ClusterID': 6, 'DstAddress': MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1)}) and replaced with ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=6, Address=MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1))
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=6, Address=MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1))
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted a ZDO request: dst_addr=AddrModeAddress(mode=<AddrMode.NWK: 2>, address=0x44DA), dst_ep=0, src_ep=0, cluster=ZDOCmd.Bind_req, sequence=70, options=TransmitOptions.SUPPRESS_ROUTE_DISC_NETWORK|ACK_REQUEST, radius=30, data=b'F\xf6\xa1\xcc\x01\x00\x8d\x15\x00\x01\x08\x00\x03\x8c\x80]\xfe\xff\xd7k\x08\x01'
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.zigbee.application] Intercepted AP ZDO request ZDOCmd.Bind_req({'SrcAddress': 00:15:8d:00:01:cc:a1:f6, 'SrcEndpoint': 1, 'ClusterID': 8, 'DstAddress': MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1)}) and replaced with ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=8, Address=MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1))
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindReq.Rsp(Status=<Status.SUCCESS: 0>)
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.api] Sending request: ZDO.BindReq.Req(Dst=0x44DA, Src=00:15:8d:00:01:cc:a1:f6, SrcEndpoint=1, ClusterId=8, Address=MultiAddress(addrmode=3, ieee=08:6b:d7:ff:fe:5d:80:8c, endpoint=1))
2021-09-29 18:27:00 DEBUG (MainThread) [zigpy_znp.api] Received command: ZDO.BindReq.Rsp(Status=<Status.SUCCESS: 0>)
# These:
2021-09-29 18:27:15 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] cluster: 6 Bind_req --> [08:6b:d7:ff:fe:5d:80:8c] failed:
2021-09-29 18:27:15 DEBUG (MainThread) [zigpy.zdo] [0x44da:zdo] cluster: 8 Bind_req --> [08:6b:d7:ff:fe:5d:80:8c] failed:
2021-09-29 18:27:15 INFO (MainThread) [homeassistant.components.zha.api] Devices bound: source_ieee: [00:15:8d:00:01:cc:a1:f6]target_ieee: [08:6b:d7:ff:fe:5d:80:8c]
I make sure the remote is awake just before attempting the bind, and have tried pressing buttons during the binding process too. I can see the button press events in the logs, so there is some level of communication working.
Can anyone help me figure out how to get these devices bound?