xbee long sleep end device doesn't send data after wake up


My problem is I have set my end device into SM = 1 that is pin hibernation. Then, after it has been sleeping for long time (around 5 mins), i de-asserted it to wake it up and wish to get some data like this:

7E 00 1A 91 00 13 A2 00 40 C2 7D 8A 37 F8 E8 E8 00 92 C1 05 01 01 00 08 04 00 00 02 14 35
(length =26)

However, rather than getting the data i wanted, i received there two frame data:

  1. 7E 00 1E 91 00 13 A2 00 40 C2 7D 8A 37 F8 00 00 00 13 00 00 42 82 F8 37 8A 7D C2 40 00 A2 13 00 80 3D

(length = 39)

  1. 7E 00 31 91 00 13 A2 00 40 C2 7D 8A 37 F8 E8 E8 00 95 C1 05 42 37 F8 00 13 A2 00 40 C2 7D 8A 45 4E 44 20 44 45 56 49 43 45 20 33 00 51 FE 02 02 C1 05 10 1E E6
    (length = 49)

and it would not continue sending data in the period as I set in IO sampling rate.

So, after I go to XCTU software, in networking work mode i press scan and it asks me to press reset button, then only the 26 long data will continuously send in period of sampling rate. Anyone knows why?? is it I wrong set anything, thanks in advanced!

Change your AO (API options byte) on your receiving module to a value of 0. That should solve your API output issue.

Hi, thanks for your reply. AO is just changing the output mode only, but my problem is seem like End device cannot send out data after it has been sleeping for a certain period. Is it setting under End device?

Or maybe i can ask, i wake it up a few time continuously after that it seem like cant be detected (if using network working mode, it is not connected to any router). Thanks!

Which XBee modules and firmware are you working with? What do you mean by “network working mode”?

I am using XB24-Z7PIT-004 ZigBee Module (http://my.rs-online.com/web/p/zigbee-modules/7716349/),
firmware for coordinator:
Product family: XB24-ZB
function set: coordinator API
Firmware version: 21A7 (latest)

Product family: XB24-ZB
function set: Router AT
Firmware version: 22A7 (latest)

End device:
Product family: XB24-ZB
function set: End Device AT
Firmware version: 28A7 (latest)

network working mode is in the tab of XCTU software which is use to scan the network of Zigbee and view it visualization. View the section “Explore the network” in this link : (https://docs.digi.com/display/XBeeZigBeeMeshKit/How+to+set+up+a+ZigBee+mesh+network)

Or maybe i put it in this way,when i switch on coordinator, router and end device. Then, I de-asserted pin 9(wake it up), then it has no response. After I scan the network using XCTU in network working mode, end device working normal by sending explicit RX indicator periodically (with IO sampling rate). But when let it sleep and wake it up again, it has no respond again. Do you know why? Am I need to send any command to let it send back explicit RX indicator?

The mode you are referring to most likely will not show any End devices as XCTU is using the Node Discovery function which is a Broadcast transmission and may timeout before the end device can wake up and poll its router parent and respond to the request.

Yes, you must tell the module to send some sort of data for that to show up on the parent router and Coordinator.

So what mode should I choose router and end device? I am using C# to communicate with the coordinator actually, what should I do/send so that end device can send back explicit RX indicator and source routing packet back?

By the way, I have set coordinator’s AR command into 30 seconds, that all for me if i want to get source routing right?

AR should only be used on networks that are larger than the number of routing entries within the routing table when Unicast messages are sent in ALL directions. AR should also only be sent as little as possible. Sending once every 30 seconds on a network that is Non roaming causes unnecessary network traffic.

If you are going to use the network view to see all of the nodes that are within your network, then yes, setting them as routers (one coordinator) would be of more help. The other option is for you in your own code pull the radios neighbor tables and child tables. Then build a network map from that data.

  1. I am using AR because i want it send back source routing, sending AR command periodically is it the first step for getting back the information of end device source routing ? I need to get the route of end device gone through, is this a proper way to do it?

  2. ‘setting them as routers (one coordinator) would be of more help’, i dont understand what setting you are mentioning?

3)So, what should I do/send so that end device can send back explicit RX indicator and source routing packet back?And is the mode using correctly?

Actually what i wanted it to do is very simple. A network that is created by coordinator, routers and a sleeping end device. When I wake end device up by de-asserted pin 9, then it should be able to send back Source routing packet (that contains the route it used) automatically to coordinator. Can please guide me? this is my very first time to use xbee. Thanks!!

The problem with that is it also turns off the AdHoc function.

Also you will have to issue the radio some sort of command to get it to respond.

you mean sleeping end device turns off adhoc function?? What sort of command?

No, a sleeping end device does not turn off AdHoc mode. Issuing the AR command is what turns off AdHoc mode.

so what should i do is just setting the AR in coordinator? Is it that all what i should do? Then i will get source routing back from end device?

Are you issuing the AR command on more than one module? If so, you should only issue on the node that is controlling the data flow or who is receiving the data. IE the Coordinator.

how frequent should i set so that the traffic will not be crowded?

A little as possible. If at all possible, no more than once per day.