From 21648af573e2f816b41c57269283ab9f7af73bbc Mon Sep 17 00:00:00 2001 From: Chris Young Date: Wed, 14 May 2025 04:25:42 +0100 Subject: [PATCH] Add better RPi power status reporting (#221) --- src/rpi-cpu2mqtt.py | 30 +++++++++++++++++++++++++----- 1 file changed, 25 insertions(+), 5 deletions(-) diff --git a/src/rpi-cpu2mqtt.py b/src/rpi-cpu2mqtt.py index b8b49ea..d530cf4 100644 --- a/src/rpi-cpu2mqtt.py +++ b/src/rpi-cpu2mqtt.py @@ -106,11 +106,31 @@ def check_rpi_power_status(): full_cmd = "vcgencmd get_throttled | cut -d= -f2" throttled = subprocess.Popen(full_cmd, shell=True, stdout=subprocess.PIPE).communicate()[0] throttled = throttled.decode('utf-8').strip() - - if throttled == "0x0": - return "OK" - else: - return "KO" + throttled_val = int(throttled, 16) + + if throttled_val & 1<<0: + return "Under-voltage" + if throttled_val & 1<<3: + return "Soft temperature limit" + if throttled_val & 1<<1: + return "ARM frequency capped" + if throttled_val & 1<<2: + return "Throttled" + + # These are "previous" statuses here for completeness + # Home Assistant has the history so do not report them + # + #if throttled_val & 1<<16: + # return "Previous under-voltage" + #if throttled_val & 1<<17: + # return "Previous ARM frequency cap" + #if throttled_val & 1<<18: + # return "Previous throttling" + #if throttled_val & 1<<19: + # return "Previous soft temperature limit" + + return "OK" + except Exception as e: return "Error: " + str(e)