add more ups alert events

This commit is contained in:
Alex 2024-08-17 13:41:39 +03:00
parent 983caffc10
commit df21b8dfdb

View file

@ -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