Battery-life estimator
Put in what your node draws asleep and awake, and how often it reports. The defaults describe the reference node from our home page: an ESP32-C3 that joins Wi-Fi and publishes one MQTT message over TLS.
Covers temperature, ageing and cut-off voltage.
Measure it on your board with sensors attached. Dev boards often sit in the milliamps.
- Average current
- 486µA
- Battery life
- 5.6months
- Used per day
- 11.7mAh
- Spent awake
- 97%
Waking uses almost all of the charge. Report less often, batch several readings into one message, or shorten the wake: keep Wi-Fi details in RTC memory and use a static IP so joining takes less time.
If the node never woke, this battery would last 15 years. That is the ceiling your sleep current sets.
How it works
A duty-cycled node spends most of its life in two states. The average current is the charge used in one cycle divided by the length of the cycle:
charge per cycle = I_awake × t_awake + I_sleep × (T − t_awake) average current = charge per cycle ÷ T battery life = capacity × usable fraction ÷ average current
T is the reporting interval. Usable fraction is the share of the label capacity you can count on once temperature, ageing and the cut-off voltage take their part. 80% is a cautious starting point for a lithium cell.
The chart draws the same formula across intervals from 10 seconds to an hour. As reports get rarer, the curve flattens towards the dashed line: the life the battery would have if the node never woke. That ceiling is set entirely by sleep current.
What it leaves out
It uses one average for the whole wake. Radio bursts heat the cell and sag its voltage more than an average suggests.
It ignores self-discharge beyond the usable fraction, and capacity lost in the cold.
It can’t measure your board. Sleep current on development boards is often thousands of times the datasheet figure.
