diff --git a/power.py b/power.py index b763468..0394f2a 100644 --- a/power.py +++ b/power.py @@ -29,7 +29,9 @@ def setup_logging(): logger.addHandler(handler) return logger -def monitor_ups(logger): +logger = setup_logging() + +def monitor_ups(): client = PyNUTClient() try: ups_status = client.list_vars('ups') @@ -41,7 +43,7 @@ def monitor_ups(logger): logger.error(f"Error communicating with NUT: {e}") return None -def send_email(subject, body, recipient_email, gmail_user, gmail_password, logger): +def send_email(subject, body): msg = MIMEText(body) msg['Subject'] = subject msg['From'] = gmail_user @@ -56,11 +58,10 @@ def send_email(subject, body, recipient_email, gmail_user, gmail_password, logge logger.info(f"Failed to send email: {e}") def main(): - logger = setup_logging() logger.info("Starting UPS monitoring service.") prev_status = None while True: - ups_data = monitor_ups(logger) + ups_data = monitor_ups() if ups_data: status = ups_data['status'] battery = ups_data['battery_charge'] @@ -69,38 +70,27 @@ def main(): logger.warning(f"Outage detected! Power On Battery. {battery}% charge remaining.") send_email( f"{ups_id}: Power Outage Detected", - f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.", - recipient_email, - gmail_user, - gmail_password, - logger - ) + f"The {ups_id} UPS is running on battery power! {battery}% charge remaining.") elif status == "OL": logger.info(f"Power On Line. {battery}% charge remaining.") send_email( f"{ups_id}: Power On Line", - f"{ups_id} UPS power has been restored! {battery}% charge remaining.", - recipient_email, - gmail_user, - gmail_password, - logger - ) + f"{ups_id} UPS power has been restored! {battery}% charge remaining.") else: logger.info(f"UPS status changed to: {status}") prev_status = status - if status == "OB DISCHRG" and battery < 50: + elif status == "OB DISCHRG" and battery < 50: logger.warning(f"Battery level low: {battery}% charge remaining.") send_email( f"{ups_id} battery low.", - f"{ups_id} battery level low: {battery}% charge remaining.", - recipient_email, - gmail_user, - gmail_password, - logger - ) + f"{ups_id} battery level low: {battery}% charge remaining.") + elif status == "OB DISCHRG" and battery < 35: + logger.warning(f"Battery level critical: {battery}% charge remaining.") + send_email( + f"{ups_id} battery critical!!", + f"{ups_id} battery level critial: {battery}% charge remaining.") time.sleep(30) time.sleep(5) if __name__ == "__main__": main() - diff --git a/pve_test.py b/pve_test.py index a2fb61e..a7ac817 100644 --- a/pve_test.py +++ b/pve_test.py @@ -23,4 +23,4 @@ for node in all_nodes: node_status = proxmox.nodes(name).status.get() print(f"Node {name} Status: {node_status}") -# shutdown_pve() +shutdown_pve()