Communication Issues Between Zigbee Sleepy End Device and Gateway with Extended Poll Interval

We are developing a sleepy end device using the nRF52840, using light switch sample. The end device is connected to a Zigbee coordinator, also based on the nRF52840.When we increase the end device poll interval to 5 minutes, we are unable to read data from the end device and receive a negative acknowledgment after 40 seconds. We suspect the issue may be related to either the end device or the gateway configuration.

Could you advise what changes we should make, either on the gateway or the end device, to resolve this issue and successfully read data from the end device?

End device configuration:

zb_set_ed_timeout(ED_AGING_TIMEOUT_512MIN);
zb_set_keepalive_timeout(ZB_MILLISECONDS_TO_BEACON_INTERVAL(((512 * 60 * 1000) / 4)));
zb_zdo_pim_set_long_poll_interval(300000);


Gateway details:

Zigbee coordinator based on nRF52840.
We are using the nRF SDK Zigbee network coordinator example as the base for our gateway.

We are considering the following possibilities and would appreciate your guidance:

1.Should we modify the poll interval or keepalive settings on the end device?
2.Is it necessary to adjust the timeout or acknowledgment settings on the gateway?
3.Are there any other recommended adjustments we should make to ensure proper communication between the gateway and the end device when the poll interval is set to 5 minutes or longer?

Parents
  • Hello,

    Thank you for waiting patiently for a response.

    I need some more information from you to be able to give you the most relevant answers.

    Please tell me which nRF Connect SDK version you are using.

    If you are able to do a sniffer trace of the network, this is very helpful to find out how the coordinator handles the values the end device is requesting. You can find the user guide for the nRF Sniffer for 802.15.4 here if you are not familiar.

    Best regards,

    Maria

  • Hello  

    I have attached a sniffer log for your reference. In our setup, we have configured the Data Request to be sent every minute. When attempting to read data from the end device, I occasionally receive a response, but other times, no response is received. I also do not see any Read Attribute Request in the sniffer log.  It seems that the readings are successful if they occur within 40 seconds before the next Data Request 

    However, when the Data Request interval is set to 7 seconds, the communication works consistently. Unfortunately, we cannot maintain such a short interval and require a longer duration. Could you please advise on how to adjust the timeout settings on the gateway side to receive a response with a poll interval longer than 7 seconds?

    7624.WiresharkLog.pcapng



    Gateway SDK: nrf Connect SDK version 2.1.0
    End Device SDK: nrf Connect SDK version 2.0.0
  • Hello,

    Kavitha said:
    When attempting to read data from the end device, I occasionally receive a response, but other times, no response is received.

    I can see that a response is not received for the Read Attributes request in packet 61. Note that the NWK sequence number is the same as for the previous Read Attribute request (packet 40) and that it was sent shortly after the Read Attributes Response was sent, so it is expected that no additional Read Attributes Response will be sent.

    For the other Read Attribute requests, a response is sent for each. See packets 40/48, 206/213 and 227/231.

    Kavitha said:
    However, when the Data Request interval is set to 7 seconds, the communication works consistently. Unfortunately, we cannot maintain such a short interval and require a longer duration.

    After studying chapter 6.8 from the ZigBee Base Device Behavior specification it can be concluded that is follows the specification. For a sleepy ZED, a polling interval of minimum 7.5 seconds is required to not miss any frames. This is because a parent node is not required to buffer a single message for more than 7.5 seconds.

    It is recommended that the polling interval for a sleepy ZED is at most 7.5 seconds when the ZED is expecting data. When it is not expecting data, the polling interval can be larger.

    Also, to ensure that the poll interval is set correctly, zb_zdo_pim_set_long_poll_interval() needs to be called after the ZED has joined a network. Please see the documentation for the function here.

    Best regards,

    Maria

Reply
  • Hello,

    Kavitha said:
    When attempting to read data from the end device, I occasionally receive a response, but other times, no response is received.

    I can see that a response is not received for the Read Attributes request in packet 61. Note that the NWK sequence number is the same as for the previous Read Attribute request (packet 40) and that it was sent shortly after the Read Attributes Response was sent, so it is expected that no additional Read Attributes Response will be sent.

    For the other Read Attribute requests, a response is sent for each. See packets 40/48, 206/213 and 227/231.

    Kavitha said:
    However, when the Data Request interval is set to 7 seconds, the communication works consistently. Unfortunately, we cannot maintain such a short interval and require a longer duration.

    After studying chapter 6.8 from the ZigBee Base Device Behavior specification it can be concluded that is follows the specification. For a sleepy ZED, a polling interval of minimum 7.5 seconds is required to not miss any frames. This is because a parent node is not required to buffer a single message for more than 7.5 seconds.

    It is recommended that the polling interval for a sleepy ZED is at most 7.5 seconds when the ZED is expecting data. When it is not expecting data, the polling interval can be larger.

    Also, to ensure that the poll interval is set correctly, zb_zdo_pim_set_long_poll_interval() needs to be called after the ZED has joined a network. Please see the documentation for the function here.

    Best regards,

    Maria

Children
No Data
Related