we are currently working with Digi xbee3 micro module Digimesh 2.4
We are using receive handler callback function in co-ordinator code using that we are receiving data from end devices.
settings for co-ordinator device :
we are using Synchronous Cyclic Sleep Support(SM=7) in co-ordinator side and
Synchronous Cyclic Sleep(SM=‘8’) in End device side
Sleep Period(SP)is 30 seconds
sleep time(ST)is 1 seconds
network hop is 4
channel id 12
network pan ID is 32567
Network delay slots is 3
multi transmit is 3
Size of payload from end device is 40 bytes.
When we connect 10 end device we are getting only 7 or 8 end device data, randomly we are missing 2 or 3 end device data.
Its not like we are missing same device data all the time. we are getting a device data one time same device data we are missing next time.
So, it will be helpful if we can get some solution to the problem which is mentioned above.
We are planning to implement on 100 devices. now for 10 device we are getting this problem.
Anom, Have you considered doing a polling network instead? This way you can control who is responding and ensure you get all of the nodes you want per wake cycle.
Thanks for your valuable reply, You mean to say xbee.receive() function in polling? We tried with this function, but still for every wake cycle we are randomly missing 2-3 end device data packets ,please help us out to resolve this issue
No that is not what I am meaning. What I mean is that you send unicast packets to each node requesting the data one at a time.
We are working on synchronous Cyclic sleep network where we need battery life for several years.
each node are battery powered,we cannot afford to keep them awake for entire poll to happen and complete,which will effect the battery life.
We are following the DigiXBee®3 DigiMesh 2.4 User Guide-90002277 Where above features are present.
We have to achieve communication with synchronous Cyclic sleep network only, How we can avoid data loss?
You can try to adjust the delay slots but the other option I listed will give you what you want much faster.
Regarding Polling method which will be faster.
Is it like whenever wake cycle happened in sleep support coordinator
we have to get in loop and query for each end devices One by One and get the data from each end device.
If this is the method then How do we recognise the starting of wake cycle?
We are managing wake up duration with 1.5 seconds. If we are polling with 100 devices will it be possible
to poll all of them within 1.5sec with mesh network considering several devices in hopping?
If you use API mode, you will get a status frame telling you when you are in the wake cycle and when it ends.
As u said By using modem status API frame we were able to find wake cycle ,now the flow is first we are doing xbee.discovery()in coordinator side ,after discovery according to the macid we got in the list. We are sending a unicast packet saying “hello” to 1st end device ,if “hello” is received send packet to coordinator. Then again sending a unicast packet saying “hello” to 2nd end device.if “hello” is received send packet to coordinator. Is this the polling method you were suggesting which will be faster and there will be no collisions of data?
Yes, that is a polling network.