Ein virtueller Regensensor mit wetter.com und HTTPMOD

Begonnen von Tri, 17 August 2021, 15:54:09

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Das mit dem Logging könnte/sollte auch anders gehen (habe ich aber noch nicht getestet): https://forum.fhem.de/index.php?topic=14341.0

Weil laut dem ist aktuell statt Log eben Log3 "zu verwenden" ;)

Daher sollte eigentlich:


Log3($Device, 3, "Text")


Automatisch klappen, also wenn verbose 3 oder höher, dann wird das ausgegeben, ansonsten nicht.
Man kann die Ausgaben auch erst ab verbose 4 loggen:


Log3($Device, 4, "Text")


Zumindest verstehe ich das so.

Da ich aber nicht immer in meinen myUtils das $Device habe, habe ich einfach feste Logausgaben drin.
Manche werden dann nach erfolgreichem Test einfach auskommentiert, andere bleiben (wenn die nicht zu häufig passieren oder mir wichtig sind)...


Bzgl. Bewölkung, naja, wenn du mir die jetzt passende RegEx nennst :)

Ansonsten muss ich halt mal sehen, ob ich rausfinde was sich geändert hat, wobei ich das auch nur "geklaut" habe.
Ich habe ja "nur" die userReadings dazu geliefert 8)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ch.eick

#46
Zitat von: MadMax-FHEM am 16 August 2022, 11:37:55
Bzgl. Bewölkung, naja, wenn du mir die jetzt passende RegEx nennst :)

Ansonsten muss ich halt mal sehen, ob ich rausfinde was sich geändert hat, wobei ich das auch nur "geklaut" habe.
Ich habe ja "nur" die userReadings dazu geliefert 8)
Hallo Joachim,

hier als Ergänzung die Bewölkung und ein Vorschlag für die Regen Benennung.

attr Niederschlag reading08-1Name Regen-01
attr Niederschlag reading08-2Name Regen-02
attr Niederschlag reading08-3Name Regen-03
attr Niederschlag reading08-4Name Regen-04
attr Niederschlag reading08-5Name Regen-05
attr Niederschlag reading08-6Name Regen-06
attr Niederschlag reading08-7Name Regen-07
attr Niederschlag reading08-8Name Regen-08
attr Niederschlag reading08-9Name Regen-09
attr Niederschlag reading08Name Regen
attr Niederschlag reading08OMap #fff:0, #a6caf0:< 0.4 l/m²/h, #bfd4ff:< 0.4 l/m²/h, #fce4ec:< 0.4 l/m²/h(*), #6699ff:< 1.9 l/m²/h, #f9bad0:< 1.9 l/m²/h(*), #004ce5:< 8.1 l/m²/h, #f68db1:< 8.1 l/m²/h(*), #002673:< 35 l/m²/h, #f25f91:< 35 l/m²/h(*), #ffa800:< 150 l/m²/h, #ee3c79:< 150 l/m²/h(*), #e60000:> 150 l/m²/h #eb1561:> 150 l/m²/h(*)
attr Niederschlag reading08RegOpt g
attr Niederschlag reading08Regex <td.class=\"\[.colorcell.top.border..grey.bottom.border..grey.*\]\".style=\"background.color.(.*?)\;;\"><\/td>
attr Niederschlag reading09-1Name Wolken-01
attr Niederschlag reading09-2Name Wolken-02
attr Niederschlag reading09-3Name Wolken-03
attr Niederschlag reading09-4Name Wolken-04
attr Niederschlag reading09-5Name Wolken-05
attr Niederschlag reading09-6Name Wolken-06
attr Niederschlag reading09-7Name Wolken-07
attr Niederschlag reading09-8Name Wolken-08
attr Niederschlag reading09-9Name Wolken-09
attr Niederschlag reading09Name Wolken
attr Niederschlag reading09OMap #FFFFFF:0/8 wolkenlos,#EFEFEF:1/8 sonnig,#DFDFDF:2/8 heiter,#CFCFCF:3/8 leicht bewölkt,#BFBFBF:4/8 wolkig,#ADADAD:5/8 bewölkt,#A0A0A0:6/8 stark bewölkt,#8F8F8F:7/8 fast bedeckt,#808080:8/8 bedeckt
attr Niederschlag reading09RegOpt g
attr Niederschlag reading09Regex <td.class=\"text..small text..center tdbl tdbr.*\">\n.*\n.*style=\"background-color:.(.*?)\">

Bei der Bewölkung könnte man auch direkt auf die n/n gehen und somit das Farben Mapping vermeiden.
Als Rückmeldung kommt dann 0/8 , 1/8 , 2/8 , ...

<td.class=\"text..small text..center tdbl tdbr.*\">\n.*(\d\/\d)\n


Bei der Benennung der readings bin ich noch nicht so ganz zufrieden, da z.B. Wolken-01 wohl immer die aktuelle Stunde zum Abfragezeitpunkt ist.
Somit kann man das nicht so einfach aus einer Subroutine heraus mit einer Abfrage zu einer festen Zeit abrufen.
Das wird dann wohl auch der Grund für die Funktion in der myUtils sein. Das schau ich mir nochmal genauer an.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

#47
Hallo Christian,

muss ich mir mal anschauen.

Das mit Regenbenennung habe ich nicht verstanden.

Bzw. so wie ich den (meinen) Original-Code verstehe: es werden die Regenfelder ausgelesen, also die Farbwerte (daher wohl auch der Name feld-01...). Dieser Name ist (mir) egal.
Es passiert dann per Mapping eine Anpassung von Farbnummer zu Regenmenge, die steht dann in dern Readings feld-01...feld-022.

Die userReadings von mir triggern auf das feld-01 (was ja auch immer geändeet wird, sobald neue Daten kommen?).
Dann habe ich einfach geschaut wie viele Felder so eine Stunde sind und rufe damit die Sub auf.
Zurück kommt dann über eine "Mittlungsfunktion" ob eben Regen und wenn wie stark als text bzw. als Zahl (zur evtl. autom, Auswertung).

Der Sub übergibt man das Device (damit man die Werte für die Regenmittlung auslesen kann) und die Start-Feld-Nummer und die End-Feld-Nummer -> über diese Werte wird gemittelt und dann abhängig von entweder den Attributen oder eben der fixen Vorgaben im Code die Regenstärke "ermittelt" und entweder als Text (Mode: txt) zurückgegeben, damit dann lesbar oder als Zahl (num), damit man das auch automatisch auswerten kann/könnte (habe ich mir mal gedacht nutze ich aber noch nicht ;) )...

Es gibt dann eben neue Readings wo textuell und per Zahl die zu erwartende Regenmenge steht für aktuell, 1h und 2h (man kann sicher auch weiter gehen, einfach weitere Feld-Nummern usw.).


Bislang wurde die Bewölkung ja direkt als X/Y ausgelesen, leider funktioniert das RegEx nicht mehr.
Ich schaue mir deines mal an...
Brauche halt nur mal wieder Zeit...

EDIT: also doch mal schnell reingeklopft... Funktioniert wieder :) DANKE!

Hier das aktuelle RawDef (inkl. dem Mapping von X/Y -> wolkig etc.):

defmod wetter_com_NiederschlagFuerthInnenstadt HTTPMOD https://www.wetter.com/deutschland/fuerth-innenstadt/DE0002804012.html 600
attr wetter_com_NiederschlagFuerthInnenstadt userattr my_HighRainLimit my_LowRainLimit my_MediumRainLimit my_NoRainLimit
attr wetter_com_NiederschlagFuerthInnenstadt alias Niederschlag-Prognose Wetter.com
attr wetter_com_NiederschlagFuerthInnenstadt group Wetter
attr wetter_com_NiederschlagFuerthInnenstadt icon weather_rain_snow_heavy
attr wetter_com_NiederschlagFuerthInnenstadt my_HighRainLimit 10
attr wetter_com_NiederschlagFuerthInnenstadt my_LowRainLimit 3
attr wetter_com_NiederschlagFuerthInnenstadt my_MediumRainLimit 6
attr wetter_com_NiederschlagFuerthInnenstadt my_NoRainLimit 0.5
attr wetter_com_NiederschlagFuerthInnenstadt reading01Name regen
attr wetter_com_NiederschlagFuerthInnenstadt reading01Regex <span.id=\"nowcast-text\".class=\"portable-mb--\">\W*(.*)\W*</span>
attr wetter_com_NiederschlagFuerthInnenstadt reading02Name date
attr wetter_com_NiederschlagFuerthInnenstadt reading02Regex <div class=\"\[.forecast-navigation-grid.\]\">\W*<a.data-label=\"VHSTabTag_1\"\W*class=\"\[.is-active.\]\"\W*.*\W*.*\W*.*\W*.*\W*.*\W*<div>\W*(.*)\W*<\/div>
attr wetter_com_NiederschlagFuerthInnenstadt reading03Name wolken
attr wetter_com_NiederschlagFuerthInnenstadt reading03OMap 0/8:wolkenlos 1/8:wolkenlos,sonnig 2/8:sonnig,heiter 3/8:heiter,leicht bew\u00f6lkt 4/8:leicht bewölkt,wolkig 5/8:wolkig,bew\u00f6lkt 6/8:bewölkt,stark bew\u00f6lkt 7/8:stark bewölkt,fast bedeckt 8/8:bedeckt
attr wetter_com_NiederschlagFuerthInnenstadt reading03Regex <td.class=\"text..small text..center tdbl tdbr.*\">\n.*(\d\/\d)\n
attr wetter_com_NiederschlagFuerthInnenstadt reading07Name time
attr wetter_com_NiederschlagFuerthInnenstadt reading07Regex <td.class=\"\[.colorcell.top.border..grey.bottom.border..grey.left.border..grey.\]\".style=\"background.color.\X*?data-nowcastKey=\"3\">(.*?)<
attr wetter_com_NiederschlagFuerthInnenstadt reading08-1Name feld-01
attr wetter_com_NiederschlagFuerthInnenstadt reading08-2Name feld-02
attr wetter_com_NiederschlagFuerthInnenstadt reading08-3Name feld-03
attr wetter_com_NiederschlagFuerthInnenstadt reading08-4Name feld-04
attr wetter_com_NiederschlagFuerthInnenstadt reading08-5Name feld-05
attr wetter_com_NiederschlagFuerthInnenstadt reading08-6Name feld-06
attr wetter_com_NiederschlagFuerthInnenstadt reading08-7Name feld-07
attr wetter_com_NiederschlagFuerthInnenstadt reading08-8Name feld-08
attr wetter_com_NiederschlagFuerthInnenstadt reading08-9Name feld-09
attr wetter_com_NiederschlagFuerthInnenstadt reading08Name feld
attr wetter_com_NiederschlagFuerthInnenstadt reading08OMap #fff:0, #a6caf0:< 0.4 l/m²/h, #bfd4ff:< 0.4 l/m²/h, #fce4ec:< 0.4 l/m²/h(*), #6699ff:< 1.9 l/m²/h, #f9bad0:< 1.9 l/m²/h(*), #004ce5:< 8.1 l/m²/h, #f68db1:< 8.1 l/m²/h(*), #002673:< 35 l/m²/h, #f25f91:< 35 l/m²/h(*), #ffa800:< 150 l/m²/h, #ee3c79:< 150 l/m²/h(*), #e60000:> 150 l/m²/h #eb1561:> 150 l/m²/h(*)
attr wetter_com_NiederschlagFuerthInnenstadt reading08RegOpt g
attr wetter_com_NiederschlagFuerthInnenstadt reading08Regex <td.class=\"\[.colorcell.top.border..grey.bottom.border..grey.*\]\".style=\"background.color.(.*?)\;;\"><\/td>
attr wetter_com_NiederschlagFuerthInnenstadt room Balkon,Overview,Overview Ambient,Overview Weather
attr wetter_com_NiederschlagFuerthInnenstadt showBody 0
attr wetter_com_NiederschlagFuerthInnenstadt showError 1
attr wetter_com_NiederschlagFuerthInnenstadt showMatched 1
attr wetter_com_NiederschlagFuerthInnenstadt sortby 02
attr wetter_com_NiederschlagFuerthInnenstadt stateFormat date time\
</br>Bewölkung: wolken\
</br>Aktuell: Status\
</br>In 1h: Status1h\
</br>In 2h: Status2h\
</br>regen
attr wetter_com_NiederschlagFuerthInnenstadt timeout 5
attr wetter_com_NiederschlagFuerthInnenstadt userReadings Status:feld-01.* {my_userReadingsWetterCom("$name", 1, 7, "txt")},\
Status1h:feld-01.* {my_userReadingsWetterCom("$name", 8, 15, "txt")},\
Status2h:feld-01.* {my_userReadingsWetterCom("$name", 16, 21, "txt")},\
Status_num:feld-01.* {my_userReadingsWetterCom("$name", 1, 7, "num")},\
Status1h_num:feld-01.* {my_userReadingsWetterCom("$name", 8, 15, "num")},\
Status2h_num:feld-01.* {my_userReadingsWetterCom("$name", 16, 21, "num")}
attr wetter_com_NiederschlagFuerthInnenstadt verbose 0


Sieht bei mir in der Übersicht inkl. userReadings und stateFormat wie abgebildet aus...

Also für mich funktioniert es nun wieder so wie früher :)
Ich werde mal überlegen, wie ich das mache, dass ich auf ein NO_MATCH reagiere. notify und dann Aktion oder ein userReadings, das dann anzeigt, dass die Werte nicht "glaubwürdig" sind... Mal sehen. Dachte ja auch die ganze Zeit es würde noch funktionieren und hat es seit einigen Tagen doch nur teilweise/bedingt...

EDIT: noch nicht ganz. Beim Mapping von Wolken muss ich wohl noch mal ran. Aber habe das "damals" halt auch nur "geklaut" und jetzt schnell versucht anzupassen (war wohl zu spät gestern ;) ). Ich muss mir das noch mal anschauen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ch.eick

#48
Hallo Joachim,

Zitat von: MadMax-FHEM am 16 August 2022, 23:26:34
Das mit Regenbenennung habe ich nicht verstanden.
Das bezieht sich halt auf feld*, was mit Regen* sprechender wäre.

Zitat
Bislang wurde die Bewölkung ja direkt als X/Y ausgelesen, leider funktioniert das RegEx nicht mehr.

EDIT: also doch mal schnell reingeklopft... Funktioniert wieder :) DANKE!
Bei der Bewölkung liest Du nur das aktuellste Feld aus, jedoch gibt es da ebenfalls 24 Felder, also eins pro Stunde.
Deshalb wäre das mit den reading Namen ebenfalls übersichtlicher. In meinem Beispiel kommt dann pro Stunde die Bewölkung.

Bei der Bewölkung kommt auch direkt der Zahlenwert, dann könnte man das OMAP etwas sprechender gestalten,
also anstatt auf #FFFFFFF direkt auf 0/8 mappen.

Du hast da noch etwas durcheinander in Deinem OMAP, hierr mal das korrigierte attr

attr Niederschlag reading03OMap 0/8:wolkenlos, 1/8:sonnig, 2/8:heiter, 3/8:leicht bewölkt, 4/8:wolkig, 5/8:bewölkt, 6/8:stark bewölkt, 7/8:fast bedeckt, 8/8:bedeckt


Ich meine das wäre beim Regen genau so, aber bisher hat es noch nicht geregnet.

Zitat
Die userReadings von mir triggern auf das feld-01 (was ja auch immer geändeet wird, sobald neue Daten kommen?).
Dann habe ich einfach geschaut wie viele Felder so eine Stunde sind und rufe damit die Sub auf.
Zurück kommt dann über eine "Mittlungsfunktion" ob eben Regen und wenn wie stark als text bzw. als Zahl (zur evtl. autom, Auswertung).

Der Sub übergibt man das Device (damit man die Werte für die Regenmittlung auslesen kann) und die Start-Feld-Nummer und die End-Feld-Nummer -> über diese Werte wird gemittelt und dann abhängig von entweder den Attributen oder eben der fixen Vorgaben im Code die Regenstärke "ermittelt" und entweder als Text (Mode: txt) zurückgegeben, damit dann lesbar oder als Zahl (num), damit man das auch automatisch auswerten kann/könnte (habe ich mir mal gedacht nutze ich aber noch nicht ;) )...

Es gibt dann eben neue Readings wo textuell und per Zahl die zu erwartende Regenmenge steht für aktuell, 1h und 2h (man kann sicher auch weiter gehen, einfach weitere Feld-Nummern usw.).
Das mit der Mittlung kommt mir etwas komisch vor, da Du über mehrere Stunden mittels. Es kommt pro Stunde eine Prognose zurück und Du fasst z.B. 1-7 zusammen.
Wie ist denn die Qualität dieser Zusammenfassung?
Passt die Aussage dann besser?
Ich persönlich mag ja den empirischen Ansatz, wenn es der Realität näher kommt :-)

EDIT: Ich habe mir die wetter.com Seite im Browser nochmal angeschaut und dort gesehen, dass es für Regen noch eine detailiertere Darstellung gibt.
   Das Parsen scheint dann diesen Bereich zu nehmen, was dann mit der Durchschnittsbildung und 1h bzw. 2h besser passen würde. Das müssten dann auch 23 Felder sein. (Bild 1)
   Die Regenmengen, die gemeint habe findet man unter Diagramm|Niederschlagsmengen (Bild 2)
   Im DWD Modul werden ja ebenfalls R101 Werte geliefert, die jedoch als Warscheinlichkeiten in % angegeben werden.

   Nun stellt sich die Frage, welcher Wetterdienst liegt mit seiner Prognose besser. Gibt es da von Wetter.com schon eine getestete Aussage?

EDIT 09:55
   Die Prognose sagt
Zitat
Regen-01   < 1.9 l/m²/h  2022-08-17 09:53:13
Und tatsächlich, es nieselt etwas :-)

  Durch die RainLimit Schwellwerte und die Durchschnittsbildung wird die Aussage "In 1h: kein Niederschlag" generiert. Dies finde ich vollkommen okay und
  man hat noch etwas die Möglichkeit einer "gefühlten" Einstellung.


VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

#49
Hallo Christian,

naja wie geschrieben (oder auch nicht ;)  ) nutze ich das mehr als "Spielerei".

Für zuverlässig und Markise habe ich einen Regensensor :)

EDIT: ich sass auch schon oft draussen und es sollte regnen, blieb aber trocken / umgekehrt genauso ;)

Ja, eigentlich sollte (und tut er bei mir auch wieder) die feinere Übersicht mit mehreren Werten pro Stunde.
Ich habe einfach mal geschätzt bei der Übergabe der Parameter der userReadings ;)

Aber man hat ja diverse Freiheitsgrade: Start/Ende, also wie viele Felder sollen gemittelt werden und was als ReadingText/Name angegeben wird, also 1h 2h usw. Man kann ja (theoretisch) "beliebig" viele userReadings (mit derselben Sub 8) ) anlegen lassen und so fein machen wie man möchte. Dann gibt es ja noch (die aktuell ungenutzen) Attribute oder eben im Code der Sub was (also welche "Mittel-Menge") denn nun Regen bzw. wie viel Regen bedeutet...

Da kann sich ja jeder selber "austoben" und müsste noch nicht mal die Sub anpassen :)


Ja, das "Durcheinander" beim Mapping habe ich gestern noch bemerkt oder war es heute morgen? Aber war wohl zu spät ;)

Gut, ob das nun Regen oder feld heißt ;)

Ich werde wohl (erst mal) auf feld bleiben...
...aber es ist ja nicht umsonst hier eingestellt: da darf jeder gerne machen was ihm hilft/gefällt...

EDIT: hmm, ob nun direkt auf die Regenmengen oder über die Farbtafeln. Ist mir eigentlich egal ;) :D Hauptsache es funktioniert 8) Aber wenn der "Umbau" besser ist oder einfacher oder einfach nur da ist und ich Zeit/Lust habe, nehme ich gerne alles ;) Aber da es ja mehr "Spielerei" als wirklich ernste Wettervorhersage (ich habe auf meiner Wetterübersicht mehrere, also nicht nur das / Aber es ist halt schön, übersichtlich und auch sehr "regional", wenn auch nicht immer 100%ig stimmig ;)  )...

Danke noch mal!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ch.eick

Hey,
die Regionalität wäre genau das was ich suche und zwei Stunden wäre auch recht gut.

Ich suche noch nach einer zuverlässigeren Regen warnung für den aktuellen Tag, damit ich die Leistungsprognose der PV Anlage noch verbessern kann.
Bei tatsächlichem Regen kommt es da zu stärkeren Leistungseinbrüchen :-) und manchmal habe ich MaxSOC für den Speicher limitiert, was ich dann bei
Regenprognose einfach raus nehmen würde, um vor dem regen noch den Speicher mehr zu füllen.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

#51
Regionalität hängt wohl von der Region ab ;)

Bei mir ist es schon sehr "eng", weil es gibt Fürth Innenstadt und Fürth Umland usw. also schon recht überschaubar...

Wie geschrieben stimmt Regen nur bedingt, Bewölkung passt recht gut (mein pers. Eindruck).

Was es noch gibt ist das "Abgreifen" von Wetterstationen in der Umgebung...
...ok gab (außer man hat selber eine Station oder/und einen Key): https://wiki.fhem.de/wiki/Wetter_und_Wettervorhersagen#Wetter_von_Weather_Underground

https://forum.fhem.de/index.php?topic=102497.0 Buienradar soll noch recht gut sein, weiß aber nicht wie (gut/wo) das für Deutschland geht...

EDIT:
Oder einfach sowas basteln ;) : https://forum.fhem.de/index.php/topic,121629.msg1163265.html#msg1163265
Ist aber nur zuverlässig für Regenbeginn. Regenende, da ohne Heizung, eben je nach Wetter/Wärme (Sonne) eher später als tatsächlich...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ch.eick

#52
EDIT 20220818 15:50: Jetzt auch mit WindGeschwindigkeit und Version im comment
EDIT 20220818 13:00: Die erweiterte Sub hat noch gefehlt. Ich habe es weiter unten noch eingefügt

Zitat von: MadMax-FHEM am 17 August 2022, 13:17:44
Regionalität hängt wohl von der Region ab ;)

Bei mir ist es schon sehr "eng", weil es gibt Fürth Innenstadt und Fürth Umland usw. also schon recht überschaubar...

Wie geschrieben stimmt Regen nur bedingt, Bewölkung passt recht gut (mein pers. Eindruck).
Wenn man auf die Webseite geht, ist die Aktualisierung schon ziemlich gut, das scheint wirklich nach dem Wetter RADAR zu gehen.

Hier kommt mal meine überarbeitete Version:
- Deine Abfrage geht auf ein 5 Minuten Raster und Du bildest den Durchschnitt über eine wählbare Anzahl dieser 5 Minuten Blöcke.
- Ich habe den Niederschlag noch als Prognose für 24 h (rollierend) mit rein genommen
- Die Bewölkung geht auch über 24 h (rollierend)
- Die Passende Startzeit für *-NN habe ich noch nicht drin, damit man das in einer Sub berücksichtigen kann
- Durch reading*AutoNumLen 2 kann man sich einige Attribute für die Namen sparen
- Durch reading*DeleteIfUnmatched 1 dürfte das Problem gelöst sein, wenn sich mal der Seitencode ändert. Es werden dann unmatched Readings gelöscht.
- Das OMAP ist nochmal korrigiert
- Die Regex sind ebenfalls korrigiert und gehen jetzt exakter auf die Zahlen, auch mit Nachkommastellen
- Mit einem get kann man manuell seine Standorte abfragen
- Wenn man das Interval 600 auf 0 setzt kann man mit dem get auch die Abfrage mit anderen Devices synchronisieren
- Achtung auch die event-on* sind noch dazu gekommen, damit es nicht so viele Events gibt.
- Bei der Sub gibt es auch einen Parameter mehr, damit man die reading Namen mit übergeben kann

defmod Niederschlag HTTPMOD https://www.wetter.com/deutschland/< hier noch Deinen Standort eingeben >.html 600
attr Niederschlag userattr my_HighRainLimit my_LowRainLimit my_MediumRainLimit my_NoRainLimit
attr Niederschlag DbLogExclude .*
attr Niederschlag alias Niederschlag-Prognose Wetter.com
attr Niederschlag comment Version: 20220818 15:50
attr Niederschlag event-on-change-reading Regen5M_.*, Status.*
attr Niederschlag event-on-update-reading Regen5M-01
attr Niederschlag get01Name < hier noch Deinen Standort als Namen eingeben >
attr Niederschlag get01URL https://www.wetter.com/deutschland/< hier noch Deinen Standort eingeben >.html
attr Niederschlag icon weather_rain_snow_heavy
attr Niederschlag my_HighRainLimit 10
attr Niederschlag my_LowRainLimit 3
attr Niederschlag my_MediumRainLimit 6
attr Niederschlag my_NoRainLimit 0.5
attr Niederschlag reading01Name Regen5M_Text
attr Niederschlag reading01Regex <span.id=\"nowcast-text\".class=\"portable-mb--\">\W*(.*)\W*</span>
attr Niederschlag reading02Name Regen5M_Date
attr Niederschlag reading02Regex <div class=\"\[.forecast-navigation-grid.\]\">\W*<a.data-label=\"VHSTabTag_1\"\W*class=\"\[.is-active.\]\"\W*.*\W*.*\W*.*\W*.*\W*.*\W*<div>\W*(.*)\W*<\/div>
attr Niederschlag reading03Name Wolken_akt
attr Niederschlag reading03OMap 0/8:wolkenlos, 1/8:sonnig, 2/8:heiter, 3/8:leicht bewölkt, 4/8:wolkig, 5/8:bewölkt, 6/8:stark bewölkt, 7/8:fast bedeckt, 8/8:bedeckt
attr Niederschlag reading03Regex <td.class=\"text..small text..center tdbl tdbr.*\">\n.*(\d\/\d)\n
attr Niederschlag reading07Name Regen5M_Time
attr Niederschlag reading07Regex <td.class=\"\[.colorcell.top.border..grey.bottom.border..grey.left.border..grey.\]\".style=\"background.color.\X*?data-nowcastKey=\"3\">(.*?)<
attr Niederschlag reading08AutoNumLen 2
attr Niederschlag reading08DeleteIfUnmatched 1
attr Niederschlag reading08Name Regen5M
attr Niederschlag reading08OMap #fff:0, #a6caf0:< 0.4 l/m²/h, #bfd4ff:< 0.4 l/m²/h, #fce4ec:< 0.4 l/m²/h(*), #6699ff:< 1.9 l/m²/h, #f9bad0:< 1.9 l/m²/h(*), #004ce5:< 8.1 l/m²/h, #f68db1:< 8.1 l/m²/h(*), #002673:< 35 l/m²/h, #f25f91:< 35 l/m²/h(*), #ffa800:< 150 l/m²/h, #ee3c79:< 150 l/m²/h(*), #e60000:> 150 l/m²/h #eb1561:> 150 l/m²/h(*)
attr Niederschlag reading08RegOpt g
attr Niederschlag reading08Regex <td.class=\"\[.colorcell.top.border..grey.bottom.border..grey.*\]\".style=\"background.color.(.*?)\;;\"><\/td>
attr Niederschlag reading09AutoNumLen 2
attr Niederschlag reading09DeleteIfUnmatched 1
attr Niederschlag reading09Name Niederschlagsmenge
attr Niederschlag reading09RegOpt g
attr Niederschlag reading09Regex <td.class=\"text..small text..center.tdbl.tdbr.h70\">\n.* ([0-9]{1,}.*[0-9]{0,2})\n.*<div.class=\"bg..blue.dark\"
attr Niederschlag reading10AutoNumLen 2
attr Niederschlag reading10DeleteIfUnmatched 1
attr Niederschlag reading10Name Wolken
attr Niederschlag reading10OMap 0/8:0/8 wolkenlos, 1/8:1/8 sonnig, 2/8:2/8 heiter, 3/8:3/8 leicht bewölkt, 4/8:4/8 wolkig, 5/8:5/8 bewölkt, 6/8:6/8 stark bewölkt, 7/8:7/8 fast bedeckt, 8/8:8/8 bedeckt
attr Niederschlag reading10RegOpt g
attr Niederschlag reading10Regex <td.class=\"text..small text..center tdbl tdbr.h36\">\n.*(\d\/\d)\n
attr Niederschlag reading11AutoNumLen 2
attr Niederschlag reading11DeleteIfUnmatched 1
attr Niederschlag reading11Name WindGeschwindigkeit
attr Niederschlag reading11RegOpt g
attr Niederschlag reading11Regex <td class="relative text--small text--center tdbl tdbr h70">\n.*\n.* ([0-9]*)
attr Niederschlag room Informationen->Wetter,Rollos
attr Niederschlag showBody 0
attr Niederschlag showError 1
attr Niederschlag showMatched 0
attr Niederschlag sortby 03
attr Niederschlag stateFormat Regen5M_Date Regen5M_Time\
</br>Bewölkung: Wolken_akt\
</br>Aktuell: Status_akt\
</br>In 1h: Status1h\
</br>In 2h: Status2h\
</br>Regen5M_Text
attr Niederschlag userReadings Status_akt:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 1, 7, "txt")},\
Status_akt_num:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 1, 7, "num")},\
Status1h:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 8, 15, "txt")},\
Status1h_num:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 8, 15, "num")},\
Status2h:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 16, 21, "txt")},\
Status2h_num:Regen5M-01.* {my_userReadingsWetterCom("$name","Regen5M", 16, 21, "num")}
attr Niederschlag verbose 0

Und hier noch die geänderte Subfunktion

############################################################################################################
#### Niederschlag Prognose

sub my_userReadingsWetterCom($$$$$)
{
  my ($Device, $Name, $Start, $End, $Mode) = @_;
  my $LoopStart = $Start;
  my $ReturnTxt = "kein Niederschlag";
  my $ReturnNum = 0;
  my $RainVolume = 0;
  my $RainVolumeAvg = 0;
  my $FieldNum = "01";
  my $NoRainLimit = AttrVal($Device, "my_NoRainLimit", 0);
  my $LowRainLimit = AttrVal($Device, "my_LowRainLimit", 2);
  my $MediumRainLimit = AttrVal($Device, "my_MediumRainLimit", 5);
  my $HighRainLimit = AttrVal($Device, "my_HighRainLimit", 10);

#  Log3(undef, 1, "my_userReadingsWetterCom    Start: $Start      End: $End");

  while($LoopStart <= $End)
  {
    $FieldNum = sprintf("%02u", $LoopStart);
#    Log3(undef, 1, "my_userReadingsWetterCom    Start: $LoopStart      FieldNum: $FieldNum");
    $RainVolume += ReadingsNum($Device,"$Name-$FieldNum",0);
    $LoopStart++;
  }
  $RainVolumeAvg = $RainVolume / ($End - $Start);
#  Log3(undef, 1, "my_userReadingsWetterCom    RainVolume: $RainVolume      RainVolumeAvg: $RainVolumeAvg     NoRainLimit: $NoRainLimit     LowRainLimit: $LowRainLimit    MediumRainLimit: $MediumRainLimit    HighRainLimit: $HighRainLimit");

  if($RainVolumeAvg > $HighRainLimit)
  {
    $ReturnTxt = "sehr starker Niederschlag";
    $ReturnNum = 5;
#    Log3(undef, 1, "my_userReadingsWetterCom    Sehr starker Niederschlag     ReturnTxt: $ReturnTxt");
  }
  elsif($RainVolumeAvg > $MediumRainLimit)
  {
    $ReturnTxt = "starker Niederschlag";
    $ReturnNum = 4;
#    Log3(undef, 1, "my_userReadingsWetterCom    Starker Niederschlag     ReturnTxt: $ReturnTxt");
  }
  elsif($RainVolumeAvg > $LowRainLimit)
  {
    $ReturnTxt = "Niederschlag";
    $ReturnNum = 3;
#    Log3(undef, 1, "my_userReadingsWetterCom    Niederschlag      ReturnTxt: $ReturnTxt");
  }
  elsif($RainVolumeAvg > $NoRainLimit)
  {
    $ReturnTxt = "leichter Niederschlag";
    $ReturnNum = 2;
#    Log3(undef, 1, "my_userReadingsWetterCom    Leichter Niederschlag      ReturnTxt: $ReturnTxt");
  }
  elsif($RainVolumeAvg > 0)
  {
    $ReturnTxt = "Nieseln";
    $ReturnNum = 1;
  }

  if($Mode eq "txt")
  {
    return $ReturnTxt;
  }
  else
  {
    return $ReturnNum;
  }
};


Jetzt beginnt dann mal das Beobachten, ob die Regenvorhersage rechtzeitig kommt und mit den Leistungseinbrüchen der PV-Anlage zusammen passt.

Zitat
Was es noch gibt ist das "Abgreifen" von Wetterstationen in der Umgebung...
...ok gab (außer man hat selber eine Station oder/und einen Key): https://wiki.fhem.de/wiki/Wetter_und_Wettervorhersagen#Wetter_von_Weather_Underground
Bei wunderground hole ich mir die aktuelle Strahlungsintensität von drei Stationen in meiner Nähe. Dazu habe ich ein DOIF, dass mit die Brightness als Durchschnitt berechnet, auch wenn
mal eine Station ausfallen sollte. Das passt super für die Beschattung mit den Rollos.

Zitat
https://forum.fhem.de/index.php?topic=102497.0 Buienradar soll noch recht gut sein, weiß aber nicht wie (gut/wo) das für Deutschland geht...
Das schau ich mir dann auch mal an

Zitat
EDIT:
Oder einfach sowas basteln ;) : https://forum.fhem.de/index.php/topic,121629.msg1163265.html#msg1163265
Ist aber nur zuverlässig für Regenbeginn. Regenende, da ohne Heizung, eben je nach Wetter/Wärme (Sonne) eher später als tatsächlich...

Ein Regen, der gerade beginnt hilft mir nicht so wirklich weiter, denn dann habe ich keine Zeit mehr den Hausspeicher weiter zu laden :-(
Das ist für mich besonders wichtig, wenn überraschend eine Regenfront rein kommt, denn die ist oft in der Prognose vom DWD nicht erkennbar.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

#53
Der zweite Test war heute auch okay, Regen wurde angekündigt und tatsächlich war es auch so :-)
Bei der Leistung der PV-Anlage kann man die Delle ab 9:00 Uhr auch gut sehen.
Das hellgrüne ist die Prognose des DWD basierend auf stündlichen Werten.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

#54
Schön, wenn es (für dich) funktioniert...

Allerdings stimmt es bei mir grad nicht ;)


Do 18.08. 12:15
Bewölkung: stark bewölkt
Aktuell: leichter Niederschlag
In 1h: kein Niederschlag
In 2h: kein Niederschlag


Aber der Regensensor sagt: trocken und auch das Auge erkennt keine Feuchtigkeit ;)

Aber vielleicht kommt es ja noch...
EDIT: der aktuell "angezeigte" Regen ist ja erst in feld-06 und feld-07. Dauert also noch ein paar Minuten bis "jetzt ist" ;)

Ich habe aber noch nicht alle Änderungen übernommen, bin noch auf meinem letzten Stand...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

plin

Hallo Leute,

könnt Ihr bitte mal konstistente Scripte/Definitionen posten (oder diese im 1. Post aktuell halten oder einen Wiki-Artikel anlegen).

Ich habe mit Christians aktueller FHEM-Definition angefangen, sein 'my_userReadingsWetterCom' benötigt aber 5 Parameter. Die Subroutine finde ich nirgendwo.

Ich bin dann auf die Version von Joachim gewechselt, da habe ich zumindest eine passende defmod/sub-Kombi.

Ciao, Peter
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB

ch.eick

Zitat von: plin am 18 August 2022, 13:10:49
Hallo Leute,

könnt Ihr bitte mal konstistente Scripte/Definitionen posten (oder diese im 1. Post aktuell halten oder einen Wiki-Artikel anlegen).

Ich habe mit Christians aktueller FHEM-Definition angefangen, sein 'my_userReadingsWetterCom' benötigt aber 5 Parameter. Die Subroutine finde ich nirgendwo.

Ich bin dann auf die Version von Joachim gewechselt, da habe ich zumindest eine passende defmod/sub-Kombi.

Ciao, Peter
Sorry, Peter,
das war mein Fehler, ich habe noch den Readings Namen mit in die Funktion übergeben.
Ich stell es in meinem Post noch rein, da momentan noch Bewegung drin ist. Wenn Joachim meine Änderungen gefallen, dann könnte man es zusammen legen.

VG
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

MadMax-FHEM

Was heißt gefallen ;)

Den Readingnamen mit zu übergeben lässt zumindest die Möglichkeit offen mit anderen Namen zu arbeiten...

Leider weiß ich noch nicht bis wann ich dazu komme die anderen Anpassungen anzusehen (ist ja immer noch "nur" "Spielerei" ;)  und aktuell macht es wie vorher und das reicht[e] mir ja)...
...bzw. muss man das ja nicht von mir abhängig machen.

Die Version von Christian kann doch alles was meine Version auch kann/macht das ja gleich?
Und halt noch mehr :)

Allerdings wird das mit dem ersten Post schwierig, da von dem TE lange nichts mehr kam...
...und man ja keinen fremden Post/Thread bearbeiten kann.

Daher wohl entweder von hier einen neuen Thread mit im ersten Post (immer [wobei was ist schon immer]) aktueller Version und gegenseitig verlinken...
...oder Wiki.

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ch.eick

Zitat von: MadMax-FHEM am 18 August 2022, 13:34:46
Was heißt gefallen ;)

Den Readingnamen mit zu übergeben lässt zumindest die Möglichkeit offen mit anderen Namen zu arbeiten...
Ich habe es dann hier um die Sub noch ergänzt.
Achtung auch die event-on* sind noch dazu gekommen, damit es nicht so viele Events gibt. Mit der 5 Minuten Aktualisierung würde man ansonsten überschwemmt werden.
Also bitte einfach mal überlegen, welche Events man benötigt.
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

plin

Ich suche gerade den nutzen für mich. Meine Markise interessiert sich nicht nur für Regen, sondern auch für Sturm. Die Windgeschwindigkeit ist bei wetter.com ja auch verfügbar. Dann würde noch ein weiterer Aspekt abgedeckt.
FHEM1 (Main) Raspi4 mit CUL, Homematic, SDUINO 433/OOK, zentrale Steuerung
FHEM2 (Keller) x86 mit CUL/hmland, IP-basierte Module
FHEM3 (Erdgeschoss) Raspi2 mit SDUINO 868/GFSK
FHEM4 (Hausanschlussraum), USV und OBIS-Modul
FHEM5 (Docker) mit FHEM2FHEM, InfluxDB