From df21b8dfdb4c1aa980e20c69c717fc088bdeb603 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 17 Aug 2024 13:41:39 +0300 Subject: [PATCH] add more ups alert events --- misc/checks.py | 115 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 79 insertions(+), 36 deletions(-) diff --git a/misc/checks.py b/misc/checks.py index 70a9d37..d642cd4 100644 --- a/misc/checks.py +++ b/misc/checks.py @@ -100,53 +100,96 @@ async def vuln_check() -> list[alerts.Alert]: async def ups_check() -> list[alerts.Alert]: sensor = await sensors.Sensors.get_ups() - if not sensor: return + if not sensor: + return alert_list = [] if IS_TESTING or sensor.battery_charge_percentage < sensor.battery_critical_percentage: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"Battery is under {sensor.battery_critical_percentage}%\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)} remaining.", - severity=alerts.Severity.CRITICAL - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"Battery is under {sensor.battery_critical_percentage}%\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)} remaining.", + severity=alerts.Severity.CRITICAL, + ) + ) elif IS_TESTING or sensor.battery_charge_percentage < sensor.battery_warning_percentage: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"Battery is under {sensor.battery_warning_percentage}%\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)} remaining.", - severity=alerts.Severity.WARNING - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"Battery is under {sensor.battery_warning_percentage}%\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)} remaining.", + severity=alerts.Severity.WARNING, + ) + ) for status in sensor.ups_status: if IS_TESTING or status == UPSStatus.BATTERY_REPLACE: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"UPS battery needs to be replaced ASAP!", - severity=alerts.Severity.CRITICAL - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"UPS battery needs to be replaced ASAP!", + severity=alerts.Severity.CRITICAL, + ) + ) elif IS_TESTING or status == UPSStatus.UPS_OVERLOAD: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"UPS is overloaded!", - severity=alerts.Severity.CRITICAL - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, message=f"UPS is overloaded!", severity=alerts.Severity.CRITICAL + ) + ) elif IS_TESTING or status == UPSStatus.UPS_BYPASS: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"BYPASS MODE: Battery and connected devices are not protected from power outage!", - severity=alerts.Severity.WARNING - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"BYPASS MODE: Battery and connected devices are not protected from power outage!", + severity=alerts.Severity.WARNING, + ) + ) elif IS_TESTING or status == UPSStatus.UPS_CALIBRATION: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"UPS is currently performing runtime calibration.", - severity=alerts.Severity.INFO - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"UPS is currently performing runtime calibration.", + severity=alerts.Severity.INFO, + ) + ) elif IS_TESTING or status == UPSStatus.ON_BATTERY: - alert_list.append(alerts.Alert( - alert_type=alerts.AlertType.UPS, - message=f"UPS is on battery.\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)}) remaining.", - severity=alerts.Severity.INFO - )) + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"UPS is on battery.\n{sensor.battery_charge_percentage}% ({timedelta(seconds=sensor.battery_runtime)}) remaining.", + severity=alerts.Severity.INFO, + ) + ) + elif IS_TESTING or status == UPSStatus.UPS_OFFLINE: + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, message=f"UPS seems to be offline.", severity=alerts.Severity.INFO + ) + ) + elif IS_TESTING or status == UPSStatus.UPS_TRIM: + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"Overvoltage detected: trimming voltage to nominal.", + severity=alerts.Severity.INFO, + ) + ) + elif IS_TESTING or status == UPSStatus.UPS_BOOST: + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"Undervoltage detected: boosting voltage to nominal.", + severity=alerts.Severity.INFO, + ) + ) + elif IS_TESTING or status == UPSStatus.UPS_FSD: + alert_list.append( + alerts.Alert( + alert_type=alerts.AlertType.UPS, + message=f"Shutdown imminent!", + severity=alerts.Severity.CRITICAL, + ) + ) return alert_list