Other Parts Discussed in Thread: CC2530, , Z-STACK
Hi guys,
I would need to understand what is the default behavior of zigbee network when it comes to devices with weak signal - a lot of failed messages.
Let's say you have battery powered sleepy device which reports once in an hour and auto polls every 10 seconds.
From my experience everything works fine when the device is placed near coordinator and there are no communication failures.
But when I move the device to the place with bad signal coverage I have the following behavior:
- End device is able to report to coordinator. It may happen that some reports are not delivered, but e.g. even if the report after one hour is not delivered, the next one after 2 hours is accepted by coordinator.
- End device polls for new messages every 10 seconds. Coordinator is set to expire messages after 30 seconds. So when the coordinator tries to deliver the message to the end device and the delivery is not successful, and maybe when such situation happens multiple times it decides to ignore such end device. When this happens, coordinator refuses to send anything to the end device, even when the end device is moved to better location. On the other hand, reports from the device are received by coordinator without problems. Only thing that helps is to restart the end-device and everything starts working (I'm not sure why - re-join?)
So I'm not sure what happens in such cases.
- Does coordinator removes such problematic devices from neighbor list after some number of failures?
- Is there any way how to prevent such behavior?
- Is there anything that can be configured on the end device and/or coordinator?
I'm using cc2652R with zigbee2mqtt as coordinator and e.g. cc2530 as a sleepy end device with z-stack1.2, nwk_auto_poll with polling interval 10 seconds. Power management set to battery and POWER_SAVING set.
But I noticed such behavior also with some commercial end devices.
It seems to me that when coordinator encounter some number of communication failures it removes the end device from the neighbor list and after that doesn't even try to deliver anything to that. Only when the end device re-join the network (e.g. batteries removed), it refreshes the table and is again able to communicate with the device..
Can I do anything to force coordinator NOT to give up on some devices even if there is temporary communication problem?
Thank you.