I’ve a Zigbee network at home, the coordinator is a RaspBee II from deCONZ. I plan to develop my own end modules (in principle, this is just for fun) to do things I miss and are not available in the market. I’ve knowledge in programming, hardware and software so I feel comfortable reading specifications and all this stuff.
I recently purchased a Digi XBee Zigbee mesh kit that includes 3 devices and I started experimenting with XCTU, reading about micropython and understanding how the pieces work. At this point I think I have an understanding of what I really have.
I’ve been able to configure one device to join the network, It is visible as a “Range Extender 27” (I don’t know where that name comes from and I don’t know why it is not using the name I put using ATNI command…) The device operates as a router and it looks like it implements only endpoints E6 and E8 (proprietary?) and does not implement endpoint 01 so I’ve to implement it on my own.
This is the point where I search for sample code, to see if anyone has implemented anything with this hardware regarding home automation, but I can’t find anything usable to base my software on it. I’m afraid I have to develop the entire thing from scratch and this means a lot of things to be done!
Do I really need to put the XBEE in AP1? Note that micropython REPL is AP4!
That setting is stated here:
I can set AO1 or AO3 and implement ZDO 1 my way, but are there any example about how to do it with code? a simple example for cluster 0 (Basic) would be great!
Can it be implemented internally in microphython? I only see xbee.transmit() and xbee.receive() available but there is no xbee.receive_callback() method available so do I need to write all this in a single loop? no way to operate based on events?
It would depend on if you have enough code space or not to do what you want.
Digi does not offer sample code for this so you would be on your own to figure it out. What you can do is put the receive function into a loop or on a conditional loop.
Thank you for your response.
It might be true there is no space for a full implementation of the Light Link. But it would be nice to see, at least, an example of something easy to understand and modify.
I may take months to do something trivial just because of lack of examples and dispersion of the required documentation
Section 2.1.3 of the ZigBee specification states how the ZDO (ZigBee Device Objects) is responsible of provide the public interfaces implemented in the Application Framework Layer. We (developers) need a mechanism to, somehow, inject information to the ZDO we are implementing. An example of how to do this will be GREAT!
After a lot of research, I’m going to answer my own question just in case any one else reaches this point too.
According with the specifications here:
The DIGI XBee hardware is based on Silicon Labs EFR32MG SoC processor.
That processor is capable of implementing Zigbee Link Light and whatever other Zigbee Application profiles. Silicon Labs also has a development platform and examples that implement such specifications as examples. They are implemented in C and the development kit for that costs USD 500! I tried to install their development environment but the chip is not recognised and, what is more important, the IDE requires an activation key that we (DIGI users) don’t have.
This means for me. It is very unlikely it is NOT be possible to implement any other Zigbee application profile in XBee which is very frustrating for me because I will have to pay USD 500 for something I’m doing just for fun. I want to create my own devices for my home automation system just because I enjoy developing and I have the required knowledge for doing it but the cost for me is just too much.
What could happen:
DIGI could provide alternative firmware(s) for standard common HA generic devices such as a light, an on/off switch, … where we could just provide the required callbacks (in python) to handle the pins. I really would love DIGI do this, otherwise, my development kit is completely useless.
Someone could publish an example application to demonstrate I’m wrong. DIGI could do this too! I really hope this happens and can I can mark other response as the good answer. At this point, and until any other response pops up, the only one possible answer is that today this is NOT possible.