Hallo,
Das Land Niedersachsen stellt die Pegelstände von diversen Gewässern per Internet bereit (https://www.pegelonline.nlwkn.niedersachsen.de/Start (https://www.pegelonline.nlwkn.niedersachsen.de/Start)). Die API ist dokumentiert unter https://www.pegelonline.nlwkn.niedersachsen.de/pdf/BenutzerhandbuchWebservicePegelonline.pdf (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ß!
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)
https://wiki.fhem.de/wiki/Flusspegel
@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 (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 (https://www.pegelonline.nlwkn.niedersachsen.de/Start)