add temp monitoring

This commit is contained in:
Alex Tau 2025-05-02 15:25:27 +03:00
parent 19ee6f487b
commit 758438382d
13 changed files with 272 additions and 25 deletions

View file

@ -1,12 +1,16 @@
import argparse
import asyncio
import datetime
import logging
import signal
import time
from . import checks
from .alerting import alerts
from .checks.temp.sensors import print_readings
from .config import load_config
from .core import cvars
from .core.config import load_config
from .core.checkers import interval_checker
stopping = False
@ -27,11 +31,21 @@ async def async_main():
prog="lego-monitoring",
description="Lego-monitoring service",
)
parser.add_argument("-c", "--config", required=True)
parser.add_argument("-c", "--config", help="config file")
parser.add_argument("--print-temp", help="print temp sensor readings and exit", action="store_true")
args = parser.parse_args()
config_path = parser.parse_args().config
config = load_config(config_path)
cvars.config.set(config)
if args.config:
config_path = parser.parse_args().config
config = load_config(config_path)
cvars.config.set(config)
if args.print_temp:
print_readings()
raise SystemExit
if not args.config:
raise RuntimeError("--config must be specified in standard operating mode")
tg_client = await alerts.get_client()
cvars.tg_client.set(tg_client)
@ -41,10 +55,11 @@ async def async_main():
alerts.send_start_alert(),
],
"stop": [], # this is checked later
"temp": [interval_checker(checks.temp_check, datetime.timedelta(minutes=5))],
}
checkers = []
for enabled_set in config.enabled_checker_sets:
for enabled_set in config.enabled_check_sets:
for checker in checker_sets[enabled_set]:
checkers.append(checker)
@ -57,7 +72,7 @@ async def async_main():
checker_tasks.add(task)
while True:
if stopping:
if "stop" in config.enabled_checker_sets:
if "stop" in config.enabled_check_sets:
await alerts.send_stop_alert()
await tg_client.disconnect()
raise SystemExit