diff --git a/README.md b/README.md index c5e3931..7171de2 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ Dieses Python-Skript überwacht die Webseite [https://fachportal.gematik.de/ti-status](https://fachportal.gematik.de/ti-status) auf neue Störungsmeldungen und sendet diese automatisch an einen Mattermost-Webhook. ## Funktionsweise -- Die Seite wird regelmäßig (alle 5 Minuten) auf neue Meldungen geprüft. +- Die Seite wird bei jedem Aufruf auf neue Meldungen geprüft. - Neue Meldungen werden erkannt und als formatierte Nachricht an Mattermost gesendet. - Bereits gesendete Meldungen werden gespeichert, sodass sie nach einem Neustart nicht erneut verschickt werden. @@ -24,25 +24,29 @@ Das Skript kann direkt gestartet werden: python ti_status_checker.py ``` -Das Skript läuft in einer Endlosschleife und prüft alle 5 Minuten auf neue Meldungen. +Das Skript prüft einmalig auf neue Meldungen und beendet sich dann. + +### Automatisierung mit Cron (Linux) +Um das Skript alle 5 Minuten auszuführen, kann ein Cronjob eingerichtet werden: +```cron +*/5 * * * * cd /pfad/zum/projekt && /usr/bin/python3 ti_status_checker.py +``` + +### Automatisierung mit Task Scheduler (Windows) +Nutze die Aufgabenplanung, um das Skript alle 5 Minuten zu starten. ## Nutzung mit Docker 1. Docker-Image bauen: ```bash docker build -t ti-status2mattermost . ``` -2. Container starten: - ```bash - docker run -d --name ti-status2mattermost ti-status2mattermost - ``` - Die Datei `ti_status_state.json` bleibt im Container gespeichert. Um den Status dauerhaft zu sichern, kann ein Volume gemountet werden: - ```bash - docker run -d --name ti-status2mattermost -v $(pwd)/ti_status_state.json:/app/ti_status_state.json ti-status2mattermost +2. Container regelmäßig starten (z.B. mit Cron): + ```cron + */5 * * * * docker run --rm -v $(pwd)/ti_status_state.json:/app/ti_status_state.json ti-status2mattermost ``` ## Konfiguration - Die Mattermost-Webhook-URL und die Status-URL sind im Skript als Konstanten hinterlegt. -- Das Intervall kann über die Variable `CHECK_INTERVAL` (in Sekunden) angepasst werden. ## Hinweise - Bereits gesendete Meldungen werden in der Datei `ti_status_state.json` gespeichert. diff --git a/ti_status_checker.py b/ti_status_checker.py index 3f3c972..9679c6c 100644 --- a/ti_status_checker.py +++ b/ti_status_checker.py @@ -8,7 +8,6 @@ import re TI_STATUS_URL = "https://fachportal.gematik.de/ti-status" WEBHOOK_URL = "https://mattermost.medisoftware.org/hooks/i67zgcgajifxxxtfwjxcxace7a" STATE_FILE = "ti_status_state.json" -CHECK_INTERVAL = 300 # 5 Minuten def fetch_status_messages(): resp = requests.get(TI_STATUS_URL) @@ -69,22 +68,20 @@ def send_to_mattermost(message): def main(): state = load_state() known_messages = set(state.get("messages", [])) - print("Starte Überwachung der TI-Status-Seite...") - while True: - try: - messages = fetch_status_messages() - new_messages = [m for m in messages if m not in known_messages] - for msg in new_messages: - print(f"Neue Meldung gefunden: {msg}") - send_to_mattermost(msg) - known_messages.add(msg) - if new_messages: - save_state({"messages": list(known_messages)}) - else: - print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})") - except Exception as e: - print(f"Fehler: {e}") - time.sleep(CHECK_INTERVAL) + print("Prüfe TI-Status-Seite auf neue Meldungen...") + try: + messages = fetch_status_messages() + new_messages = [m for m in messages if m not in known_messages] + for msg in new_messages: + print(f"Neue Meldung gefunden: {msg}") + send_to_mattermost(msg) + known_messages.add(msg) + if new_messages: + save_state({"messages": list(known_messages)}) + else: + print(f"Keine neuen Meldungen ({datetime.now().strftime('%H:%M:%S')})") + except Exception as e: + print(f"Fehler: {e}") if __name__ == "__main__": main() \ No newline at end of file