Hallo zusammen
Ich habe zwei Module gebaut, um Hagel-/Gewitterwarnungen für die Schweiz in IP-Symcon abzubilden, und möchte sie hier vorstellen – über Feedback, Tests an anderen Standorten und Verbesserungsvorschläge würde ich mich sehr freuen.
Repo: https://github.com/mschmidi/meteoswiss-symcon (MIT-Lizenz)
Warum zwei Module?
Es gibt zwei unterschiedliche Ansätze mit unterschiedlichen Trade-offs, deshalb habe ich sie bewusst getrennt statt in ein Modul zu zwingen:
1. MeteoSchweizHagelwarnung – einfach, reines PHP
Fragt periodisch die Warnungs-API der offiziellen MeteoSwiss-App für eine konfigurierbare PLZ ab. MeteoSchweiz kennt keinen eigenen Warntyp für Hagel – das Risiko wird im Text der Gewitterwarnung mitgeteilt, das Modul wertet das entsprechend aus (mit Option, nur bei explizit erwähntem „Hagel“ zu reagieren).
-
Keine externen Abhängigkeiten, in einem Schritt installierbar
-
Nutzt allerdings eine inoffizielle, nicht dokumentierte Schnittstelle (reverse-engineered, Endpunkt/Struktur anhand bestehender Home-Assistant-/ioBroker-Integrationen verifiziert)
-
Variablen:
Warnstufe,HagelAktiv,WarnText, Gültigkeitszeitraum
2. MeteoSchweizHagelradar – offizielle Radardaten, braucht einen Helper
Nutzt die offiziellen MeteoSchweiz-Radarprodukte POH (Hagelwahrscheinlichkeit) und MESHS (erwartete Hagelkorngrösse), bezogen über die FSDI-STAC-API von MeteoSchweiz Open Data. Da PHP kein HDF5 lesen kann, übernimmt ein separates Python-Skript (systemd-Timer, z. B. auf einem Raspberry Pi) Abruf und Auswertung und schreibt das Ergebnis in eine lokale JSON-Datei, die das Modul liest.
-
Präzisere, kontinuierliche Werte statt nur Ja/Nein, Standard-Schwellenwert 5 % POH
-
Standort wird komplett aus IP-Symcon gepflegt (automatisch aus dem Systemstandort übernommen), keine manuelle Datei-Konfiguration auf dem Host nötig
-
Bewusst kein Kandidat für den kuratierten Stable-Module-Store, da es einen extern zu installierenden Python-Helper braucht (systemd, Systembenutzer) – widerspricht einer „in einem Schritt installierbaren“ Store-Erfahrung. Über die eigene Modul-URL aber problemlos nutzbar.
Ausfallsicherheit – beide Module nach demselben Muster
Mir war wichtig, dass ich mich innerhalb von IP-Symcon zuverlässig darauf verlassen kann, ob der Schutz gerade funktioniert – ganz ohne Push/E-Mail-Mechanismen im Modul selbst, weil ich das lieber selbst mit eigenen Symcon-Ereignissen löse. Beide Module liefern dafür dieselben zwei Signale:
-
SchutzNichtGewaehrleistetwird bei jedem Durchlauf aktiv neu gesetzt (auch im Fehlerfall) – Abruf-/Parse-Fehler, veraltete Daten, kein Standort.HagelAktiv/HagelGefahrkann nur nochtruewerden, wenn dieses Signalfalseist. Damit kann ein gestörtes System nie mehr fälschlich „keine Gefahr“ anzeigen, weil eine Variable einfach beim letzten guten Wert eingefroren wäre. -
LetztePruefungist ein reiner Herzschlag des jeweiligen Moduls, unabhängig vom Ergebnis. Grundlage für ein zweites, unabhängiges Watchdog-Ereignis, falls mal die Instanz/der Timer selbst aussteigen sollte – das kann ein Modul naturgemäss nicht selbst erkennen, wohl aber ein separates, davon unabhängiges Ereignis in Symcon.
Konkrete Beispiel-Ereignisse dafür stehen im README.
Installation
Module → Module Store → Meine eigenen Module → URL hinzufügen:
https://github.com/mschmidi/meteoswiss-symcon
Details, Konfiguration, Beispiel-Ereignisse für die Überwachung und die vollständige Installationsanleitung für den Radar-Helper stehen im README bzw. in MeteoSchweizHagelradar/INSTALLATION.md.
Feedback gesucht
-
Wie überwacht ihr sonst bei euren Modulen, ob eine externe Schnittstelle noch funktioniert – gibt’s da etablierte Symcon-Patterns, die ich übersehen habe?
-
Ideen für weitere Warntypen (Wind, Regen, Schnee, Glatteis) sind ebenfalls willkommen
Danke fürs Anschauen!