ORF aktuelles Wetter - HTTPMOD

Begonnen von drhirn, 05 Dezember 2018, 13:11:10

Vorheriges Thema - Nächstes Thema

drhirn

Hallo,

weil ich's nicht geschafft habe, aus vorhandenen Modulen eine zuverlässige Quelle für das aktuelle Wetter in österreichischen Orten zu bekommen, habe ich mir selber ein HTTPMOD angelegt. Das holt sich das Wetter von der ORF-Seite und extrahiert die benötigten Werte.


defmod weatherORF HTTPMOD https://wetter.orf.at/wien/ 1800
attr weatherORF userattr reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex reading02-1Name reading02-2Name reading02-3Name reading02-4Name reading02-5Name reading02-6Name reading02-7Name reading02-8Name reading02Regex
attr weatherORF enableControlSet 1
attr weatherORF reading01-1Name temperature
attr weatherORF reading01-2Name weather
attr weatherORF reading01-3Name wind
attr weatherORF reading01-4Name windDir
attr weatherORF reading01-5Name precipitation
attr weatherORF reading01Regex Innere Stadt<\/h3>[\s\S]*temperature\">([&minus;]*\d*,?\d?)[\s\S]*screen\">, ([\s\S]*)\.<\/span>[\s\S]*wind\">(\d*,?\d?)[\s\S]*screen\">,.([\s\S]*)\.[\s\S]*precipitation\">(\d*,?\d+)[\s\S]*sta-11080
attr weatherORF reading02-1Name sunRise
attr weatherORF reading02-2Name sunSet
attr weatherORF reading02-3Name moonPhase
attr weatherORF reading02-4Name moonRise
attr weatherORF reading02-5Name moonSet
attr weatherORF reading02-6Name dayLength
attr weatherORF reading02-7Name dawn
attr weatherORF reading02-8Name dusk
attr weatherORF reading02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s[\w\W]*Mondphase: (.*)\.[\w\W]*Mondaufgang um <\/span>(.*)<s[\w\W]*Monduntergang um <\/span>(.*)<s[\w\W]*Tagesl&auml;;nge: <\/span>(.*)&[\w\W]*Morgen<\/span>: <\/span>(.*)&[\w\W]*Abend:<\/span><\/span>(.*)&
attr weatherORF room Wetter
attr weatherORF stateFormat weather bei temperature°C


Für andere Orte ist die URL und die Regex des ersten Readings anzupassen. Funktioniert halt nur, solange der ORF nichts an der Seite ändert (was dringend empfehlenswert wäre ;) ).

Gruß
Stefan

---23.01.2019
Habe die Regex geändert, damit auch Minusgrade angezeigt werden.

kamp

#1
Hallo,

danke für das HTTPMOD, es hat bis zum 25.1.2023 einwandfrei funktioniert, seitdem liefert es leider keine Wetterdaten mehr (das zweite mit Sonnenaufgang etc. funktioniert weiterhin). FHEM bleibt beim Start dabei hängen und läuft mit 100% CPU weiter. Erst wenn ich get01Poll 0 setze, lässt sich FHEM wieder starten. Könntest du dir das ansehen, möglicherweise haben die was beim ORF auf der Homepage geändert, sodass man das Regex anpassen muss (da kenne ich mich leider nicht aus, sonst würde ich gerne beitragen). Zu erwähnen ist, dass ich zwei URLs habe, da nicht Wien.

define Wetter HTTPMOD https://wetter.orf.at/steiermark/ 1800
attr Wetter userattr reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name
attr Wetter enableControlSet 1
attr Wetter get01Name Wetterdaten
attr Wetter get01Poll 0
attr Wetter get01URL https://wetter.orf.at/steiermark/kapfenberg1/
attr Wetter get02-1Name sunRise
attr Wetter get02-2Name sunSet
attr Wetter get02-3Name moonPhase
attr Wetter get02-4Name moonRise
attr Wetter get02-5Name moonSet
attr Wetter get02-6Name dayLength
attr Wetter get02-7Name dawn
attr Wetter get02-8Name dusk
attr Wetter get02Name Astro-Daten
attr Wetter get02Poll 1
attr Wetter get02Regex Sonnenaufgang um <\/span>(.*)<s[\w\W]*Sonnenuntergang um <\/span>(.*)<s\p{Any}*?Mondphase:\s?([^\.]+)[\w\W]*Mondaufgang um\s?<\/span>(\d\d:\d\d)<s[\w\W]*Monduntergang um <\/span>(\d\d:\d\d)<s[\w\W]*Tagesl[^>]+>(\d?\d:\d\d)&[\w\W]*Morgen<\/span>: <\/span>(\d\d:\d\d)&[\w\W]*Abend:<\/span><\/span>(\d\d:\d\d)
attr Wetter get02URL https://wetter.orf.at/steiermark/
attr Wetter icon weather_light_meter
attr Wetter model ORF_weather
attr Wetter reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>(&minus;;)?[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>(&minus;;)?[\d,]+)&thinsp.*?Wind.*?>\n\s*(?<wind>[^<]+)\s<abbr.*?Windspitzen.*?>\n\s*(?<windspitzen>[^<]+)\s<abbr.*?Luftdruck.*?>\n\s*(?<luftdruck>[^<]+)\s<abbr.*?Luftfeuchtigkeit.*?>\n\s*(?<humidity>[^<]+)\s<abbr.*?Sonnenschein.*?>\n\s*(?<sonne>[^<]+)\s<abbr.*?Niederschlag.*?>\n\s*(?<rain>[^<\n]+).*?</p.*?(?<messwerte>Messwerte[^<\n]+)
attr Wetter readingOExpr $val =~ s/([\d]+),([\d]+) */$1.$2/ if $val =~ m{[\d]+,[\d]+ *\z};;$val=~s/&minus\;;/-/;;$val
attr Wetter room Wetter
attr Wetter stateFormat W: wind km/h, H: humidity%rH, T: temperature°C

kamp

hat es schon jemand wieder zum laufen bekommen?

betateilchen

#3
Wo ist denn das Problem und warum muss man das so umständlich machen, wenn es auch ganz einfach und logisch geht?

defmod test HTTPMOD https://wetter.orf.at/steiermark/kapfenberg1
attr test reading01Name Temperatur
attr test reading01Regex Temperatur.*[\r\n\s]*([\d,-]+)

liefert bei mir aktuell 13,1 Grad im reading.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

drhirn

#4
Weil:
1. Du ganz offensichtlich besser drauf bist, was Regex betrifft
2. Es die Übersichtsseite für den bestimmten Ort anno 2018 noch nicht gab
;)

Der ORF verwendet allerdings &minus; statt einfach nur einem - Zeichen.
Müsste dann also - man korrigiere mich - so aussehen:

Temperatur.*[\r\n\s]*([&minus;]*[\d,]+)
(FHEM wandelt dann das &minus; aber leider nicht um. Müsste man noch einen Weg finden)

drhirn

Zitat von: drhirn am 12 April 2023, 11:59:46(FHEM wandelt dann das &minus; aber leider nicht um. Müsste man noch einen Weg finden)

attr wienwetter reading01OExpr $val =~ s/&minus\;;/-/;; $val;;

erwin

Hi,
m.W. gibts für ORF Wetter ein HTTPMOD template, das dieses &minus; Problem auch löst...
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

drhirn


kamp

#8
Zitat von: erwin am 12 April 2023, 16:49:43Hi,
m.W. gibts für ORF Wetter ein HTTPMOD template, das dieses &minus; Problem auch löst...
l.g. erwin

Danke, das hat mich auf die Spur gebracht, so dürfte ich das damals auch umgesetzt haben, da das Ergebnis nahezu identisch ist. Habe das alte Device gelöscht und ein neues mit dem template gemacht, scheint so zu funktionieren! Danke!