This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Need Help with zigbee Self healing and sending messages continously

Other Parts Discussed in Thread: Z-STACK, CC2530

Hello, i'm using ztack v3 and have this configuration:

all are in range. when i turn off zr1, zr2 doesn't send messages to ZC, i'm checking neighbours and associated list and the router coordinator. This is the status when all devices are on:

As you can see, zc and zr1 are in the neighbours list (zc = 32464, zr1 = 14785) and the coordinator is zr1. (ignore concentrator as i haven't programmed that part yet).

Now this is how it looks when zr1 is turned off. When i send the message from zr2 to zc, it doesn't go trough. (when zr1 is turned on it works). All devices can see each other.

Also how can i make sure of the route the message took? how can i know if the messge was sent directly to  neighbour or it was sent through intermediary? (i need this for red structure data analisis, like rssi between devices). 

The other problem i have is that when i try to send messages in a row my program or it gets stuck or it reset (this is random)(if i wait some time, this doesn't happen). I can't find a flag to check before sending messages . Can some1 point me to the .h, structure or flag to check before knowing i can send a message? i don't want to use a timer, i prefer to check for flags

That would be all.

Thank you.

Nico

  • Hello Nico,

    Please provide more context for optimal support.  What TI Zigbee device and software solution (provide version) are you using?  Do you have a sniffer device set up to view the over-the-air packets?  Have you already reviewed the Z-Stack documentation (specifically the User's and API Guides)? 

    If the ZC truly is a neighbor of ZR2, then ZR2 can force a network route request Zstackapi_DevNwkRouteReq() to receive a response from the ZC and update its route table.  Or it will heal automatically after NWK_ROUTE_AGE_LIMIT times NWK_LINK_STATUS_PERIOD seconds.  

    If you are exceeding the Z-Stack packet buffers then you should wait for previous messages to be sent out before queuing the next.  You can refer to End-To-End Acknowledgements where zstackmsg_CmdIDs_AF_DATA_CONFIRM_IND is processed without setting AF_ACK_REQUEST.

    Regards,
    Ryan

  • chip cc2530, z-stack 3.0.2,  iar 8051 v 10.30.1, i don't have a sniffer setup. I didn't start this development, I'm trying to implement a method to analyze the red connections as we are having a lot of problems with disconnections, probably because of bad rssi. I create a device using mobile network and programmed commands to get the tables and rssi from devices in the network, so we can analyse this before sending technicians to the place.

    the documentation i read are:  Z-Stack 3.0 Developer’s Guide and Z-Stack 3.0 Sample Application User’s Guide.

    coordinator is taken from: _NIB.nwkCoordAddress, neighbours are taken from: neighborTable[i].neighborAddress ; and associated are taken from AssociatedDevList[i].shortAddr.

    Does coordinator and routes are saved in static memory or they are in volatile memory? 

    I think i misunderstood something? i thought that when a device appears in the neighbours and associated tables, the communication is direct, it doesn't go through coordinators. or i am wrong? is there a way to make the comunication directly?

    I will try this  Zstackapi_DevNwkRouteReq() . And comment when i get results. Is there a way to access route table? 

  • Routes tables are lost during power resets and can be accessed using functions listed in rtg.h such as RTG_GetRtgSrcEntry.  Neighbors act on a "best route" policy and ZR2 will route through ZR1 to deliver a message to the other neighbor (ZC) if it believes that to be the optimal route or has not updated its routing tables.  You can manually trigger route maintenance (RTG_RouteMaintanence, Zstackapi_DevNwkCheckRouteReq()), reduce your neighbor table size to one, broadcast the message, or use a ZED instead since it has to report to only one parent.  There is no way to force a joining device to unicast directly to another node in the network.

    Regards,
    Ryan