How to monitor Zigbee devices for dead or alive, especially end devices that sleep

Hello, I have a question about how to monitor Zigbee devices for dead or alive, especially end devices that sleep. I am currently developing a hub to control and retrieve data from home appliances that support the Zigbee protocol. This hub is equipped with nRF5340 and has Flash firmware built with nRF Connect SDK.

I'm thinking of connecting a Hue Dimmer switch, etc. to this hub and using the hub to check periodically (e.g., every 60 seconds) if the device is able to join the network. However, it seems difficult because the end device will sleep after a certain period of time and any commands from a coordinator or router will be timed out.

How can I regularly check to see if a device is properly participating in the network? I would also appreciate any other best practices on how to monitor for dead activity other than the above methods.

I apologize that these questions are a bit abstract. Thank you.

Parents Reply
  • Hi,

    Thanks for the reply.

    It is not a sniffer that I am looking for. I simply want to know how to check if the device is able to participate in the network (i.e., if it is ready to communicate) from a coordinator.
    I thought about using the zdo mgmt_lqi command of Zigbee shell to periodically check the LQI, but the table obtained by this command is not reflected in real time (we found that resetting a connected device does not remove the device's information from the table, the LQI is not set to 0, etc.), so we decided that it would be difficult to use this command for periodic communication status checks.

Children
  • The ZED aging and keep-alive should technically take care of this (chapter "End Device Aging and Management" in the Zigbee spec). When the device times out, it should be removed from the neighbor table, so the neighbor table of the parent device is the best indication that a device is no longer on the network.

    You could also check the age or time to expire fields of the neighbor table locally on the parent. Here is a function for how this could be retrieved (it is made for nRF5 SDK, though it should be somewhat similar in NCS).

    Other than that, I guess the only option would be to regularly send commands to the ZED and keep a sort of manual neighbor table, but that seems unnecessary when there already is something for this exact thing.

    Regards,

    Elfving

Related