A bit of an odd setup I might have here. Looking for recommendation which protocol to go with.
Zigbee, Digimesh or 802. Using latest Xbee3 RF 2.4 Ghz modules, for End device, router and Co-Ordinator.
End Device:
Sleeping all the time, configured to wake on pin wake (button). Tricky part is, it is installed in a car so most of the time it would be outside of the range of the network. But when I’ll wake it, it would be within the range of a network.
Router:
An intermediate bridging device is required, since end device might be too far from the coordinator.
It should be sleeping (running on batteries), waking up just to check data from End Device.
Co-Ordinator:
Always powered up, connected to Internet via esp8266. That part is straight forward
End device is running micro python, programmed using Pycharm. Not sure how to configure router.
Challenge is when router (parent) wakes up, it would not be able to find child as it might not be in network range. Then it goes back to sleep. Thus cyclic sleeps are required for router.
When end device wakes up, I was thinking to make it keep sending data multiple times just to make sure the data is delivered within router wake cycle period. Something along those lines.
Need help which protocol would be ideal in this particular situation and a generic settings on router.
The routers and Coordinator function is an Always On device. It is not possible to have a Router be a sleeping device but wake up on a Pin sleep function. For the routers sleeping, the closest option would be Digi Mesh with Synchronized sleep functions. Even in that kind of application, I do not see your end device (Car) being able to wake without loosing the timing of the network.
If the router can be always on, then I can see your Pin sleep option working under Digi Mesh.
802.15.4 does not offer a Router option. It only offers a Coordinator or End device option. While it will do what you want, it would have to be in range for communications to work.
I used to use sync sleep SM8 with Digimesh 300D in my project, but ultimately found it convoluted. I got better results using uPython sleep SM6. If you use SM6 in your router, sleeping periodically for say 2000ms and 100ms awake (20:1), and pin wake on your end device. then when your end device wakes it transmits every 100ms until it receives a response, then you will have a maximum lag of up to two seconds to initiate contact.
The router could then stay awake until commanded back to cyclic sleep from the end device, or also after a period of no comm’s.
Beware that the latest firmware for Digimesh has a bug where TX/RX won’t work properly in AP4 (uPython), after sleep. I’m still using 300D, waiting for new firmware with fix.
Beware that sleeping can cause latest firmware to lock up module entirely, i.e. Power On Reset necessary to reset. Also, sleeping using 300D can cause MAC level RX to lock-up.
I have been waiting an eternity for fix!