Regionale Warnmeldungen mittel HTTP API einbinden
Verfasst: Di Mai 10, 2022 2:41 pm
Gleichmal vorab, für mich ist das Folgende alles Neuland (also HTTP API und die Warnsystem API's)!
Angestoßen durch eine aktuelle Diskussion zur V4 habe ich mich daran erinnert, dass ich schon immer mal eine Funktion implementieren wollte, die meine Lüftungsanlage im Eigenheim und im Ferienhaus abschaltet, wenn eine offizielle Warnung des BBK (Bundesamt für Bevölkerungsschutz und Katastrophenhilfe) dazu rät.
Beispiel:
Jetzt gerade gibt es eine entsprechend Warnung in Warstein (Warstein habe ich zufällig ausgewählt, weil dort gerade eine entsprechende Warnung anliegt):

Das BKK bietet eine API zu seinen Meldungen an : Die NINA API.
https://nina.api.bund.dev/
Dieser Dienst / Diese Datenbank scheint mir gut geeignet, weil sie mehrere Quellen (Katwarn, MoWaS, D.Wetterdienst,etc) bündelt. Wenn Ihr andere Vorschläge oder Empfehlungen habt, dann gerne her damit.
Ich scheitere aber aktuell noch an der regionalen Zuordnung der Warnungen.
Was meine ich mit regionaler Zuordnung: Der Dienst MoWaS (Modulares Warnsystem des BBK - Link) liefert zu seinen Warnungen beispielsweise eine Polygon-Beschreibung mit GeoKoordinaten, die das betroffene Gebiet umreißen. Wenn ich nur eine solche Information nehme, müsste ich im TWS ja dann prüfen, ob die Koordinaten meines Objektes in der Problemregion liegen...das ist meines Erachtens recht aufwändig und aktuell (V3.0 RC4) nicht direkt im TWS machbar, sondern nur über Zusatzdienste wie z.B. NodeRed.
Bei der NINA API kann man sich jedoch alle Meldungen der verbundenen Dienste für eine sogenannte Amtliche Gebietskennziffer (ähnlich PLZ) abfragen - Meldeübersicht nach AGS. Dabei hat dann das NINA-System nach meinem Verständnis schon die Betroffenheit von Gebiete zu der betroffen Geo-Koordination-Flächenpolygon erledigt. Aber auch das klingt einfacher als es dann in der Realität ist.
Unser Ferienhaus steht in Büsum -> AGS = 010515178013. Der Informationsdiesnt der NINA API "Meldeübersicht nach AGS" lässt aber lediglich die Abfrage nach den ersten 5 Stellen der Gebietskennziffer zu und man muss die detaillierenden Kreiskennzifferen (die letzten 7 Stellen der AGS) mit Nullen auffüllen. Dadurch entstehend teilweise riesige Gebiete, zu denen man Meldungen abfragt. Ich reduziere meinen Request also auf 01051* und erhalte Warnungen und Meldungen für 100!!! Landkreise.
In den Infosätzen der NINA API "Meldeübersicht nach AGS" ist jedoch ein komplexes Datenfeld "area"enthalten, welches dann vielleicht eine genaue Zuordnung zu lässt. Dafür poste ich hier jetzt mal den JSON-Schnippsel zu der oben genannte, aktuellen Meldung aus Warstein:
Warstein hat die Amtliche Gebietskennziffer 059740044044, im Request habe ich also 059740000000 angegeben.
Zunächst erhält man folgende Übersicht, mit aktuell drei Meldeeinträgen:
Die Corona-Warnmeldungen und -Informationen interessieren mich jetzt erstmal nicht, geht mir also um die dritte enthaltene Meldung:
Hier ist meines Erachtens die folgende Zeile für mich interessant
Was genau sind das für Angaben? Ich finde dazu keine erklärenden Hinweise. Allerdings habe ich gesehen, dass andere Dienste (also nicht MoWaS) das AREA nicht in GRID-Form beschreiben, sondern ZGEM...aber auch das ist mir nicht klar.
Hat jemand eine Idee, wie ich nun aus den Area-Angaben auf den Landkreis der AGS 059740044044 für Warstein schließen kann?
Der nächste Schritt ist dann natürlich das Filtern ob eine Warnmeldung für mein Gebiet auch zur Folge hat, dass die Fenster geschlossen und Lüftungsanlagen ausgeschaltet werden müssen. Das scheint mir eine Fleißarbeit zu sein...bei MoWaS sind das zum Beispiel (nicht abschließend) der Eventcode 077 und Verhaltenscode 026...aber das ist dann der nächste Schritt
Angestoßen durch eine aktuelle Diskussion zur V4 habe ich mich daran erinnert, dass ich schon immer mal eine Funktion implementieren wollte, die meine Lüftungsanlage im Eigenheim und im Ferienhaus abschaltet, wenn eine offizielle Warnung des BBK (Bundesamt für Bevölkerungsschutz und Katastrophenhilfe) dazu rät.
Beispiel:
Jetzt gerade gibt es eine entsprechend Warnung in Warstein (Warstein habe ich zufällig ausgewählt, weil dort gerade eine entsprechende Warnung anliegt):

Das BKK bietet eine API zu seinen Meldungen an : Die NINA API.
https://nina.api.bund.dev/
Dieser Dienst / Diese Datenbank scheint mir gut geeignet, weil sie mehrere Quellen (Katwarn, MoWaS, D.Wetterdienst,etc) bündelt. Wenn Ihr andere Vorschläge oder Empfehlungen habt, dann gerne her damit.
Ich scheitere aber aktuell noch an der regionalen Zuordnung der Warnungen.
Was meine ich mit regionaler Zuordnung: Der Dienst MoWaS (Modulares Warnsystem des BBK - Link) liefert zu seinen Warnungen beispielsweise eine Polygon-Beschreibung mit GeoKoordinaten, die das betroffene Gebiet umreißen. Wenn ich nur eine solche Information nehme, müsste ich im TWS ja dann prüfen, ob die Koordinaten meines Objektes in der Problemregion liegen...das ist meines Erachtens recht aufwändig und aktuell (V3.0 RC4) nicht direkt im TWS machbar, sondern nur über Zusatzdienste wie z.B. NodeRed.
Bei der NINA API kann man sich jedoch alle Meldungen der verbundenen Dienste für eine sogenannte Amtliche Gebietskennziffer (ähnlich PLZ) abfragen - Meldeübersicht nach AGS. Dabei hat dann das NINA-System nach meinem Verständnis schon die Betroffenheit von Gebiete zu der betroffen Geo-Koordination-Flächenpolygon erledigt. Aber auch das klingt einfacher als es dann in der Realität ist.
Unser Ferienhaus steht in Büsum -> AGS = 010515178013. Der Informationsdiesnt der NINA API "Meldeübersicht nach AGS" lässt aber lediglich die Abfrage nach den ersten 5 Stellen der Gebietskennziffer zu und man muss die detaillierenden Kreiskennzifferen (die letzten 7 Stellen der AGS) mit Nullen auffüllen. Dadurch entstehend teilweise riesige Gebiete, zu denen man Meldungen abfragt. Ich reduziere meinen Request also auf 01051* und erhalte Warnungen und Meldungen für 100!!! Landkreise.
In den Infosätzen der NINA API "Meldeübersicht nach AGS" ist jedoch ein komplexes Datenfeld "area"enthalten, welches dann vielleicht eine genaue Zuordnung zu lässt. Dafür poste ich hier jetzt mal den JSON-Schnippsel zu der oben genannte, aktuellen Meldung aus Warstein:
Warstein hat die Amtliche Gebietskennziffer 059740044044, im Request habe ich also 059740000000 angegeben.
Zunächst erhält man folgende Übersicht, mit aktuell drei Meldeeinträgen:
Code: Alles auswählen
[
{
"id": "mow.DE-NW-BN-SE030-20220407-30-001",
"payload": {
"version": 2,
"type": "ALERT",
"id": "mow.DE-NW-BN-SE030-20220407-30-001",
"hash": "cdf19b1ec70babb99decfad59501b96322dc3f1b8a43c1a364822be786c71fc5",
"data": {
"headline": "Coronavirus: Informationen des Bundesministeriums für Gesundheit",
"provider": "MOWAS",
"severity": "Minor",
"msgType": "Update",
"transKeys": {
"event": "BBK-EVC-040"
},
"area": {
"type": "ZGEM",
"data": "1+11057,100001"
}
}
},
"i18nTitle": {
"de": "Coronavirus: Informationen des Bundesministeriums für Gesundheit"
},
"sent": "2022-04-07T12:30:19+02:00"
},
{
"id": "mow.DE-NW-D-SE020-20220504-20-000",
"payload": {
"version": 2,
"type": "ALERT",
"id": "mow.DE-NW-D-SE020-20220504-20-000",
"hash": "0fb8df40f21a01b19fc5177d282205ae2cf42d78d8329ccc5b511b0b9c33276c",
"data": {
"headline": "Coronavirus: Informationen des Landes Nordrhein-Westfalen",
"provider": "MOWAS",
"severity": "Minor",
"msgType": "Update",
"transKeys": {
"event": "BBK-EVC-081"
},
"area": {
"type": "ZGEM",
"data": "3243+395,100001"
}
}
},
"i18nTitle": {
"de": "Coronavirus: Informationen des Landes Nordrhein-Westfalen"
},
"sent": "2022-05-04T19:19:01+02:00"
},
{
"id": "mow.DE-NW-SO-SE089-20220510-89-000",
"payload": {
"version": 2,
"type": "ALERT",
"id": "mow.DE-NW-SO-SE089-20220510-89-000",
"hash": "6d76feced7a2712c93c99b34648d6958f850b7e066489a0b963bea4e7fd136ea",
"data": {
"headline": "Rauchgase in Großraum Warstein Sichtigvor",
"provider": "MOWAS",
"severity": "Minor",
"msgType": "Alert",
"transKeys": {
"event": "BBK-EVC-077"
},
"area": {
"type": "GRID",
"data": "217161+5,217774+5,218386+7,218999+7,219613+6,220226+5,220841+1,500001"
}
}
},
"i18nTitle": {
"de": "Rauchgase in Großraum Warstein Sichtigvor"
},
"sent": "2022-05-10T12:29:11+02:00"
}
]
Code: Alles auswählen
[
{
"id": "mow.DE-NW-SO-SE089-20220510-89-000",
"payload": {
"version": 2,
"type": "ALERT",
"id": "mow.DE-NW-SO-SE089-20220510-89-000",
"hash": "6d76feced7a2712c93c99b34648d6958f850b7e066489a0b963bea4e7fd136ea",
"data": {
"headline": "Rauchgase in Großraum Warstein Sichtigvor",
"provider": "MOWAS",
"severity": "Minor",
"msgType": "Alert",
"transKeys": {
"event": "BBK-EVC-077"
},
"area": {
"type": "GRID",
"data": "217161+5,217774+5,218386+7,218999+7,219613+6,220226+5,220841+1,500001"
}
}
},
"i18nTitle": {
"de": "Rauchgase in Großraum Warstein Sichtigvor"
},
"sent": "2022-05-10T12:29:11+02:00"
}
]
Code: Alles auswählen
"area": {
"type": "GRID",
"data": "217161+5,217774+5,218386+7,218999+7,219613+6,220226+5,220841+1,500001"
}
Hat jemand eine Idee, wie ich nun aus den Area-Angaben auf den Landkreis der AGS 059740044044 für Warstein schließen kann?
Der nächste Schritt ist dann natürlich das Filtern ob eine Warnmeldung für mein Gebiet auch zur Folge hat, dass die Fenster geschlossen und Lüftungsanlagen ausgeschaltet werden müssen. Das scheint mir eine Fleißarbeit zu sein...bei MoWaS sind das zum Beispiel (nicht abschließend) der Eventcode 077 und Verhaltenscode 026...aber das ist dann der nächste Schritt
