httpmod.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 21 Februar 2019, 12:04:17

Vorheriges Thema - Nächstes Thema

DeeSPe

Habe noch die Prognose Regexe hinzugefügt.
Kann leider nicht testen ob das wirklich in einem HTTPMOD Device funktioniert, da ich hier mit meinem FHEM-Testsystem keinen dauerhaften Internetzugang habe.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Beta-User

So,

jetzt habe ich mal mit dieser Option rumgespielt, unterschiedliche URL's anzugeben (bei der eher einfachen Seite vom ORF), auch um ein besseres "Gefühl" für das zu bekommen, wei HTTPMOD überhaupt tickt. Leider bekomme ich immer noch keine Sonnendaten usw., sondern nur die erweiterten Wetterdaten.

List meines letzten Versuchs:
defmod wORF_neu HTTPMOD https://wetter.orf.at/steiermark/ 1800
attr wORF_neu userattr get01Name get01Poll:0,1 get01URL get02Name get02Poll:0,1 get02URL 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 wORF_neu enableControlSet 1
attr wORF_neu get01Name Graz-Universität
attr wORF_neu get01Poll 1
attr wORF_neu get01URL https://wetter.orf.at/steiermark/grazuniversitaet/
attr wORF_neu get02Name Sonnendaten
attr wORF_neu get02Poll 1
attr wORF_neu get02URL https://wetter.orf.at/steiermark/
attr wORF_neu model A_02m_ORF_weather
attr wORF_neu reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\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 wORF_neu reading02-1Name sunRise
attr wORF_neu reading02-2Name sunSet
attr wORF_neu reading02-3Name moonPhase
attr wORF_neu reading02-4Name moonRise
attr wORF_neu reading02-5Name moonSet
attr wORF_neu reading02-6Name dayLength
attr wORF_neu reading02-7Name dawn
attr wORF_neu reading02-8Name dusk
attr wORF_neu 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 wORF_neu room Wetter
attr wORF_neu stateFormat weather bei temperature°C

setstate wORF_neu weather bei 9,7°C
setstate wORF_neu 2019-02-27 09:22:50 humidity 42
setstate wORF_neu 2019-02-27 09:22:50 luftdruck 1027,5
setstate wORF_neu 2019-02-27 09:22:50 messwerte Messwerte von 9.00 Uhr
setstate wORF_neu 2019-02-27 09:22:50 rain 0,0
setstate wORF_neu 2019-02-27 09:22:50 sonne 60
setstate wORF_neu 2019-02-27 09:22:50 taupunkt 3,0
setstate wORF_neu 2019-02-27 09:22:50 temperature 9,7
setstate wORF_neu 2019-02-27 09:22:50 wind West, 3
setstate wORF_neu 2019-02-27 09:22:50 windspitzen Südwest, 8

Mit get ... Graz-Universität bekomme ich sauber die grazuniversität-Daten rein, aber get ... Sonnendaten klappt nicht. Hängt bestimmt nur an irgend einer Kleinigkeit, vielleicht sieht die jemand und mag mir den Trick verraten?

Anbei auch noch ein list von einer leicht angepassten Version des Ausgangscodes. Da klappt das mit den Sonnendaten:
defmod weatherORF HTTPMOD https://wetter.orf.at/steiermark/ 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 Graz<\/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-\d+
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

setstate weatherORF heiter bei 8,7°C
setstate weatherORF 2019-02-27 09:19:40 dawn 06:12
setstate weatherORF 2019-02-27 09:19:40 dayLength 10:57
setstate weatherORF 2019-02-27 09:19:40 dusk 18:11
setstate weatherORF 2019-02-27 09:19:40 moonPhase Abnehmender Mond
setstate weatherORF 2019-02-27 09:19:40 moonRise 01:55
setstate weatherORF 2019-02-27 09:19:40 moonSet 11:13
setstate weatherORF 2019-02-27 09:19:40 precipitation 0,0
setstate weatherORF 2019-02-27 09:19:40 sunRise 06:43
setstate weatherORF 2019-02-27 09:19:40 sunSet 17:40
setstate weatherORF 2019-02-27 09:19:40 temperature 8,7
setstate weatherORF 2019-02-27 09:19:40 weather heiter
setstate weatherORF 2019-02-27 09:19:40 wind 3
setstate weatherORF 2019-02-27 09:19:40 windDir Süd
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoeALLb

Zitat von: Beta-User am 27 Februar 2019, 09:34:44
Leider bekomme ich immer noch keine Sonnendaten usw., sondern nur die erweiterten Wetterdaten.

Mal sehen:

Verbose 5 liefert folgende Fehlermeldung

5: wORF_neu: ExtractReading Sonnendaten with regex /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>(.*)&/...
5: wORF_neu: ExtractReading Sonnendaten did not match
3: wORF_neu: Read response to get02 didn't match any Reading
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

JoeALLb

#18
Anbei ein angepasstes Device.

Ich habe:
1) readings02-1Name auf get02-1Name umbenannt
2) den Regexp get02Regex  angepasst. Habe diesen "etwas" flexibler im Matching gemacht...

hier das Ergebnis':

defmod wORF_neu HTTPMOD none 0
attr wORF_neu userattr get01Name get01Poll:0,1 get01URL get02-1Name get02-2Name get02-3Name get02-4Name get02-5Name get02-6Name get02-7Name get02-8Name get02Name get02Poll:0,1 get02Regex get02URL reading01-1Name reading01-2Name reading01-3Name reading01-4Name reading01-5Name reading01Regex
attr wORF_neu enableControlSet 1
attr wORF_neu get01Name Graz-Universität
attr wORF_neu get01Poll 1
attr wORF_neu get01URL https://wetter.orf.at/steiermark/grazuniversitaet/
attr wORF_neu get02-1Name sunRise
attr wORF_neu get02-2Name sunSet
attr wORF_neu get02-3Name moonPhase
attr wORF_neu get02-4Name moonRise
attr wORF_neu get02-5Name moonSet
attr wORF_neu get02-6Name dayLength
attr wORF_neu get02-7Name dawn
attr wORF_neu get02-8Name dusk
attr wORF_neu get02Name Sonnendaten
attr wORF_neu get02Poll 1
attr wORF_neu 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 wORF_neu get02URL https://wetter.orf.at/steiermark/
attr wORF_neu model A_02m_ORF_weather
attr wORF_neu reading01Regex (?s)Temperatur.*?.*?>.*?(?<temperature>[\d,]+)&thinsp.*?Taupunkt.*?.*?>.*?(?<taupunkt>[\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 wORF_neu room Wetter
attr wORF_neu showBody 1
attr wORF_neu stateFormat weather bei temperature°C
attr wORF_neu verbose 5

setstate wORF_neu weather bei 9,7°C
setstate wORF_neu 2019-02-27 10:10:12 dawn 06:12
setstate wORF_neu 2019-02-27 10:10:12 dayLength 10:57
setstate wORF_neu 2019-02-27 10:10:12 dusk 18:11
setstate wORF_neu 2019-02-27 09:45:12 humidity 42
setstate wORF_neu 2019-02-27 09:45:12 luftdruck 1027,5
setstate wORF_neu 2019-02-27 09:45:12 messwerte Messwerte von 9.00 Uhr
setstate wORF_neu 2019-02-27 10:10:12 moonPhase Abnehmender Mond
setstate wORF_neu 2019-02-27 10:10:12 moonRise 01:55
setstate wORF_neu 2019-02-27 10:10:12 moonSet 11:13
setstate wORF_neu 2019-02-27 09:45:12 rain 0,0
setstate wORF_neu 2019-02-27 09:45:12 sonne 60
setstate wORF_neu 2019-02-27 10:10:12 sunRise 06:43
setstate wORF_neu 2019-02-27 10:10:12 sunSet 17:40
setstate wORF_neu 2019-02-27 09:45:12 taupunkt 3,0
setstate wORF_neu 2019-02-27 09:45:12 temperature 9,7
setstate wORF_neu 2019-02-27 09:45:12 wind West, 3
setstate wORF_neu 2019-02-27 09:45:12 windspitzen Südwest, 8

FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

frank

ich würde bei verwendung mehrerer gets auch die url aus dem define löschen, bzw durch "none" ersetzen.
dann zu jedem getXX dann natürlich auch entsprechende getXXname/regex kombinationen.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

JoeALLb

Zitat von: frank am 27 Februar 2019, 10:32:17
ich würde bei verwendung mehrerer gets auch die url aus dem define löschen, bzw durch "none" ersetzen.
dann zu jedem getXX dann natürlich auch entsprechende getXXname/regex kombinationen.

Stimme ich zu, habs aus dem übernommen Beispiel oben entfernt/angepasst.
Dann fehlt jedoch lediglich die Option "get xxx all", ansonsten muss man immer jede URL einzeln abrufen, wenn man ohne fixe Intervalle arbeiten möchte.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

Beta-User

Danke, kaum macht der Profi das...

Habe jetzt auch nochmal die beiden Ausgangs-Regexe verglichen. Eigentlich war ich der Ansicht gewesen, die hätte ich einfach vom einen ins andere kopiert, aber da scheint irgendwas schief gegangen zu sein >:( .

Und dass die Rückmeldungen dann getxx-xName heißen sollten, wenn man das so mit den getURL's löst, findet sich bestimmt auch irgendwo in der Doku ::) . Ist zwar jetzt immer alles noch etwas neblig, aber es wird besser :) .
Dann mache ich die Tage mal noch ein schönes Update für den ORF, und dann ist bergfex hoffentlich auch nicht mehr die ganz große Herausforderung mit der Vorarbeit hier.

@frank:
Danke für den Hinweis. Muß mal überlegen, wie ich das jetzt insgesamt in das template einfließen lasse.
Vorläufige Idee: Der User startet mit einem "vollen Pfad" (hier also https://wetter.orf.at/steiermark/grazuniversitaet/), würde dann durch das template nach dem Städtenamen gefragt (hier: Graz-Universität, das ist aber hier im Prinzip auch willkürlich), das template würde dann daraus die beiden URL's generieren und dann ein defmod auf das Device selbst absetzen mit "none".
(Das könnte man eventuell noch so erweitern, dass bei einer vorhandenen get01URL diese verwendet wird, da müßte ich mich aber auch erst eindenken; das ist aber jetzt alles Kosmetik...)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

frank

wenn im define ein interval steh, wird jedes get, welches mit getXXPoll=1 "aktiviert" ist, auch automatisch ausgelöst.

ebenso sollten beide/alle gets manuell über set reread nacheinander aufgerufen werden.
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

Beta-User

So, eben habe ich dann mal die aktualisierte Fassung des ORF-templates hochgeladen.

Ein paar Dinge wären nett:
- Zum einen wäre eine Rückmeldung hilfreich, wie ihr die "Nutzerführung" findet bzw. ob/welches Verbesserungspotential ihr da seht (ich würde das als eine Art Basistemplate für ähnlich gelagerte Fälle sehen)
- im Ausgangscode von drhirn war noch der Infotext drin, also sowas wie "Stürmisches Scheißwetter bei x°C". Eigentlich fand ich das schöner, vielleicht mag das noch jemand reinbasteln, sonst bleiben im STATE jetzt halt die objektiven Angaben drin, die derzeit verfügbar sind.
- die hp-Drucker würde ich ggf. entsprechend auf die mehrfache URL-Fassung anpassen und das Statustemplate in die beiden (?) anderen integrieren. Aber ohne Hardware... (Wenigstens ein list wäre hilfreich, dann kann ich das ggf. versuchen zu "vertemplaten".

Dann kommt irgendwann auch bergfex dran (bin grade aber noch an ein paar anderen Dingen dran, kann dauern). Übrigens scheinen sich der ORF und Bergfex zumindest die Basisdaten aus derselben Quelle zu holen; die Pfade kommen mir da so bekannt vor...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

JoeALLb

Puh, steht nicht so direkt in der seite.

Aber das hier findet etwas und wird im Webbrowser "verborgen",
es funktioniert jedoch für Wien, Steiermark und Innsbruck:

Beobachtung:\s?(.*?)\.?<

Der Status war dann daraus und der Temperatur zusammengesetzt.
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

DeeSPe

Hier mal eine Definition eines fertigen HTTPMOD Device für die Wetterdaten von bergfex.at (noch ohne Prognose).
Das war gar nicht so einfach... ::)
11 Readings sind schon umgesetzt.
defmod Innsbruck HTTPMOD https://www.bergfex.at/sommer/innsbruck/wetter/ 3600
attr Innsbruck userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07-1Name reading07-1OExpr reading07-2Name reading07-2OExpr reading07-3Name reading07-3OExpr reading07-4Name reading07-4OExpr reading07-5Name reading07-5OExpr reading07Regex reading08Name reading08Regex reading09Name reading09Regex
attr Innsbruck enableControlSet 1
attr Innsbruck reading01Name location
attr Innsbruck reading01Regex "forecast-current">\n\n.+<h2>\n.+?(\w+)\n.+</h2
attr Innsbruck reading02Name height
attr Innsbruck reading02Regex "h2-sub">\n.+?(\d{1,4}).m
attr Innsbruck reading03Name temperature
attr Innsbruck reading03Regex "temperature".*?\n.+<span.class="value">(.*?)</
attr Innsbruck reading04Name chance_of_raining
attr Innsbruck reading04Regex Niederschlag:.(\d{1,3})%
attr Innsbruck reading05Name last_update
attr Innsbruck reading05Regex "important">Heute,.(.*?)</
attr Innsbruck reading06Name condition
attr Innsbruck reading06Regex \d\d:\d\d</span>\n.+-.(.*?)\n
attr Innsbruck reading07-1Name text_today
attr Innsbruck reading07-1OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck reading07-2Name text_tomorrow
attr Innsbruck reading07-2OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck reading07-3Name text_day_after_tomorrow
attr Innsbruck reading07-3OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck reading07-4Name text_in_3_days
attr Innsbruck reading07-4OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck reading07-5Name text_in_4_days
attr Innsbruck reading07-5OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck reading07Regex (?s)<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>
attr Innsbruck stateFormat condition bei temperature°C und chance_of_raining% Regenwahrscheinlichkeit


Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

Bin dabei auch die Prognose einzubauen.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

So, jetzt Wetter und Prognose von bergfex.at mit entsprechenden "Gettern".

Viel Spaß beim "vertemplaten":
defmod Innsbruck HTTPMOD none 3600
attr Innsbruck userattr get01-10Name get01-10OExpr get01-11Name get01-11OExpr get01-1Name get01-2Name get01-3Name get01-4Name get01-5Name get01-6Name get01-7Name get01-7OExpr get01-8Name get01-8OExpr get01-9Name get01-9OExpr get01Name get01Poll:0,1 get01Regex get01URL get02-10Name get02-11Name get02-12Name get02-13Name get02-14Name get02-15Name get02-16Name get02-16OExpr get02-17Name get02-17OExpr get02-18Name get02-19Name get02-19OExpr get02-1Name get02-20Name get02-21Name get02-22Name get02-23Name get02-24Name get02-25Name get02-26Name get02-26OExpr get02-27Name get02-27OExpr get02-28Name get02-29Name get02-2Name get02-30Name get02-31Name get02-32Name get02-33Name get02-34Name get02-35Name get02-36Name get02-36OExpr get02-37Name get02-37OExpr get02-38Name get02-39Name get02-3Name get02-40Name get02-41Name get02-42Name get02-43Name get02-44Name get02-45Name get02-46Name get02-46OExpr get02-47Name get02-47OExpr get02-48Name get02-49Name get02-4Name get02-50Name get02-51Name get02-52Name get02-53Name get02-54Name get02-55Name get02-56Name get02-56OExpr get02-57Name get02-57OExpr get02-58Name get02-59Name get02-5Name get02-60Name get02-61Name get02-62Name get02-63Name get02-64Name get02-65Name get02-66Name get02-66OExpr get02-67Name get02-67OExpr get02-68Name get02-69Name get02-6Name get02-70Name get02-71Name get02-72Name get02-73Name get02-74Name get02-75Name get02-76Name get02-76OExpr get02-77Name get02-77OExpr get02-78Name get02-79Name get02-7Name get02-7OExpr get02-80Name get02-81Name get02-82Name get02-83Name get02-84Name get02-85Name get02-86Name get02-86OExpr get02-87Name get02-87OExpr get02-88Name get02-89Name get02-8Name get02-90Name get02-9Name get02-9OExpr get02Name get02Poll:0,1 get02Regex get02URL reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07-1Name reading07-1OExpr reading07-2Name reading07-2OExpr reading07-3Name reading07-3OExpr reading07-4Name reading07-4OExpr reading07-5Name reading07-5OExpr reading07Regex reading08Name reading08Regex reading09Name reading09Regex
attr Innsbruck devStateIcon {"<img src='https:".ReadingsVal($name,"fc1_icon","")."' alt='".ReadingsVal($name,"condition","")."' />"}
attr Innsbruck enableControlSet 1
attr Innsbruck event-on-change-reading .+
attr Innsbruck get01-10Name text_in_3_days
attr Innsbruck get01-10OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck get01-11Name text_in_4_days
attr Innsbruck get01-11OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck get01-1Name location
attr Innsbruck get01-2Name height
attr Innsbruck get01-3Name last_update
attr Innsbruck get01-4Name condition
attr Innsbruck get01-5Name chance_of_raining
attr Innsbruck get01-6Name temperature
attr Innsbruck get01-7Name text_today
attr Innsbruck get01-7OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck get01-8Name text_tomorrow
attr Innsbruck get01-8OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck get01-9Name text_day_after_tomorrow
attr Innsbruck get01-9OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr Innsbruck get01Name Wetter
attr Innsbruck get01Poll 1
attr Innsbruck get01Regex "forecast-current">\n\n.+<h2>\n.+?(\w+)\n.+</.*?\n\n.*?"h2-sub">\n\s+(.*?)m\n.*\n\n\n\t\n.*?\n.*\n.*?>Heute,\s(.*?)</.*?\n.*?-\s(\w+)\n.*?\n.*?\n\s+Niederschlag:\s(\d{1,3})%\n.*?\n.*\n\t\n.*?"temperature">\n.*?"value">(.*?)</(?s).*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</
attr Innsbruck get01URL https://www.bergfex.at/sommer/innsbruck/wetter/
attr Innsbruck get02-10Name fc1_wind
attr Innsbruck get02-11Name fc2_icon
attr Innsbruck get02-12Name fc2_tmax
attr Innsbruck get02-13Name fc2_tmin
attr Innsbruck get02-14Name fc2_snow
attr Innsbruck get02-15Name fc2_rrr
attr Innsbruck get02-16Name fc2_rrp
attr Innsbruck get02-17Name fc2_snow_fall_limit
attr Innsbruck get02-17OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-18Name fc2_sun_period
attr Innsbruck get02-19Name fc2_thunderstorms
attr Innsbruck get02-1Name fc1_icon
attr Innsbruck get02-20Name fc2_wind
attr Innsbruck get02-21Name fc3_icon
attr Innsbruck get02-22Name fc3_tmax
attr Innsbruck get02-23Name fc3_tmin
attr Innsbruck get02-24Name fc3_snow
attr Innsbruck get02-25Name fc3_rrr
attr Innsbruck get02-26Name fc3_rrp
attr Innsbruck get02-27Name fc3_snow_fall_limit
attr Innsbruck get02-27OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-28Name fc3_sun_period
attr Innsbruck get02-29Name fc3_thunderstorms
attr Innsbruck get02-2Name fc1_tmax
attr Innsbruck get02-30Name fc3_wind
attr Innsbruck get02-31Name fc4_icon
attr Innsbruck get02-32Name fc4_tmax
attr Innsbruck get02-33Name fc4_tmin
attr Innsbruck get02-34Name fc4_snow
attr Innsbruck get02-35Name fc4_rrr
attr Innsbruck get02-36Name fc4_rrp
attr Innsbruck get02-37Name fc4_snow_fall_limit
attr Innsbruck get02-37OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-38Name fc4_sun_period
attr Innsbruck get02-39Name fc4_thunderstorms
attr Innsbruck get02-3Name fc1_tmin
attr Innsbruck get02-40Name fc4_wind
attr Innsbruck get02-41Name fc5_icon
attr Innsbruck get02-42Name fc5_tmax
attr Innsbruck get02-43Name fc5_tmin
attr Innsbruck get02-44Name fc5_snow
attr Innsbruck get02-45Name fc5_rrr
attr Innsbruck get02-46Name fc5_rrp
attr Innsbruck get02-47Name fc5_snow_fall_limit
attr Innsbruck get02-47OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-48Name fc5_sun_period
attr Innsbruck get02-49Name fc5_thunderstorms
attr Innsbruck get02-4Name fc1_snow
attr Innsbruck get02-50Name fc5_wind
attr Innsbruck get02-51Name fc6_icon
attr Innsbruck get02-52Name fc6_tmax
attr Innsbruck get02-53Name fc6_tmin
attr Innsbruck get02-54Name fc6_snow
attr Innsbruck get02-55Name fc6_rrr
attr Innsbruck get02-56Name fc6_rrp
attr Innsbruck get02-56OExpr $val =~ s/,/./g;; $val;;
attr Innsbruck get02-57Name fc6_snow_fall_limit
attr Innsbruck get02-57OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-58Name fc6_sun_period
attr Innsbruck get02-59Name fc6_thunderstorms
attr Innsbruck get02-5Name fc1_rrr
attr Innsbruck get02-60Name fc6_wind
attr Innsbruck get02-61Name fc7_icon
attr Innsbruck get02-62Name fc7_tmax
attr Innsbruck get02-63Name fc7_tmin
attr Innsbruck get02-64Name fc7_snow
attr Innsbruck get02-65Name fc7_rrr
attr Innsbruck get02-66Name fc7_rrp
attr Innsbruck get02-66OExpr $val =~ s/,/./g;; $val;;
attr Innsbruck get02-67Name fc7_snow_fall_limit
attr Innsbruck get02-67OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-68Name fc7_sun_period
attr Innsbruck get02-69Name fc7_thunderstorms
attr Innsbruck get02-6Name fc1_rrp
attr Innsbruck get02-70Name fc7_wind
attr Innsbruck get02-71Name fc8_icon
attr Innsbruck get02-72Name fc8_tmax
attr Innsbruck get02-73Name fc8_tmin
attr Innsbruck get02-74Name fc8_snow
attr Innsbruck get02-75Name fc8_rrr
attr Innsbruck get02-76Name fc8_rrp
attr Innsbruck get02-77Name fc8_snow_fall_limit
attr Innsbruck get02-77OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-78Name fc8_sun_period
attr Innsbruck get02-79Name fc8_thunderstorms
attr Innsbruck get02-7Name fc1_snow_fall_limit
attr Innsbruck get02-7OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-80Name fc8_wind
attr Innsbruck get02-81Name fc9_icon
attr Innsbruck get02-82Name fc9_tmax
attr Innsbruck get02-83Name fc9_tmin
attr Innsbruck get02-84Name fc9_snow
attr Innsbruck get02-85Name fc9_rrr
attr Innsbruck get02-86Name fc9_rrp
attr Innsbruck get02-87Name fc9_snow_fall_limit
attr Innsbruck get02-87OExpr $val =~ s/\.//g;; $val;;
attr Innsbruck get02-88Name fc9_sun_period
attr Innsbruck get02-89Name fc9_thunderstorms
attr Innsbruck get02-8Name fc1_sun_period
attr Innsbruck get02-90Name fc9_wind
attr Innsbruck get02-9Name fc1_thunderstorms
attr Innsbruck get02Name Prognose
attr Innsbruck get02Poll 1
attr Innsbruck get02Regex "forecast-day-0"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.+">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-1"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-2"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-3"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-4"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-5"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-6"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-7"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-8"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</
attr Innsbruck get02URL https://www.bergfex.at/sommer/innsbruck/wetter/prognose/
attr Innsbruck stateFormat condition bei temperature°C und chance_of_raining% Regenwahrscheinlichkeit


Weiß nicht ob das mit dem devStateIcon so gewünscht ist, wenn nicht einfach das Attribut weglassen.
Falls noch was fehlt sagt mir bitte Bescheid.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Beta-User

 :o :) ;D 8)
*grins über beide Backen*
Ihr seid mir ja welche...

Noch ungetestet, aber mit einem gewissen Optimismus:
#Austrian (and other) weather info from bergfex.at or other bergfex sites, Forum: https://forum.fhem.de/index.php/topic,97694.msg912879.html#msg912879
name:A_02n_bergfex_weather
filter:TYPE=HTTPMOD
desc: Get austrian weather.<br>Define a HTTPMOD device like <br>defmod bergfexInnsbruck HTTPMOD none 3600 <br>You will be asked to provide a BERGFEXURL like https://www.bergfex.at/sommer/innsbruck/wetter/ and a CITYNAME like innsbruck<br><a href="https://forum.fhem.de/index.php/topic,97694.msg912879.html#msg912879">Source: FHEM Forum</a>
par:BERGFEXURL;Complete weather-URL. Example: https://www.bergfex.at/sommer/innsbruck/wetter/;{ AttrVal("DEVICE","get01URL","") =~ m,(https://www.bergfex..*/sommer/[^/]+[/]wetter/).*, ? $1 : undef }
par:CITYNAME;Name of the respective weather station as written in the middle part of the URL. Examples: innsbruck;{ AttrVal("DEVICE","get01URL","") =~ m,https://www.bergfex..*/sommer/([^/]+)[/]wetter/.*, ? $1 : undef }
attr DEVICE userattr get01-10Name get01-10OExpr get01-11Name get01-11OExpr get01-1Name get01-2Name get01-3Name get01-4Name get01-5Name get01-6Name get01-7Name get01-7OExpr get01-8Name get01-8OExpr get01-9Name get01-9OExpr get01Name get01Poll:0,1 get01Regex get01URL get02-10Name get02-11Name get02-12Name get02-13Name get02-14Name get02-15Name get02-16Name get02-16OExpr get02-17Name get02-17OExpr get02-18Name get02-19Name get02-19OExpr get02-1Name get02-20Name get02-21Name get02-22Name get02-23Name get02-24Name get02-25Name get02-26Name get02-26OExpr get02-27Name get02-27OExpr get02-28Name get02-29Name get02-2Name get02-30Name get02-31Name get02-32Name get02-33Name get02-34Name get02-35Name get02-36Name get02-36OExpr get02-37Name get02-37OExpr get02-38Name get02-39Name get02-3Name get02-40Name get02-41Name get02-42Name get02-43Name get02-44Name get02-45Name get02-46Name get02-46OExpr get02-47Name get02-47OExpr get02-48Name get02-49Name get02-4Name get02-50Name get02-51Name get02-52Name get02-53Name get02-54Name get02-55Name get02-56Name get02-56OExpr get02-57Name get02-57OExpr get02-58Name get02-59Name get02-5Name get02-60Name get02-61Name get02-62Name get02-63Name get02-64Name get02-65Name get02-66Name get02-66OExpr get02-67Name get02-67OExpr get02-68Name get02-69Name get02-6Name get02-70Name get02-71Name get02-72Name get02-73Name get02-74Name get02-75Name get02-76Name get02-76OExpr get02-77Name get02-77OExpr get02-78Name get02-79Name get02-7Name get02-7OExpr get02-80Name get02-81Name get02-82Name get02-83Name get02-84Name get02-85Name get02-86Name get02-86OExpr get02-87Name get02-87OExpr get02-88Name get02-89Name get02-8Name get02-90Name get02-9Name get02-9OExpr get02Name get02Poll:0,1 get02Regex get02URL reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07-1Name reading07-1OExpr reading07-2Name reading07-2OExpr reading07-3Name reading07-3OExpr reading07-4Name reading07-4OExpr reading07-5Name reading07-5OExpr reading07Regex reading08Name reading08Regex reading09Name reading09Regex
attr DEVICE devStateIcon {"<img src='https:".ReadingsVal($name,"fc1_icon","")."' alt='".ReadingsVal($name,"condition","")."' />"}
attr DEVICE enableControlSet 1
attr DEVICE event-on-change-reading .+
attr DEVICE get01-10Name text_in_3_days
attr DEVICE get01-10OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr DEVICE get01-11Name text_in_4_days
attr DEVICE get01-11OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr DEVICE get01-1Name location
attr DEVICE get01-2Name height
attr DEVICE get01-3Name last_update
attr DEVICE get01-4Name condition
attr DEVICE get01-5Name chance_of_raining
attr DEVICE get01-6Name temperature
attr DEVICE get01-7Name text_today
attr DEVICE get01-7OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr DEVICE get01-8Name text_tomorrow
attr DEVICE get01-8OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr DEVICE get01-9Name text_day_after_tomorrow
attr DEVICE get01-9OExpr $val =~ s/\n/ /g;; $val =~ s/<\/p><p>//g;; $val =~ s/<\/?p>//g;; $val;;
attr DEVICE get01Name Wetter
attr DEVICE get01Poll 1
attr DEVICE get01Regex "forecast-current">\n\n.+<h2>\n.+?(\w+)\n.+</.*?\n\n.*?"h2-sub">\n\s+(.*?)m\n.*\n\n\n\t\n.*?\n.*\n.*?>Heute,\s(.*?)</.*?\n.*?-\s(\w+)\n.*?\n.*?\n\s+Niederschlag:\s(\d{1,3})%\n.*?\n.*\n\t\n.*?"temperature">\n.*?"value">(.*?)</(?s).*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</div>.*<div.class="txt_markup">(.*?)</
attr DEVICE get01URL BERGFEXURL
attr DEVICE get02-10Name fc1_wind
attr DEVICE get02-11Name fc2_icon
attr DEVICE get02-12Name fc2_tmax
attr DEVICE get02-13Name fc2_tmin
attr DEVICE get02-14Name fc2_snow
attr DEVICE get02-15Name fc2_rrr
attr DEVICE get02-16Name fc2_rrp
attr DEVICE get02-17Name fc2_snow_fall_limit
attr DEVICE get02-17OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-18Name fc2_sun_period
attr DEVICE get02-19Name fc2_thunderstorms
attr DEVICE get02-1Name fc1_icon
attr DEVICE get02-20Name fc2_wind
attr DEVICE get02-21Name fc3_icon
attr DEVICE get02-22Name fc3_tmax
attr DEVICE get02-23Name fc3_tmin
attr DEVICE get02-24Name fc3_snow
attr DEVICE get02-25Name fc3_rrr
attr DEVICE get02-26Name fc3_rrp
attr DEVICE get02-27Name fc3_snow_fall_limit
attr DEVICE get02-27OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-28Name fc3_sun_period
attr DEVICE get02-29Name fc3_thunderstorms
attr DEVICE get02-2Name fc1_tmax
attr DEVICE get02-30Name fc3_wind
attr DEVICE get02-31Name fc4_icon
attr DEVICE get02-32Name fc4_tmax
attr DEVICE get02-33Name fc4_tmin
attr DEVICE get02-34Name fc4_snow
attr DEVICE get02-35Name fc4_rrr
attr DEVICE get02-36Name fc4_rrp
attr DEVICE get02-37Name fc4_snow_fall_limit
attr DEVICE get02-37OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-38Name fc4_sun_period
attr DEVICE get02-39Name fc4_thunderstorms
attr DEVICE get02-3Name fc1_tmin
attr DEVICE get02-40Name fc4_wind
attr DEVICE get02-41Name fc5_icon
attr DEVICE get02-42Name fc5_tmax
attr DEVICE get02-43Name fc5_tmin
attr DEVICE get02-44Name fc5_snow
attr DEVICE get02-45Name fc5_rrr
attr DEVICE get02-46Name fc5_rrp
attr DEVICE get02-47Name fc5_snow_fall_limit
attr DEVICE get02-47OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-48Name fc5_sun_period
attr DEVICE get02-49Name fc5_thunderstorms
attr DEVICE get02-4Name fc1_snow
attr DEVICE get02-50Name fc5_wind
attr DEVICE get02-51Name fc6_icon
attr DEVICE get02-52Name fc6_tmax
attr DEVICE get02-53Name fc6_tmin
attr DEVICE get02-54Name fc6_snow
attr DEVICE get02-55Name fc6_rrr
attr DEVICE get02-56Name fc6_rrp
attr DEVICE get02-56OExpr $val =~ s/,/./g;; $val;;
attr DEVICE get02-57Name fc6_snow_fall_limit
attr DEVICE get02-57OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-58Name fc6_sun_period
attr DEVICE get02-59Name fc6_thunderstorms
attr DEVICE get02-5Name fc1_rrr
attr DEVICE get02-60Name fc6_wind
attr DEVICE get02-61Name fc7_icon
attr DEVICE get02-62Name fc7_tmax
attr DEVICE get02-63Name fc7_tmin
attr DEVICE get02-64Name fc7_snow
attr DEVICE get02-65Name fc7_rrr
attr DEVICE get02-66Name fc7_rrp
attr DEVICE get02-66OExpr $val =~ s/,/./g;; $val;;
attr DEVICE get02-67Name fc7_snow_fall_limit
attr DEVICE get02-67OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-68Name fc7_sun_period
attr DEVICE get02-69Name fc7_thunderstorms
attr DEVICE get02-6Name fc1_rrp
attr DEVICE get02-70Name fc7_wind
attr DEVICE get02-71Name fc8_icon
attr DEVICE get02-72Name fc8_tmax
attr DEVICE get02-73Name fc8_tmin
attr DEVICE get02-74Name fc8_snow
attr DEVICE get02-75Name fc8_rrr
attr DEVICE get02-76Name fc8_rrp
attr DEVICE get02-77Name fc8_snow_fall_limit
attr DEVICE get02-77OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-78Name fc8_sun_period
attr DEVICE get02-79Name fc8_thunderstorms
attr DEVICE get02-7Name fc1_snow_fall_limit
attr DEVICE get02-7OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-80Name fc8_wind
attr DEVICE get02-81Name fc9_icon
attr DEVICE get02-82Name fc9_tmax
attr DEVICE get02-83Name fc9_tmin
attr DEVICE get02-84Name fc9_snow
attr DEVICE get02-85Name fc9_rrr
attr DEVICE get02-86Name fc9_rrp
attr DEVICE get02-87Name fc9_snow_fall_limit
attr DEVICE get02-87OExpr $val =~ s/\.//g;; $val;;
attr DEVICE get02-88Name fc9_sun_period
attr DEVICE get02-89Name fc9_thunderstorms
attr DEVICE get02-8Name fc1_sun_period
attr DEVICE get02-90Name fc9_wind
attr DEVICE get02-9Name fc1_thunderstorms
attr DEVICE get02Name Prognose
attr DEVICE get02Poll 1
attr DEVICE get02Regex "forecast-day-0"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.+">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-1"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-2"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-3"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-4"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-5"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-6"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-7"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</.*?\n.*?\n.*\n\n\n\n.*?"forecast-day-8"\n.*\n.*\n\n.*\n.*?src="(.*?)".*\n\n.*\n.*?"tmax">(.*?)°C.*\n.*?"tmin">(.*?)°C.*\n.*?"nschnee.">\n(.*?)</.*?\n.*\n\n.*\n.*?"rrr.+">\n(.*?)l?.*\n\n.*?"rrp.*">\n(.*?)%.*\n.*\n.*?sgrenze">\n(.*?)m.*\n.*\n.*?"sonne.*?">\n(.*?)h.*\n.*\n.*\n.*?"Gew.*?:.*?\n(.*?)%?</.*\n.*\n.*\n.*?"ff.*?".*?\n(.*?)</
attr DEVICE get02URL BERGFEXURLprognose/
attr DEVICE stateFormat condition bei temperature°C und chance_of_raining% Regenwahrscheinlichkeit
attr DEVICE model A_02n_bergfex_weather


Sollte auch für andere Bergfex-Länder funktionieren, wird bei Gelegenheit getestet und dann eingecheckt. Ich finde devStateIcons grundsätzlich nett, besonders, wenn sie kombiniert sind...

Bin mal gespannt, wann der erste wissen will, wieviel Schnee rund um das verrückte Kangaroo liegt (und sonstwo) bzw. wie er das auf dem einfachsten Weg rausbekommt 8) .

See you ;D
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Beta-User

Grummel, irgendwas paßt da noch nicht.
Das template scheint eigentlich zu funktionieren, die URL's werden sauber aufgebaut, soweit ich das erkennen kann. Aber dann läuft auf meinem Testsystem nach Absetzen der gets endlos die Uhr. Das letzte was im Log steht, ist die Anwendung der regex für die Ermittlng der Readinginhalte (aus der vermutlich ersten URL).
Muß ich mir noch genauer ansehen, evtl. wieder ein Kopier-Problem oä., wenn ich nicht klarkomme, gibts auch log-Auszüge (die habe ich grade nicht bei der Hand).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files