This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

[Zigbee/NCS] Can we dynamic enable / disable sleepy end device behavior

Hi ,

We have a requirement to use the end device. The device should be an sleepy end device normal . When we want to transmit a large data to router , we want make this end device become non-sleepy end device.

At NCS , the zb_get_rx_on_when_idle() is use to configure the behavior.

Want to check this behavior could dynamically change or we need to stop the zigbee stack and reinitialized it when we want to change the function.

BR

Brian  

.

Parents
  • Hi,

    Unfortunately it's not that easy. Based on the Zigbee specification the device will inform the other nodes about it's role and if it is a sleepy end device during association to the network. So even if you change the device role locally, your parent node will not  automatically be informed about it.

    If you want to change the device role it looks like you will need to leave the network, forget the device and join again with a new role, which I suppose will be a bit cumbersome for the customer. This is because of the Zigbee Base Behaviour specification and not something related to NCS.

    I don't think the sleepy end behaviour is intended to be switched on and off dinamically on Zigbee, perhaps it would be better to know in which case the customer sees the need to disable the sleepy behaviour and why, so we can try to think of a better solution for them? 

    Best regards,

    Marjeris

  • Hi msromero,

    Thanks for your suggestion.

    Actually what they care is the communication duration. Their application need to translate  a quite big data like 64 kb image data. I search the devzon. It is look like to change the long poll time or request the turbo poll would be better idea. If you have any other suggeston,please kindly share us.

    Thanks 

    BR

    Brian  

  • Hi Brian,

    Sorry for the late reply.  I don't think there will be a problem with transfer of large packets using sleepy behaviour, the question will be how often you would like the sleepy end device to receive these packets. The parent of the sleepy end device will buffer the packet until the sleepy end device ask for it with a "Data request" packet. How often the sleepy end device ask its parent for data (polls its parent) can be configured.

    According to the Zigbee Base Device Behaviour specification, you can change the MAC data polling rate dynamically based on the operating state of the node, this means you can for example poll at a fast rate if you know you are expecting multiple messages, and reduce the polling frequency when the node is not actively waiting for messages to ensure it still has a connection with the network and with its parent.

    What are the results when the customer tries to transfer the 64kB chunk of data using the default long poll interval? Do you have a sniffer trace of the transfer?

    Best regards,

    Marjeris

  • Hi Msromerom

    The request is they want to increase the throughput to reduce the updating time.

    At their test at shielding box , the through put  is around  546.3 Byte/Per second . The duration between command and APS ack is 82 msec. They configure the device as sleepy end device so the APS ack is sent after router receiving the data request. That is why they ask they could configure the device as sleepy / nonsleepy end device or not.

    BR

    Brian 

Reply
  • Hi Msromerom

    The request is they want to increase the throughput to reduce the updating time.

    At their test at shielding box , the through put  is around  546.3 Byte/Per second . The duration between command and APS ack is 82 msec. They configure the device as sleepy end device so the APS ack is sent after router receiving the data request. That is why they ask they could configure the device as sleepy / nonsleepy end device or not.

    BR

    Brian 

Children
Related