Add charging status

Signed-off-by: Jeroen Oudshoorn <oudshoorn.jeroen@gmail.com>
This commit is contained in:
Jeroen Oudshoorn
2024-12-21 09:36:37 +01:00
parent f81a8a7b75
commit b30daddb80

View File

@ -34,14 +34,15 @@ class PiSugar(plugins.Plugin):
self.ready = False self.ready = False
self.lasttemp = 69 self.lasttemp = 69
self.drot = 0 # display rotation self.drot = 0 # display rotation index
self.nextDChg = 0 # last time display changed self.nextDChg = 0 # last time display changed
self.rotation_enabled = True # default rotation enabled self.rotation_enabled = True # default: rotation enabled
self.default_display = "voltage" # default display option self.default_display = "voltage" # default display option
def safe_get(self, func, default=None): def safe_get(self, func, default=None):
""" """
Helper function to safely call PiSugar getters. When exception detected call default Helper function to safely call PiSugar getters. When an exception is detected,
return 'default' and log at debug level.
""" """
if self.ps is None: if self.ps is None:
return default return default
@ -218,6 +219,7 @@ class PiSugar(plugins.Plugin):
return render_template_string(ret), 404 return render_template_string(ret), 404
def on_ui_setup(self, ui): def on_ui_setup(self, ui):
# Add the "bat" UI element
ui.add_element( ui.add_element(
"bat", "bat",
LabeledValue( LabeledValue(
@ -235,6 +237,10 @@ class PiSugar(plugins.Plugin):
ui.remove_element("bat") ui.remove_element("bat")
def on_ui_update(self, ui): def on_ui_update(self, ui):
# Make sure "bat" is in the UI state (guard to prevent KeyError)
if 'bat' not in ui._state._state:
return
capacity = self.safe_get(self.ps.get_battery_level, default=0) capacity = self.safe_get(self.ps.get_battery_level, default=0)
voltage = self.safe_get(self.ps.get_battery_voltage, default=0.00) voltage = self.safe_get(self.ps.get_battery_voltage, default=0.00)
temp = self.safe_get(self.ps.get_temperature, default=0) temp = self.safe_get(self.ps.get_temperature, default=0)
@ -244,10 +250,10 @@ class PiSugar(plugins.Plugin):
if battery_plugged: if battery_plugged:
# If plugged in, display "CHG" # If plugged in, display "CHG"
ui._state._state['bat'].label = "CHG" ui._state._state['bat'].label = "CHG: "
else: else:
# Otherwise, keep it as "BAT" # Otherwise, keep it as "BAT"
ui._state._state['bat'].label = "BAT" ui._state._state['bat'].label = "BAT: "
# Handle rotation or default display logic # Handle rotation or default display logic
if self.rotation_enabled: if self.rotation_enabled: