<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[M5.Power.getBatteryLevel() returns 0 when using Power.lightSleep etc.]]></title><description><![CDATA[<p dir="auto">I would appreciate any thoughts on this.<br />
M5.Power.getBatteryLevel() works fine on Capsule.  But when I use power saving, such as Power.lightSleep(6000000), M5.Power.getBatteryLevel() returns 0.  Same results with .deepSleep(6000000).<br />
The Sleep works as expected, but M5.Power.getBatteryLevel() always returns zero when any "Sleep" is used.</p>
<p dir="auto">Full code I use is below:</p>
<p dir="auto">/*<br />
Using M5Capsule to gather ENVIII sensor data.  Then send via to Paper S3 via<br />
WiFi.<br />
*/<br />
#include &lt;M5Capsule.h&gt;<br />
#include &lt;esp_now.h&gt;<br />
#include &lt;WiFi.h&gt;<br />
#include &lt;M5UnitENV.h&gt;<br />
SHT3X sht3x;<br />
QMP6988 qmp;</p>
<p dir="auto">uint8_t broadcastAddress[] = {0xa0, 0x85, 0xe3, 0xef, 0xf4, 0x48};</p>
<p dir="auto">// Structure example to send data<br />
// Must match the receiver structure<br />
typedef struct struct_message {<br />
//char a[32];<br />
float Mytemp;<br />
int Myhum;<br />
int Mypres;<br />
float Myalt;<br />
int Mysendbat;</p>
<p dir="auto">//bool d;<br />
} struct_message;</p>
<p dir="auto">// Create a struct_message called myData<br />
struct_message myData;</p>
<p dir="auto">esp_now_peer_info_t peerInfo;</p>
<p dir="auto">// callback when data is sent<br />
void OnDataSent(const uint8_t *mac_addr, esp_now_send_status_t status) {<br />
Serial.print("\r\nLast Packet Send Status:\t");<br />
Serial.println(status == ESP_NOW_SEND_SUCCESS ? "Delivery Success" : "Delivery Fail");<br />
}</p>
<p dir="auto">void setup() {</p>
<p dir="auto">auto cfg = M5.config();<br />
M5Capsule.begin(cfg);<br />
M5.Power.begin();<br />
Serial.begin(115200);</p>
<p dir="auto">//Config the ENVIII Sensor<br />
if (!qmp.begin(&amp;Wire, QMP6988_SLAVE_ADDRESS_L, 13, 15, 400000U)) {<br />
Serial.println("Couldn't find QMP6988");<br />
while (1) delay(1);<br />
}</p>
<pre><code>if (!sht3x.begin(&amp;Wire, SHT3X_I2C_ADDR, 13, 15, 400000U)) {
    Serial.println("Couldn't find SHT3X");
    while (1) delay(1);
}
</code></pre>
<p dir="auto">// Set device as a Wi-Fi Station<br />
WiFi.mode(WIFI_STA);</p>
<p dir="auto">// Init ESP-NOW<br />
if (esp_now_init() != ESP_OK) {<br />
Serial.println("Error initializing ESP-NOW");<br />
return;<br />
}</p>
<p dir="auto">// Once ESPNow is successfully Init, we will register for Send CB to<br />
// get the status of Trasnmitted packet<br />
esp_now_register_send_cb(OnDataSent);</p>
<p dir="auto">// Register peer<br />
memcpy(peerInfo.peer_addr, broadcastAddress, 6);<br />
peerInfo.channel = 0;<br />
peerInfo.encrypt = false;</p>
<p dir="auto">// Add peer<br />
if (esp_now_add_peer(&amp;peerInfo) != ESP_OK){<br />
Serial.println("Failed to add peer");<br />
return;<br />
}<br />
}</p>
<p dir="auto">void loop() {<br />
// Set values to send<br />
//============================================<br />
if (sht3x.update()) {<br />
Serial.println("-----SHT3X-----");<br />
Serial.print("Temperature: ");<br />
Serial.print(sht3x.cTemp);<br />
Serial.println(" degrees C");<br />
Serial.print("Humidity: ");<br />
Serial.print(sht3x.humidity);<br />
Serial.println("% rH");<br />
Serial.println("-------------\r\n");<br />
}</p>
<pre><code>if (qmp.update()) {
    Serial.println("-----QMP6988-----");
    Serial.print(F("Temperature: "));
    Serial.print(((qmp.cTemp *(9/5)) + 32));
    Serial.println(" *C");
    Serial.print(F("Pressure: "));
    Serial.print(qmp.pressure);
    Serial.println(" Pa");
    Serial.print(F("Approx altitude: "));
    Serial.print(qmp.altitude);
    Serial.println(" m");
    Serial.println("-------------\r\n");
}
</code></pre>
<p dir="auto">myData.Mysendbat = M5.Power.getBatteryLevel();<br />
myData.Mytemp = sht3x.fTemp;<br />
myData.Myhum  = sht3x.humidity;<br />
myData.Mypres = qmp.pressure;<br />
myData.Myalt  = qmp.altitude;</p>
<p dir="auto">// Send message via ESP-NOW<br />
esp_err_t result = esp_now_send(broadcastAddress, (uint8_t *) &amp;myData, sizeof(myData));</p>
<p dir="auto">if (result == ESP_OK) {<br />
Serial.println("Sent with success");<br />
Serial.println(myData.Mytemp);<br />
Serial.println(myData.Mysendbat);<br />
}<br />
else {<br />
Serial.println("Error sending the data");<br />
}</p>
<p dir="auto">M5.Power.lightSleep(10000000);<br />
}</p>
]]></description><link>https://community.m5stack.com/topic/7164/m5-power-getbatterylevel-returns-0-when-using-power-lightsleep-etc</link><generator>RSS for Node</generator><lastBuildDate>Sun, 17 May 2026 10:54:18 GMT</lastBuildDate><atom:link href="https://community.m5stack.com/topic/7164.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Jan 2025 17:24:29 GMT</pubDate><ttl>60</ttl></channel></rss>