AT - ZAMG Wetterwarnungen - V2

Update V2 Es wurde ein Fehler behoben bei dem sich mehrer Meldungen des gleichen Typs überschreiben konnten und damit Warnungen verloren gingen.
Hier der gefixte Flow: 

Hier wird beschrieben wie das Abfragen und Senden von Wetterwarnungen der ZAMG (Österreich) an den Miniserver funktioniert.

Disclaimer

  • Das ganze funktioniert nur solange die ZAMG ihren API Call getWarningsForCoords nicht umstellt!

Basics

Hier https://warnungen.zamg.at/wsapp/de/alle/heute/19177,257711,783484,534322 ist die Startseite der ZAMG für die Wetterwarnungen

Wo sind die interessanten Daten?

Hier eine Regenwarnung

Umsetzung in Node Red

Das oben gefunden nutzt nicht wirklich was, weil die ganzen Daten über Java Script geladen werden!

Über den Network Tab im Chrome Browser kann man aber sehen welche Calls zum Server gemacht werden und den Link der die Daten beschafft herausfinden.

WICHTIG: Ihr müsst die folgende 2. URL mit euren eigenen Geo Koordinaten in Node Red verwenden! 

  • Entweder im Chrom über den Network Tab aufrufen - nach getWarningsForCoords suchen und Link in neuer Seite öffnen und Link kopieren

  • oder die Geo Koordinaten aus eurer eigene Browser URL kopieren - es sind die letzten beiden Werte aus dem Browser Link

Der Browser Link, NICHT verwenden in Node Red 

Der RICHTIGE API Link, diesen verwenden in Node Red 

Also, ihr müsst euer Koordinaten mit dem API Call verwenden, das sind die blau markierten Zahlen!

Dieser API Call ist perfekt, weil der liefert uns einen JSON String zurück mit dem wir gleich weiterarbeiten können! 
Hier ein Beispiel zamgwetterdaten.json

Bedeutung der Daten

Da ich bisher keine Doku gefunden habe für warntypid und warnstufeid werden diese ignoriert und ich suche im Text einfach nach Regen, Gewitter, Sturm, Nebel, Hitze um eine Warnung zu generieren. Natürlich wird das Datum und die Uhrzeit berücksichtigt beim erzeugen der Warnung für den Miniserver.

Beispiel für Daten

Es können also mehrer Warnungen gleichen Typs in einer Nachricht vorkommen, das ist im Flow zu beachten.

Der Flow

Da die Wetterwarnungen ja immer nur vorhanden sind, wenn es welche gibt, wir in Loxone aber wissen wollen Wetterwarnung ja bzw. nein, ist der Flow in zwei Zweige aufgeteilt, um diese Information zu generieren. Wie man Informationen in einem Flow speichert ist hier erklärt: https://nodered.org/docs/user-guide/context

(Wichtig für V1 User: der cheerio Node ist nicht mehr erforderlich, wir bekommen ja direkt JSON Daten)

Der Flow-Zweig zum Werte holen

  • der Timestamp fragt alle 20 Minuten die aktuellen Werte ab (verwendet bitte keine kleineren Werte um die ZAMG nicht sauer zu machen!)

  • alle Warnungen werden zurückgesetzt und 

  • die Daten werden abgefragt, ausgewertet und die gerade aktuellen Warnungen aktualisiert/gesetzt

Der Loxone Zweig

  • mit 5 Sekunden Verzögerung - damit sicher alles berechnet ist - werden die aktualisierten Daten über UDP an Loxone geliefert



Was muss ich im Flow alles anpassen?

  • auf jeden Fall die URL im Node API Call Unwetterabfrage - hier wie oben beschrieben den API Call mit euren Geo Koordinaten eintragen. 

  • IP Adresse und den Port im Node Miniserver UDP - hier verwende ich den Port 7771 - muss mit dem UDP Port, den du in der Config vergibst, übereinstimmen!

Und hier der Flow zum Download

Config für Miniserver

Die Daten werden mit UDP an den Minserver gesendet, hier ein Beispiel, die Hitzewarnung ist gerade aktiv:

Befehlserkennung der virtuellen UDP Eingänge

  • Wichtig: die UDP Eingänge NICHT als Digitaleingeng verwenden!

  • Die Einheit sollte überall mit <v> angegeben werden, es wird 0 oder 1 geliefert 

So sieht der String aus, der über UDP an den Miniservere gesendet wird: "Gewitter:0 AkutGewitter:0 Hagel:0 Hitze:0 Sturm:0 Regen:0 Wind:0 Nebel:0"
Ist aktuell eine Warnung aktiv, so steht statt einer 0 eine 1 als Wert.

Und das ist die jeweilige Befehlserkennung im Miniserver für die Werte:

  • \iHitze:\i\v

  • \iGewitter:\i\v

  • \iAkutGewitter:\i\v

  • \iSturm:\i\v

  • \iHagel:\i\v

  • \iRegen:\i\v

  • \iWind:\i\v

  • \iRegen:\i\v

  • \iNebel:\i\v

Diskussionen & Anfragen