From ac931feb47884e6b716f2077a6c738cf8b4764dd Mon Sep 17 00:00:00 2001 From: Mihit Date: Fri, 17 Apr 2026 02:21:35 +0530 Subject: [PATCH] added keyboard interupt handling --- main.py | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/main.py b/main.py index dbb10ea..00386c1 100644 --- a/main.py +++ b/main.py @@ -28,23 +28,27 @@ ntfy_token = os.environ['NTFY_Token'] device_name = os.environ['device_name'] shutdown_timer = int(os.environ['shutdown_timer']) -with serial.Serial(device_name, 115200, timeout=1) as ser: - inverter_offline_counter = 0 - while True: - if ser.readline().decode().strip() == "0": - logger.debug("Inverter Online") - inverter_offline_counter = 0 - elif inverter_offline_counter >= shutdown_timer: - break - else: - inverter_offline_counter += 1 - logger.info(f"Running on UPS reserve, offline for {inverter_offline_counter}s") - logger.info(f"Inverter offline for {shutdown_timer} seconds") - requests.post("https://ntfy.fieryeagle.org/Internet-Alerts", - data="Inverter offline, shutting down".encode(encoding='utf-8'), - headers={ - "Title": "Hydrogen running on reserve power", - "Authorization": f"Bearer {ntfy_token}" - } - ) - os.system("shutdown now") \ No newline at end of file +try: + with serial.Serial(device_name, 115200, timeout=1) as ser: + inverter_offline_counter = 0 + while True: + if ser.readline().decode().strip() == "0": + logger.debug("Inverter Online") + inverter_offline_counter = 0 + elif inverter_offline_counter >= shutdown_timer: + break + else: + inverter_offline_counter += 1 + logger.info(f"Running on UPS reserve, offline for {inverter_offline_counter}s") + logger.info(f"Inverter offline for {shutdown_timer} seconds") + requests.post("https://ntfy.fieryeagle.org/Internet-Alerts", + data="Inverter offline, shutting down".encode(encoding='utf-8'), + headers={ + "Title": "Hydrogen running on reserve power", + "Authorization": f"Bearer {ntfy_token}" + } + ) + os.system("shutdown now") +except KeyboardInterrupt: + logger.info("Exiting gracefully") + exit() \ No newline at end of file