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.

CC2530 based zigbee addressing scheme and network architecture

Other Parts Discussed in Thread: Z-STACK

We are working on an  application which will have about  70 nodes connected in linear chain. The network should be formed in such a way that each node should be able to talk to its neighbors directly. One approach can be by assigning address sequentially to the nodes. But we are unable to find zstack api for assigning address. Kindly suggest a suitable approach for our application. Thanks.

  • You cannot assign address to device in Z-Stack. There is no API for this.
  • ZigBee Pro uses stochastic addressing scheme, so there's no way to control that from the application.
    Anyway, let's go back to your use case.
    You want to build a 70-nodes linear topology (where each node only talks to its direct child node which in immediate radio distance), and nodes don't hear their grand-children (so each node basically hears and talks to his parent and his child)?
    One thing you can do is the following. You start by opening the network on the first node, then the first device joins.
    To open the network on the local device, you can use NLME_PermitJoiningRequest() API.

    You can register your application to receive a device_annce ZDP message. Once the device joins the network, then in your application while parsing the device_annce message (ZDO_ParseDeviceAnnce), you can , and check whether that is coming from your child through the API AssocIsChild(). Then you record the NWK address of that device, which will be your child.
    Once this is done, you can have then this device opening the network on his child sending a ZDP_MgmtPermitJoinReq(), and then have the grand-child joining the network through its child. And so forth. The NWK address of the parent can be retrieved using the API NLME_GetCoordShortAddr()
    This way, the network is built linearly (ie every node has only one single child) and every node has the address of his child, and of his parent so it can communicate upward and downward using directly NWK addressing scheme, without the need of discovering the route (procedure which anyway is supported in ZigBee).

    Do you want to build this topology because you need a very high range extension? If so, why would you restrict the communication to only a child and a parent. i am saying all of this because as I mentioned ZigBee incorporates a routing discovery procedure so if you want to communication between two nodes you don't need to enforce a specific topology between nodes. Just need to know the actual node address and ZigBee protocol will take care of finding out the route to its destination, without any special action on the application side.
    Thanks,
    TheDarkSide
  • Keep in mind that for long linear networks like this you may need to tweak the Z-Stack's default values for maximum hops. Otherwise the furthest nodes won't be able to join the network.

    We've seen these linear networks in street lighting control systems: is this project for street lighting too?