Pegelstände von Gewässern in Niedersachsen abfragen (Fluß, Hochwasser)

Begonnen von Torxgewinde, 07 August 2022, 18:03:48

Vorheriges Thema - Nächstes Thema

Torxgewinde

Hallo,
Das Land Niedersachsen stellt die Pegelstände von diversen Gewässern per Internet bereit (https://www.pegelonline.nlwkn.niedersachsen.de/Start). Die API ist dokumentiert unter https://www.pegelonline.nlwkn.niedersachsen.de/pdf/BenutzerhandbuchWebservicePegelonline.pdf

Will man ein bestimmtest Gewässer (hier zB die "Große Aa" gemessen in Beesten) auslesen, kann man dies mit HTTPMOD erledigen:
defmod Flusspegel HTTPMOD https://bis.azure-api.net/PegelonlinePublic/REST/stammdaten/stationen/All?key=9dc05f4e3b4a43a9988d747825b39f43 900
attr Flusspegel extractAllJSON 1
attr Flusspegel stateFormat {\
my $level = ReadingsNum($name,"getStammdatenResult_57_Parameter_01_Datenspuren_01_AktuellerMesswert","-1");;\
my $date = ReadingsVal($name,"getStammdatenResult_57_Parameter_01_Datenspuren_01_AktuellerMesswert_Zeitpunkt","???");;\
  return "Wasserstand: $level cm ($date)"\
}


Viel Spaß!

betateilchen

#1
Und warum HTTPMOD und nicht JsonMod, wenn doch das Ergebnis der Abfrage schon JSON liefert?


defmod jmtest JsonMod https://bis.azure-api.net/PegelonlinePublic/REST/stammdaten/stationen/All?key=9dc05f4e3b4a43a9988d747825b39f43
attr jmtest readingList single(jsonPath('$.getStammdatenResult.56.Parameter.0.Datenspuren.0.AktuellerMesswert'),'wasserstand','n/a')\
single(jsonPath('$.getStammdatenResult.56.Parameter.0.Datenspuren.0.AktuellerMesswert_Zeitpunkt'),'zeitpunkt','n/a')
attr jmtest stateFormat wasserstand cm (zeitpunkt)





Edit: es geht sogar noch perfomanter, wenn es nur um die Daten einer bestimmten Station (Beesten / Große Aa = 182) geht:


defmod jmtest2 JsonMod https://bis.azure-api.net/PegelonlinePublic/REST/station/182/datenspuren/parameter/1/tage/-1?key=9dc05f4e3b4a43a9988d747825b39f43
attr jmtest2 readingList single(jsonPath('$.getPegelDatenspurenResult.Parameter.0.Datenspuren.0.AktuellerMesswert'),'wasserstand','n/a')\
single(jsonPath('$.getPegelDatenspurenResult.Parameter.0.Datenspuren.0.AktuellerMesswert_Zeitpunkt'),'zeitpunkt','n/a')
attr jmtest2 stateFormat wasserstand cm (zeitpunkt)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

mi.ke

FHEM 5.9 | RPi4 + 5 x RPi(Z) + FB7590 + FB 6890 LTE via LAN und WAN (VPN) verbunden.
2 x CUL868 + 3 x RFXTRX(e) + 6 x HMwLanGW + 4 x z2tGw + 5 x LGW + 2 x IRBlast + CO2 +++
FS20, FHT, FMS, Elro(mod), CM160, Revolt, LGTV, STV, AVR, withings, HM-sec-*, HM-CC-RT-DN, AMAD, PCA301, arlo, Aqara

Torxgewinde

@betateilchen: Danke für den Hinweis mit JsonMod und dem Schnipsel, den bevorzuge ich jetzt.
@mi.ke: Danke für den Hinweis auf den Wiki Artikel. Er verweist auf https://www.pegelonline.wsv.de, allerdings sind dort sind nicht die gleichen Orte für Pegel zu finden wie unter https://www.pegelonline.nlwkn.niedersachsen.de/Start