HTTPMOD - donnerwetter.de Globalstrahlung

Begonnen von ch.eick, 23 März 2022, 17:31:19

Vorheriges Thema - Nächstes Thema

ch.eick

Ich habe das mal hier ausgelagert, da ich denke, dass es für alle Photovoltaik Anwender interessant ist.

Zitat von: timtom2000 am 21 März 2022, 23:26:20
Hallo,

ich stehe vor dem Problem, dass ich Inhalte folgender Webseite auslesen möchte (konkret die Werte der Globalstrahlung):
https://calc.donnerwetter.de/globalstrahlung/?d=1646089200000&zc=80333

Die Verwendung von HTTPMOD funktioniert grundsätzlich, mit Regex komme ich auch so weit klar, nur bei o.g. Seite werden die konkreten Daten offensichtlich über JavaScript generiert, so wie ich das verstehe. Wenn ich mir den Quelltext der Seite im Browser anzeigen lassen stehen die Werte nicht drin, deswegen kann HTTPMOD auch nichts finden.

Kennt jemand einen Trick, wie ich trotzdem an die Daten komme? Viell. irgendwie zwischenspeichern/exportieren und dann parsen?
Mit dem Modul des DWD kannst Du bei einigen Stationen auch rad1h Werte bekommen und das dann auch mit Prognose, was ich für meine PV-Leistungs Prognose verwende.

Hier das HTTPMOD für Donnerwetter, das Datum kann als Argument mit gegeben werden. Wenn das Datum fehlt wird der aktuelle tag verwendet.
Die gewünschte PLZ muss bitte im Attribut gesetzt werden, die ändert sich ja auch nicht so häufig.

get fc0 holt den Forecast für heute und morgen
get fc1 holt den Forecast nur für morgen

set fcx yyyy-mm-tt fragt den Forecast für das gewählte Datum an

Wenn beim fcx kein Forecast zu finden ist wird ein Error reading mit der Meldung "Kein Forecast für fcx gefunden" erzeugt, das bei einer weiteren erfolgreichen Abfrage wieder gelöscht wird.


defmod Donnerwetter HTTPMOD none 0
attr Donnerwetter DbLogExclude .*
attr Donnerwetter alias Donnerwetter
attr Donnerwetter comment Version: 2022-03-25 09:00:00\
Global- , Direkt- und Indirektstrahlung in kWh/m²
attr Donnerwetter enableControlSet 0
attr Donnerwetter get01-10Name fc0_08_Temperatur
attr Donnerwetter get01-11Name fc0_09_Date
attr Donnerwetter get01-12Name fc0_09_Global
attr Donnerwetter get01-13Name fc0_09_Direkt
attr Donnerwetter get01-14Name fc0_09_Indirekt
attr Donnerwetter get01-15Name fc0_09_Temperatur
attr Donnerwetter get01-16Name fc0_10_Date
attr Donnerwetter get01-17Name fc0_10_Global
attr Donnerwetter get01-18Name fc0_10_Direkt
attr Donnerwetter get01-19Name fc0_10_Indirekt
attr Donnerwetter get01-1Name fc0_07_Date
attr Donnerwetter get01-20Name fc0_10_Temperatur
attr Donnerwetter get01-21Name fc0_11_Date
attr Donnerwetter get01-22Name fc0_11_Global
attr Donnerwetter get01-23Name fc0_11_Direkt
attr Donnerwetter get01-24Name fc0_11_Indirekt
attr Donnerwetter get01-25Name fc0_11_Temperatur
attr Donnerwetter get01-26Name fc0_12_Date
attr Donnerwetter get01-27Name fc0_12_Global
attr Donnerwetter get01-28Name fc0_12_Direkt
attr Donnerwetter get01-29Name fc0_12_Indirekt
attr Donnerwetter get01-2Name fc0_07_Global
attr Donnerwetter get01-30Name fc0_12_Temperatur
attr Donnerwetter get01-31Name fc0_13_Date
attr Donnerwetter get01-32Name fc0_13_Global
attr Donnerwetter get01-33Name fc0_13_Direkt
attr Donnerwetter get01-34Name fc0_13_Indirekt
attr Donnerwetter get01-35Name fc0_13_Temperatur
attr Donnerwetter get01-36Name fc0_14_Date
attr Donnerwetter get01-37Name fc0_14_Global
attr Donnerwetter get01-38Name fc0_14_Direkt
attr Donnerwetter get01-39Name fc0_14_Indirekt
attr Donnerwetter get01-3Name fc0_07_Direkt
attr Donnerwetter get01-40Name fc0_14_Temperatur
attr Donnerwetter get01-41Name fc0_15_Date
attr Donnerwetter get01-42Name fc0_15_Global
attr Donnerwetter get01-43Name fc0_15_Direkt
attr Donnerwetter get01-44Name fc0_15_Indirekt
attr Donnerwetter get01-45Name fc0_15_Temperatur
attr Donnerwetter get01-46Name fc0_16_Date
attr Donnerwetter get01-47Name fc0_16_Global
attr Donnerwetter get01-48Name fc0_16_Direkt
attr Donnerwetter get01-49Name fc0_16_Indirekt
attr Donnerwetter get01-4Name fc0_07_Indirekt
attr Donnerwetter get01-50Name fc0_16_Temperatur
attr Donnerwetter get01-51Name fc0_17_Date
attr Donnerwetter get01-52Name fc0_17_Global
attr Donnerwetter get01-53Name fc0_17_Direkt
attr Donnerwetter get01-54Name fc0_17_Indirekt
attr Donnerwetter get01-55Name fc0_17_Temperatur
attr Donnerwetter get01-56Name fc0_18_Date
attr Donnerwetter get01-57Name fc0_18_Global
attr Donnerwetter get01-58Name fc0_18_Direkt
attr Donnerwetter get01-59Name fc0_18_Indirekt
attr Donnerwetter get01-5Name fc0_07_Temperatur
attr Donnerwetter get01-60Name fc0_18_Temperatur
attr Donnerwetter get01-6Name fc0_08_Date
attr Donnerwetter get01-7Name fc0_08_Global
attr Donnerwetter get01-8Name fc0_08_Direkt
attr Donnerwetter get01-9Name fc0_08_Indirekt
attr Donnerwetter get01CheckAllReadings 1
attr Donnerwetter get01DeleteIfUnmatched 1
attr Donnerwetter get01FollowGet fc1
attr Donnerwetter get01Name fc0
attr Donnerwetter get01RegOpt g
attr Donnerwetter get01Regex (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})<.strong><.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell." style=."text-align:right;;.">(-?\d*)
attr Donnerwetter get01URL https://calc.donnerwetter.de/cgi-bin/globalrad/get_globalrad.py/?zip_code=%ZIP_CODE%&date=%DATE_0%
attr Donnerwetter get02-10Name fc1_08_Temperatur
attr Donnerwetter get02-11Name fc1_09_Date
attr Donnerwetter get02-12Name fc1_09_Global
attr Donnerwetter get02-13Name fc1_09_Direkt
attr Donnerwetter get02-14Name fc1_09_Indirekt
attr Donnerwetter get02-15Name fc1_09_Temperatur
attr Donnerwetter get02-16Name fc1_10_Date
attr Donnerwetter get02-17Name fc1_10_Global
attr Donnerwetter get02-18Name fc1_10_Direkt
attr Donnerwetter get02-19Name fc1_10_Indirekt
attr Donnerwetter get02-1Name fc1_07_Date
attr Donnerwetter get02-20Name fc1_10_Temperatur
attr Donnerwetter get02-21Name fc1_11_Date
attr Donnerwetter get02-22Name fc1_11_Global
attr Donnerwetter get02-23Name fc1_11_Direkt
attr Donnerwetter get02-24Name fc1_11_Indirekt
attr Donnerwetter get02-25Name fc1_11_Temperatur
attr Donnerwetter get02-26Name fc1_12_Date
attr Donnerwetter get02-27Name fc1_12_Global
attr Donnerwetter get02-28Name fc1_12_Direkt
attr Donnerwetter get02-29Name fc1_12_Indirekt
attr Donnerwetter get02-2Name fc1_07_Global
attr Donnerwetter get02-30Name fc1_12_Temperatur
attr Donnerwetter get02-31Name fc1_13_Date
attr Donnerwetter get02-32Name fc1_13_Global
attr Donnerwetter get02-33Name fc1_13_Direkt
attr Donnerwetter get02-34Name fc1_13_Indirekt
attr Donnerwetter get02-35Name fc1_13_Temperatur
attr Donnerwetter get02-36Name fc1_14_Date
attr Donnerwetter get02-37Name fc1_14_Global
attr Donnerwetter get02-38Name fc1_14_Direkt
attr Donnerwetter get02-39Name fc1_14_Indirekt
attr Donnerwetter get02-3Name fc1_07_Direkt
attr Donnerwetter get02-40Name fc1_14_Temperatur
attr Donnerwetter get02-41Name fc1_15_Date
attr Donnerwetter get02-42Name fc1_15_Global
attr Donnerwetter get02-43Name fc1_15_Direkt
attr Donnerwetter get02-44Name fc1_15_Indirekt
attr Donnerwetter get02-45Name fc1_15_Temperatur
attr Donnerwetter get02-46Name fc1_16_Date
attr Donnerwetter get02-47Name fc1_16_Global
attr Donnerwetter get02-48Name fc1_16_Direkt
attr Donnerwetter get02-49Name fc1_16_Indirekt
attr Donnerwetter get02-4Name fc1_07_Indirekt
attr Donnerwetter get02-50Name fc1_16_Temperatur
attr Donnerwetter get02-51Name fc1_17_Date
attr Donnerwetter get02-52Name fc1_17_Global
attr Donnerwetter get02-53Name fc1_17_Direkt
attr Donnerwetter get02-54Name fc1_17_Indirekt
attr Donnerwetter get02-55Name fc1_17_Temperatur
attr Donnerwetter get02-56Name fc1_18_Date
attr Donnerwetter get02-57Name fc1_18_Global
attr Donnerwetter get02-58Name fc1_18_Direkt
attr Donnerwetter get02-59Name fc1_18_Indirekt
attr Donnerwetter get02-5Name fc1_07_Temperatur
attr Donnerwetter get02-60Name fc1_18_Temperatur
attr Donnerwetter get02-6Name fc1_08_Date
attr Donnerwetter get02-7Name fc1_08_Global
attr Donnerwetter get02-8Name fc1_08_Direkt
attr Donnerwetter get02-9Name fc1_08_Indirekt
attr Donnerwetter get02CheckAllReadings 1
attr Donnerwetter get02DeleteIfUnmatched 1
attr Donnerwetter get02Name fc1
attr Donnerwetter get02RegOpt g
attr Donnerwetter get02Regex (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})<.strong><.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell." style=."text-align:right;;.">(-?\d*)
attr Donnerwetter get02URL https://calc.donnerwetter.de/cgi-bin/globalrad/get_globalrad.py/?zip_code=%ZIP_CODE%&date=%DATE_1%
attr Donnerwetter icon weather_sunrise
attr Donnerwetter reading01JSON zip_code
attr Donnerwetter reading01Name zip_code
attr Donnerwetter reading02JSON rad_sum
attr Donnerwetter reading02Name rad_sum
attr Donnerwetter reading04JSON crds_0
attr Donnerwetter reading04Name longitude
attr Donnerwetter reading05JSON crds_1
attr Donnerwetter reading05Name latitude
attr Donnerwetter reading06Name Error
attr Donnerwetter reading06OExpr {fhem("deletereading Donnerwetter fcx_.*");; return "Kein Forecast für fcx gefunden"}
attr Donnerwetter reading06Regex <tbody><\/tbody>
attr Donnerwetter reading07Name Meldung
attr Donnerwetter reading07OExpr {fhem("deletereading Donnerwetter Error");; return}
attr Donnerwetter reading07Regex <tbody><tr><td><strong>
attr Donnerwetter replacement01Mode expression
attr Donnerwetter replacement01Regex %DATE_0%
attr Donnerwetter replacement01Value {my $NAME="Donnerwetter";; time_str2num(InternalVal("$NAME","value",time_str2num(strftime("%Y-%m-%d",localtime))))}
attr Donnerwetter replacement02Mode expression
attr Donnerwetter replacement02Regex %DATE_1%
attr Donnerwetter replacement02Value {my $NAME="Donnerwetter";; time_str2num(InternalVal("$NAME","value",time_str2num(strftime("%Y-%m-%d",localtime))))+24*60*60}
attr Donnerwetter replacement03Mode text
attr Donnerwetter replacement03Regex %ZIP_CODE%
attr Donnerwetter replacement03Value < PLZ >
attr Donnerwetter room Informationen->Wetter
attr Donnerwetter set01-10Name fcx_08_Temperatur
attr Donnerwetter set01-11Name fcx_09_Date
attr Donnerwetter set01-12Name fcx_09_Global
attr Donnerwetter set01-13Name fcx_09_Direkt
attr Donnerwetter set01-14Name fcx_09_Indirekt
attr Donnerwetter set01-15Name fcx_09_Temperatur
attr Donnerwetter set01-16Name fcx_10_Date
attr Donnerwetter set01-17Name fcx_10_Global
attr Donnerwetter set01-18Name fcx_10_Direkt
attr Donnerwetter set01-19Name fcx_10_Indirekt
attr Donnerwetter set01-1Name fcx_07_Date
attr Donnerwetter set01-20Name fcx_10_Temperatur
attr Donnerwetter set01-21Name fcx_11_Date
attr Donnerwetter set01-22Name fcx_11_Global
attr Donnerwetter set01-23Name fcx_11_Direkt
attr Donnerwetter set01-24Name fcx_11_Indirekt
attr Donnerwetter set01-25Name fcx_11_Temperatur
attr Donnerwetter set01-26Name fcx_12_Date
attr Donnerwetter set01-27Name fcx_12_Global
attr Donnerwetter set01-28Name fcx_12_Direkt
attr Donnerwetter set01-29Name fcx_12_Indirekt
attr Donnerwetter set01-2Name fcx_07_Global
attr Donnerwetter set01-30Name fcx_12_Temperatur
attr Donnerwetter set01-31Name fcx_13_Date
attr Donnerwetter set01-32Name fcx_13_Global
attr Donnerwetter set01-33Name fcx_13_Direkt
attr Donnerwetter set01-34Name fcx_13_Indirekt
attr Donnerwetter set01-35Name fcx_13_Temperatur
attr Donnerwetter set01-36Name fcx_14_Date
attr Donnerwetter set01-37Name fcx_14_Global
attr Donnerwetter set01-38Name fcx_14_Direkt
attr Donnerwetter set01-39Name fcx_14_Indirekt
attr Donnerwetter set01-3Name fcx_07_Direkt
attr Donnerwetter set01-40Name fcx_14_Temperatur
attr Donnerwetter set01-41Name fcx_15_Date
attr Donnerwetter set01-42Name fcx_15_Global
attr Donnerwetter set01-43Name fcx_15_Direkt
attr Donnerwetter set01-44Name fcx_15_Indirekt
attr Donnerwetter set01-45Name fcx_15_Temperatur
attr Donnerwetter set01-46Name fcx_16_Date
attr Donnerwetter set01-47Name fcx_16_Global
attr Donnerwetter set01-48Name fcx_16_Direkt
attr Donnerwetter set01-49Name fcx_16_Indirekt
attr Donnerwetter set01-4Name fcx_07_Indirekt
attr Donnerwetter set01-50Name fcx_16_Temperatur
attr Donnerwetter set01-51Name fcx_17_Date
attr Donnerwetter set01-52Name fcx_17_Global
attr Donnerwetter set01-53Name fcx_17_Direkt
attr Donnerwetter set01-54Name fcx_17_Indirekt
attr Donnerwetter set01-55Name fcx_17_Temperatur
attr Donnerwetter set01-56Name fcx_18_Date
attr Donnerwetter set01-57Name fcx_18_Global
attr Donnerwetter set01-58Name fcx_18_Direkt
attr Donnerwetter set01-59Name fcx_18_Indirekt
attr Donnerwetter set01-5Name fcx_07_Temperatur
attr Donnerwetter set01-60Name fcx_18_Temperatur
attr Donnerwetter set01-6Name fcx_08_Date
attr Donnerwetter set01-7Name fcx_08_Global
attr Donnerwetter set01-8Name fcx_08_Direkt
attr Donnerwetter set01-9Name fcx_08_Indirekt
attr Donnerwetter set01CheckAllReadings 1
attr Donnerwetter set01Method GET
attr Donnerwetter set01Name fcx
attr Donnerwetter set01ParseResponse 1
attr Donnerwetter set01RegOpt g
attr Donnerwetter set01Regex (\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})<.strong><.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell.">(\d.\d{3})<.td><td class=."data-cell." style=."text-align:right;;.">(-?\d*)
attr Donnerwetter set01TextArg 1
attr Donnerwetter set01URL https://calc.donnerwetter.de/cgi-bin/globalrad/get_globalrad.py/?zip_code=%ZIP_CODE%&date=%DATE_0%
attr Donnerwetter showBody 0
attr Donnerwetter showError 0
attr Donnerwetter verbose 0

Im reading table steht dann die HTML Tabelle, die man dann mit einer Regex zerlegen kann.

<tbody><tr><td><strong>2022-03-23 07:00:00</strong></td><td class="data-cell">0.114</td><td class="data-cell">0.034</td><td class="data-cell">0.080</td><td class="data-cell" style="text-align:right;">2�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 08:00:00</strong></td><td class="data-cell">0.256</td><td class="data-cell">0.077</td><td class="data-cell">0.179</td><td class="data-cell" style="text-align:right;">2�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 09:00:00</strong></td><td class="data-cell">0.382</td><td class="data-cell">0.114</td><td class="data-cell">0.267</td><td class="data-cell" style="text-align:right;">11�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 10:00:00</strong></td><td class="data-cell">0.482</td><td class="data-cell">0.145</td><td class="data-cell">0.338</td><td class="data-cell" style="text-align:right;">11�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 11:00:00</strong></td><td class="data-cell">0.552</td><td class="data-cell">0.166</td><td class="data-cell">0.386</td><td class="data-cell" style="text-align:right;">11�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 12:00:00</strong></td><td class="data-cell">0.586</td><td class="data-cell">0.176</td><td class="data-cell">0.410</td><td class="data-cell" style="text-align:right;">15�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 13:00:00</strong></td><td class="data-cell">0.582</td><td class="data-cell">0.175</td><td class="data-cell">0.408</td><td class="data-cell" style="text-align:right;">15�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 14:00:00</strong></td><td class="data-cell">0.541</td><td class="data-cell">0.162</td><td class="data-cell">0.379</td><td class="data-cell" style="text-align:right;">15�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 15:00:00</strong></td><td class="data-cell">0.465</td><td class="data-cell">0.140</td><td class="data-cell">0.326</td><td class="data-cell" style="text-align:right;">16�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 16:00:00</strong></td><td class="data-cell">0.359</td><td class="data-cell">0.108</td><td class="data-cell">0.252</td><td class="data-cell" style="text-align:right;">16�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 17:00:00</strong></td><td class="data-cell">0.233</td><td class="data-cell">0.070</td><td class="data-cell">0.163</td><td class="data-cell" style="text-align:right;">16�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr><tr><td><strong>2022-03-23 18:00:00</strong></td><td class="data-cell">0.089</td><td class="data-cell">0.027</td><td class="data-cell">0.062</td><td class="data-cell" style="text-align:right;">16�</td><td class="data-cell"><img src="img/symbole/wetsymkl_1.gif"></td></tr></tbody>


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

timtom2000

Hey, Danke, mit deinem Beispiel komme ich auch an die Daten!
Du holst dir also über die Analyse des Netzwerkverkehrs die andere URL, die dann die Tabelle überträgt, cool.

Habe ich gerade mal bei meinem Wechselrichter probiert, weil auch da im initialen Quelltext nichts drinsteht.
Ich habe über den Netzwerkverkehr auch eine URL gefunden, wo die gewünschten Daten drinstehen (Ladezustand Speicher), wenn ich diese URL dann aber direkt aufrufe kommt eine Fehlermeldung...

<ResponseResult>
<Success>false</Success>
<Code>1</Code>
<Msg> Request method not supportedhttp://www.....</Msg>
<Data/>
<CsrfToken/>
</ResponseResult>


Naja, ist auch irgendwie logisch, in den allgemeinen URL-Aufruf müsste ich sicher noch irgendwie meine Login-Daten verpacken...mit Header, Nutzlast und was es da sonst noch alles gibt, kenne ich mich aber Null aus...
LWZ 304 (BJ 2017; FW 7.09); DHH o. Keller; 100m² Wohnfläche
FHEM auf USB-Stick an FritzBox 7560 (FW 7.29)

ch.eick

Zitat von: timtom2000 am 23 März 2022, 20:28:48
Hey, Danke, mit deinem Beispiel komme ich auch an die Daten!
Du holst dir also über die Analyse des Netzwerkverkehrs die andere URL, die dann die Tabelle überträgt, cool.
Solange kein Login notwendig ist sollte das klappen.

Zitat
Habe ich gerade mal bei meinem Wechselrichter probiert, weil auch da im initialen Quelltext nichts drinsteht.
Ich habe über den Netzwerkverkehr auch eine URL gefunden, wo die gewünschten Daten drinstehen (Ladezustand Speicher), wenn ich diese URL dann aber direkt aufrufe kommt eine Fehlermeldung...

< snip>

Naja, ist auch irgendwie logisch, in den allgemeinen URL-Aufruf müsste ich sicher noch irgendwie meine Login-Daten verpacken...mit Header, Nutzlast und was es da sonst noch alles gibt, kenne ich mich aber Null aus...
Das ist dann wieder ein eigener Thread, damit auch andere das finden können. Eventuell gibt es ja zu Deinem Wechselrichter bereits etwas.
Auch ich habe mich da sehr lange durch gearbeitet und man muss halt erstmal auch etwas html Handling lernen.
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

Moin,
es wäre jetzt ganz toll, wenn sich noch mehr interessenten finden würden, die dann an der Formatierung der reading Namen und der Eingabe des Datums als Argument mit arbeiten würden. Ein Vergleich mit den DWD Daten in Bezug auf Wolken und Regen wäre auch noch sinnvoll.

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

ch.eick

#4
Moin,
ich habe dann schon mal im ersten Post ein Update gemacht.

get fc0 holt den Forecast für heute und morgen
get fc1 holt den Forecast nur für morgen

set fcx yyyy-mm-tt fragt den Forecast für das gewählte Datum ab

Die readings Namen haben sich geändert.
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

Hallo zusammen,
im ersten Post ist nun mein Werk von heute.

Zusätzlich werden jetzt die readings mit formatierten Namen ausgegeben.

fc0_07_Date 2022-03-24 07:00:00
fc0_07_Direkt 0.037
fc0_07_Global 0.122
fc0_07_Indirekt 0.085
fc0_07_Temperatur 3


Der Forecast geht 4 Tage in die Zukunft, wenn man ein nicht zufindendes Datum bei fcx abfragt wird ein Error reading erzeugt und alle alten readings von fcx_* gelöscht.
Nach einer beliebigen Abfrage von fc0, fc1, oder fcx mit einem Ergebnis wird das Error reading wieder gelöscht.
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

Moin,
die PLZ ist jetzt ein replacement und somit nur noch an einer Stelle einzutragen.

Gruß
   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

der-Lolo

Wow, das ist richtig cool - und kommt genau zur rechten Zeit - Solaranlage ist bestellt und wird hoffentlich noch vor Juni in betrieb gehen.
Super wäre jetzt wenn es noch schicke Bildchen zur optischen Darstellung gäbe, vielleicht kann man mit uiTable und DOIF cards was machen.

So würde das auch zum recht schicken "Ertrags & Bezugs" DOIF von Damian passen.

Anlegen und eintragen der PLZ funktionierte heute morgen um 9 Uhr schon problemlos!

ch.eick

Zitat von: der-Lolo am 25 März 2022, 10:28:14
Wow, das ist richtig cool - und kommt genau zur rechten Zeit - Solaranlage ist bestellt und wird hoffentlich noch vor Juni in betrieb gehen.
Super wäre jetzt wenn es noch schicke Bildchen zur optischen Darstellung gäbe, vielleicht kann man mit uiTable und DOIF cards was machen.

So würde das auch zum recht schicken "Ertrags & Bezugs" DOIF von Damian passen.

Anlegen und eintragen der PLZ funktionierte heute morgen um 9 Uhr schon problemlos!
Moin,
ich habe bereits eine Integration mit dem DWD hier gemacht und werde mal die beiden Globalstrahlungsprognosen vergleichen. Man muss allerdings für den Vergleich kJ und kWh in der Umrechnung mit 0,277778 berücksichtigen, was ich in der Solar_forecast() Funktion für den DWD bereits drin habe und hier für den Donnerwetter nicht erforderlich ist. Ich denke ich werde aber beide Dienste im Solar_forecast() unterstützen, falls mal einer weg bricht oder einer für den Zielort besser passt.

VG und Dank an @timtom2000 für das finden der API
   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

der-Lolo

Vielen Dank auch für diesen Tipp!
Ich fange gerade erst an darüber nachzudenken die Anlage in "Einklang" mit FHEM zu bringen.
FHEM soll/wird/muss uns hier bei der Ertragsbezogenen Energie Nutzung helfen!

Wir haben einige Verbraucher die sich anhand des Ertrags möglichst selbstständig aktivieren sollen.
( 2x Waschmaschine, Wäschetrockner ?, Wärmepumpe, Spülmaschine, Poolpumpe, Gartenpumpe etc. )


ch.eick

#10
Zitat von: der-Lolo am 25 März 2022, 10:52:56
Vielen Dank auch für diesen Tipp!
Ich fange gerade erst an darüber nachzudenken die Anlage in "Einklang" mit FHEM zu bringen.
FHEM soll/wird/muss uns hier bei der Ertragsbezogenen Energie Nutzung helfen!

Wir haben einige Verbraucher die sich anhand des Ertrags möglichst selbstständig aktivieren sollen.
( 2x Waschmaschine, Wäschetrockner ?, Wärmepumpe, Spülmaschine, Poolpumpe, Gartenpumpe etc. )
Dazu wirst Du jede Menge auf meiner Wiki Seite finden, wenn Nachfrage ist aktualisiere ich auch immer wieder.
Mach doch für Deinen WR im Solar Bererich des Forums einen Thread auf, oder schau ob Deiner da schon dabei ist.
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