*gelöst* Flusspegel mit HTTPmod - Probleme mit Regex

Begonnen von efyzz, 05 Januar 2024, 23:19:21

Vorheriges Thema - Nächstes Thema

efyzz

Moin,
ich versuche gerade Flusspegel auszulesen, doch die gewünschten Messstellen sind in der stations.json von Pegel-Online nicht aufgeführt. Deswegen versuche ich es "zu Fuß", beispielsweise von dieser Seite:
https://www.pegelonline.nlwkn.niedersachsen.de/Pegel/Binnenpegel/ID/213

Den Pegel in cm und in Höhe üNN kann ich bereits von der Seite lesen. Aber mit der "Veränderung" und der "Meldestufe" habe ich Probleme.

Den Wert für "Veränderung" bekomme ich auch, allerdings immer eine Fehlermeldung im Log:
PERL WARNING: Argument "0 cm" isn't numeric in sprintf at (eval 358906) line 1
Und für die Meldestufe bekomme ich immer nur "1" zurück.

Hier meine Def:
defmod Aller_Brenneckenbrueck HTTPMOD https://www.pegelonline.nlwkn.niedersachsen.de/Pegel/Binnenpegel/ID/213
attr Aller_Brenneckenbrueck enableControlSet 1
attr Aller_Brenneckenbrueck event-on-change-reading .*
attr Aller_Brenneckenbrueck icon weather_fog
attr Aller_Brenneckenbrueck reading01Name Wasserstand
attr Aller_Brenneckenbrueck reading01RegOpt s
attr Aller_Brenneckenbrueck reading01Regex Aktuelle Messdaten.*?([\d]+.cm)
attr Aller_Brenneckenbrueck reading02Name WasserstandNN
attr Aller_Brenneckenbrueck reading02RegOpt s
attr Aller_Brenneckenbrueck reading02Regex Aktuelle Messdaten.*?([\d]+\,[\d]+.m)
attr Aller_Brenneckenbrueck reading03Name Veraenderung
attr Aller_Brenneckenbrueck reading03RegOpt s
attr Aller_Brenneckenbrueck reading03Regex Veränderung:.*?([-+]+.[\d]+.cm)
attr Aller_Brenneckenbrueck reading04Name Meldestufe
attr Aller_Brenneckenbrueck reading04RegOpt s
attr Aller_Brenneckenbrueck reading04Regex Aktuelle Meldestufe:.*?([\d])

Danke für eure Vorschläge!
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.

betateilchen

Zitat von: efyzz am 05 Januar 2024, 23:23:32Ich hatte den Eindruck, dass hier schon andere sehr anwendungsspezifische Fragen gestellt hatten, aber ich mag mich irren.

Nur weil andere es falsch machen, muss man es ja nicht selbst auch tun.

Zitat von: efyzz am 05 Januar 2024, 23:23:32Aber was hast Du denn da für einen Screenshot angehangen?
Sieht so aus, als hättest Du es ausprobiert und es funktioniert bei Dir :)

Natürlich funktioniert es bei mir.
Aber ich wollte meine Antwort mit der Lösung nicht auch noch in den falschen Thread posten.

defmod Aller_Brenneckenbrueck HTTPMOD https://www.pegelonline.nlwkn.niedersachsen.de/Pegel/Binnenpegel/ID/213
attr Aller_Brenneckenbrueck reading01Name Wasserstand
attr Aller_Brenneckenbrueck reading01Regex _Wasserstand_0..(.*).cm
attr Aller_Brenneckenbrueck reading02Name WasserstandNN
attr Aller_Brenneckenbrueck reading02Regex \/.*NN[\s\+]+(\d+,\d+)
attr Aller_Brenneckenbrueck reading03Name Veraenderung
attr Aller_Brenneckenbrueck reading03Regex _VeraenderungWasserstand_0..(.*).cm
attr Aller_Brenneckenbrueck reading04Name Meldestufe
attr Aller_Brenneckenbrueck reading04Regex MeldestufenLabel">(.)

Zitat von: efyzz am 05 Januar 2024, 23:23:32Meinetwegen dann gern meinen Beitrag oben löschen. Danke!

Das kannst Du auch selbst machen.
Im Menü unter "Mehr..." gibt es auch eine Option zum Löschen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

efyzz

Super, dankeschön!

ZitatDen Wert für "Veränderung" bekomme ich auch, allerdings immer eine Fehlermeldung im Log:

PERL WARNING: Argument "0 cm" isn't numeric in sprintf at (eval 358906) line 1

Das habe ich nun auch wegbekommen. Es lag gar nicht an der RegEx, sondern an meinem stateFormat  ::)
RaspberryPi3B, Bookworm Lite
Homematic Funkmodul HM-MOD-RPI-PCB
------------------------------------------------------------------------
Ich bin kein Programmierer ... aber ich weiß, auf welcher Seite der Lötkolben heiß ist.