This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Does the Coordinator require the same endpoint for a cluster as another node?



If I have the OnOff Cluster set up on a router, does the endpoint number have to be the same on the coordinator for communication?

If it is not, how can I identify what endpoint it is to communicate with it? Is this the reason I have to use binding?

Zigbee claims interoperablity with all other zigbee devices within a HA network. If this is the case, does that mean if I were to connect an existing product in the market to my device, it would bind to my coordinator and provide me with the endpoint number to keep track of?

Finally if this were the case how could the coordinator keep track of all these endpoints? Having a network of 100+ nodes the coordinator simply does not have the memory to keep track of all these? I read in the zigbee pro stack recently that this is why the binding isn't actually done on the coordinator all the time anymore, it is also done on the routers, but if this were now the case, how could the coordinator know that the device has bound to the network? Or even be able to communicate to those devices through the router?

  • The endpoint number doesn't have to be the same on the coordinator and router for communication. There are several binding approaches. One of them is ZDP_EndDeviceBindReq. If you have a look at HAL_KEY_SW_2 implementation in SampleLight zclSampleLight_HandleKeys function, you can see how it is called. A device should know the endpoint on itself. If two device wants to binding each other, both of they can issue ZDP_EndDeviceBindReq with its own endpoint, profile ID and binding cluster in a duration and coordinator would help to do binding. Using ZDP_EndDeviceBindReq, you don't have to know the endpoint of another node. Another approach is to use ZDP_BindReq and you would need endpoint of source binding node and destination binding node. I usually send ZDP_BindReq from coordinator so coordinator has to know the endpoints of every joined node. You can use ZDP_ActiveEPReq from coordinator to request endpoint of any device in the network. As you said in your post, you might not have enough memory to keep endpoint information on coordinator and it would be better for you to use ZDP_EndDeviceBindReq.
  • Thanks YK Chen!

    So if I had to issue commands from the coordinator for (lets say 400 devices), I obvioulsy can't bind all these devices on my coordinator, but I can do it locally on the devices themselves? Does this make it easier for endpoint discovery when I actually need to send a command to that device?

    In other words, if I need to send an On command to a router and the router had a binding to my coordinator locally. Does the binding assist the active endpoint request (ZDP_ActiveEPReq) in its discovery? Or does the local binding only really help the router send data back to the coordinator if it had alarm styled reporting?
  • Since you cannot do ZDP_BindReq from coordinator, I have suggested ZDP_EndDeviceBindReq from devices themselves and it would be thing easier.