What to do if there is no ZigBee Coordinator in a single hardware solution?


my name is Simon and I am developing a new wireless IoT-product for a company. The current prototype is using XBee ZigBee for communications and I am currently trying to figure out how to avoid having to run a dedicated ZigBee-Coordinator device. I do not want to develop a second hardware just to let it act as the main ZigBee Coordinator.

So the project is about developing a single product which will be installed multiple times inside a building, factory or home and which can communicate over ZigBee. So Meshing is very important. But there is no chance to add a second hardware to act as Coordinator or to use any third party hardware.

So I read about the Digi S2C modules and stumbled over the fact that this module has a larger flash and therefor incorporates all three ZigBee-Firmwares (End-Device, Router, Coordinator) into one single file. With using serial-commands you can then change the device-mode from coordinator to router or end device.

By thinking about it I came up to the following idea how to avoid having a second hardware just acting as a coordinator.

By powering up the first hardware unit the ZigBee Module runs as a Router / End-Device and is looking for a coordinator

If there is no coordinator the module resets itself and changes its device-mode to become the coordinator

Every following unit does the same and will connect to the first unit which acts as the coordinator
Using this concept I could stick with my single hardware and let it automatically choose between running as an End-Device, Router or Coordinator.

Questions are:

I know that you can put custom code onto the ZigBee-Modules controller. Is this controller able to reset itself and restart in a different operation-mode? Like leaving a flag before restarting or so?

Or do I need a second controller that is taking care of such a process?

Am I missing some detail in the ZigBee-Stack that has already implemented such a concept?

No, this concept does not exist in the Zigbee standard. In the Zigbee standard you must determine who the Coordinator is going to be in advanced.

Now in your idea, an external processor could poll the radios AI parameter to see if it has associated or not. If it has not associated, you could then set the CE parameter enabling the Coordinator function. Then simply poll the AI parameter again till the module has successfully stated (AI0x00). Your other nodes would then be allowed to Join the New Coordinator thus forming a network.

1 Like