From 2e6278dd0b63f4a84a98d36d88e12e13f241f054 Mon Sep 17 00:00:00 2001 From: peak-load <34206325+peak-load@users.noreply.github.com> Date: Mon, 23 Mar 2026 14:58:18 +0100 Subject: [PATCH] Update index.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The current Android battery temperature parsing looks a bit too broad and can pick up unrelated numeric values from `dumpsys battery` output. Today it uses: ```js dumpsys battery | grep temperature | grep -Eo '[0-9]{1,3}' ``` That works only if the output contains a single relevant temperature match. On at least one real device I tested (Samsung A16 / Android 16), dumpsys battery returns both the expected battery field and additional log-style lines that also contain temperature, for example: ``` temperature: 242 03-23 14:19:54.299 Sending ACTION_BATTERY_CHANGED: ... temperature: 293, ... 03-23 14:27:46.675 Sending ACTION_BATTERY_CHANGED: ... temperature: 281, ... ``` With the current implementation, those extra matches can make the parser extract multiple unrelated numbers instead of the actual battery temperature field, which can then lead to invalid numeric values and downstream NaN warnings. I’d suggest narrowing the parsing to the real temperature: field only, for example: ```js async getTemperature() { const output = await this._runCommandAndGet( `dumpsys battery | awk '/^ *temperature:/ { print $2; exit }'` ); const temperature = Number(output.trim()); return Number.isFinite(temperature) ? temperature / 10 : undefined; }``` Why this looks safer: • matches only the actual battery temperature line • avoids unrelated numbers from additional output • preserves the existing / 10 conversion, which is correct for Android battery temperature values • returns undefined instead of propagating invalid values This should make Android battery temperature collection more robust across vendor-specific dumpsys battery output formats. --- lib/android/index.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/android/index.js b/lib/android/index.js index 0f0f4492a..908fac224 100644 --- a/lib/android/index.js +++ b/lib/android/index.js @@ -154,10 +154,11 @@ export class Android { async getTemperature() { const temporary = Number( await this._runCommandAndGet( - `dumpsys battery | grep temperature | grep -Eo '[0-9]{1,3}'` + `dumpsys battery | awk '/^ *temperature:/ { print $2; exit }'` ) ); - return temporary / 10; + const temperature = Number(output.trim()); + return Number.isFinite(temperature) ? temperature / 10 : undefined; } async getMeta() {