Is ZigBit with static addressing requires coordinator?

Go To Last Post
10 posts / 0 new
Author
Message
#1
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

I would like to build network which can work without connection to coordinator.
(for example some router in the path to coordinator is missing)
Is it possible to do this with static short network addresses ?

Last Edited: Fri. Oct 16, 2015 - 02:04 PM
  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Leightweight Mesh is probably what you are looking for.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

No, even with static addressing (which is not a standard feature) you still need a parent to officially assign this static address.

And since you are braking compatibility with ZigBee anyway, uracolix is right, have a look at Lightweight Mesh.

NOTE: I no longer actively read this forum. Please ask your question on www.eevblog.com/forum if you want my answer.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks for your answers.

I started development on the ZigBee - but I realized that this is not a best solution for my project:
My network should be available to work if some of devices are offline.

So then I switched to LwMesh - which is the best choice for me.

Only thing which is a missing in LwMesh is functionality of store message in parent devices when EndNode is sleeping.

Do you know any example implementation for this feature ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

There is no sample implementation, but it is planned for the future.

Depending on how your network is structured there may be different solutions. There is no "parents" and "children" in LwMesh, so you will have to implement them. But if your network is like WSNDemo, where one device receives and sends data to other devices, it might be easier to hold data on the coordinator, and when device reports its data (you know it is awake), led it know that there is data available and it should not go to sleep. Use NWK_SetAckControl() to send this information.

I'm sure there are other options, but I'll need to know more about your application.

NOTE: I no longer actively read this forum. Please ask your question on www.eevblog.com/forum if you want my answer.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Generally I need to be independent from the coordinator availability in the network.
(I am creating some distributed system which has business work distributed over all devices - to be protected when some of devices are missed)

My current plan is:

1) End device chose his parent based on the strongest signal router availability (or stored parent in the settings)
2) ED send command to router: by my parent
3) Router for every received message (if it is addressed to his child) stores it in the internal child table.
4) ED has always radio reception disabled
5) ED wake-ups every some defined time - and sends command to parent: do you have messages for me ? (and enables radio for some time)

If for some reason current parent is missing - ED starts to discover new parent.

Any comments ?

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

And what about communication patterns? How many devices can be sending data?

It is not a very straightforward thing to implement. Router can't intercept message to its "child" (unless stack is modified), so messages will have to be address to the parent, but include child address in the payload.

In this case it looks like new parent must notify all potential sources that it now handles data for its new child. This notification should happen as soon as device joins the network. Depending on the network scale and number of source devices, it might be tricky.

If number of sources is limited, then it might be easier if device wakes up and informs all sources that it is awake.

NOTE: I no longer actively read this forum. Please ask your question on www.eevblog.com/forum if you want my answer.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

1) Is there any legal regulations that forbids me from modify sources ?

2) I am planning to modify sources.

In my algorithm I plan to modify nwkRx.c and function:
nwkRxHandleReceivedFrame.

In the code:

#ifdef NWK_ENABLE_ROUTING
  nwkRouteFrameReceived(frame);
#endif

I plan to modify:
(pseudo code)

#ifdef NWK_ENABLE_ROUTING
  if (frame->dst-addr == my-child-addr)
  {
     store frame in child's frames list
  }
  nwkRouteFrameReceived(frame);
#endif

and then register endpoint which listen on requests from the child to resend stored frame

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Nope, as long as you use it with Atmel radio, you can do whatever you want with the code. In fact, this is what my original intent was - create a simple to understand code, that anyone can modify for their specific task.

Your pseudo code looks correct. As for endpoint, you can just add another command to already registered EP=0.

You will also need to think through how you obsolete children list, in case devices go away without warning.

NOTE: I no longer actively read this forum. Please ask your question on www.eevblog.com/forum if you want my answer.

  • 1
  • 2
  • 3
  • 4
  • 5
Total votes: 0

Thanks Alex for all answers.