-
Notifications
You must be signed in to change notification settings - Fork 41
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement esp_zb_stop()
call so we can stop the Zigbee radio in code. (TZ-1530)
#561
Comments
esp_zb_stop()
call so we can stop the Zigbee radio in code.esp_zb_stop()
call so we can stop the Zigbee radio in code. (TZ-1530)
I think the Zigbee sleepy end device could meet your requirement, during the idle phase, the raido is stopped and the SoC is under light sleep mode, this is handled by the Zigbee SDK, so don't need to call Please refer to the light_example example. |
In the short term, for sure that will help. IMHO, in the long term, having |
I'v taken some time to better document the use case Background I am developing a Zigbee-based gas consumption meter that reports usage through the seMetering cluster. According to the Zigbee specification, the device can report its consumption data whenever the internal counter increases by a predefined value (e.g., every 10 units). The Issue The device remains in deep sleep most of the time to save battery. However, when the counter increases by 10 units, the Zigbee radio must be turned on for at least 30 seconds to transmit the data and receive any acknowledgments or configuration updates. The problem arises because the mechanical gas meter’s counting wheel rotates approximately once every 10 seconds, meaning the device wakes up frequently but only requires active radio communication every tenth increment. The process follows this sequence: Proposed Solution To address this, I propose implementing an This feature would significantly benefit low-power battery-operated devices that do not need continuous Zigbee connectivity but must wake up periodically to report data. Conclusion Implementing |
@IgnacioHR Could you please check if the deep_sleep example could meet your requirement? The application can call esp_deep_sleep_start() whenever it wants to stop the zigbee connection, and put the device to deep sleep mode, then a RTC timer can be used to wake up the device and do the reporting periodically. Please note that the device needs to go through a rejoin process after the deep sleep, while the light_sleep doesn't.
|
Hi @chshu Yes sir, this is the workaround we are using, the source code is published here: https://github.com/IgnacioHR/ZigbeeGasMeter
We can force the device to operate in a manner that the counter value will be transmitted every 10 rotations so it gives 300 seconds and the device can enter deep sleep and remain active 10% of the time but all this are just workarounds until we have the opportunity to better control the Zigbee radio. |
Is your feature request related to a problem?
As stated on issue #558 SDK v1.6.2 contains no mechanism to stop the zigbee radio.
This is line with the Global objetives of saving energy.
Describe the solution you'd like.
I would like to have a core function to stop the zigbee device as it is for other devices such as WIFI, Bluetooth, etc.
Describe alternatives you've considered.
The alternative is to send the device to deep sleep and prepare it to come back from deep sleep saving the device state so it can be recovered at the same point.
Additional context.
In the context of End Devices that implement the
seMetering
cluster and are battery powered, the designer has to made decisions about how to save as much energy as possible.As you can see in the screen capture:
The ESP32C6 device consumes 22.2mA while running with the Zigbee radio turned OFF
The ESP32C6 device consumes 8.5uA while in Deep Sleep mode.
The ESP32C6 device consumes 78.5mA while the Zigbee Radio is turned ON
It is desired to have the capacity to turn the Zigbee radio OFF so we can save some power when the device is running but the Zigbee link is not providing any added value.
This is line with the Global objetives of saving energy.
The text was updated successfully, but these errors were encountered: