diff --git a/power/van-battery b/power/van-battery index 289b785..b6d0944 100644 --- a/power/van-battery +++ b/power/van-battery @@ -177,15 +177,26 @@ def main(): on_batt = read_on_battery(cfg) cap = read_capacity(cfg) + capstr = f"{cap}%" if cap is not None else "unknown charge" + + # Mains <-> battery transition alerts. Skip the very first sample (prev is None) + # so a restart while already on battery doesn't fire a spurious "on battery". + if on_batt is not None and prev_on_batt is not None and on_batt != prev_on_batt: + if on_batt: + log(f"mains lost — running on battery at {capstr}", "warn") + pushover(cfg, f"⚡ {HOST}: on battery", + f"Mains power lost — now running on battery ({capstr}). " + f"Low alerts at {cfg['warn_levels']}%, auto-shutdown at {shutdown_level}%.") + else: + log(f"mains restored at {capstr} — alerts re-armed") + pushover(cfg, f"🔌 {HOST}: back on mains", + f"Mains power restored ({capstr}). Battery alert sequence re-armed.") + if on_batt is False: # On mains: re-arm the whole sequence for the next discharge episode. - if prev_on_batt: - log("mains restored — alerts re-armed") last_alerted = None shutdown_issued = False elif on_batt is True and cap is not None: - if prev_on_batt is False: - log(f"mains lost — running on battery at {cap}%", "warn") sev = severity(cap, levels) if sev is not None and (last_alerted is None or sev < last_alerted): last_alerted = sev