Autor Thema: Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen  (Gelesen 1094 mal)

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Hallo zusammen und erst einmal ein großes Danke an @herrmannj für dieses klasse Modul! Das wird mir in Zukunft so einige Geräteabfragen vereinfachen.

Im Moment stehe ich vor einem etwas komplexeren Problem:
Ich möchte für die vorhersagebasierte Ladung der Batterie meiner Photovoltaik-Anlage die Solareinstrahlung von SolCast abrufen. Das Problem dabei ist, dass bei den Vorhersagedaten generell die nächsten 168 Halbstundenvorhersagen kommen, das entsprechende Datum wird dann auf untergeordneter Ebene mitgeliefert. Verkürzt sieht das Ganze dann so aus:
{
  "forecasts": [
    {
      "pv_estimate": "9.5",
      "pv_estimate10": "6",
      "pv_estimate90": "13.8",
      "period_end": "2018-01-01T01:00:00.00000Z",
      "period": "PT30M"
    },
    {
      "pv_estimate": "10",
      "pv_estimate10": "8",
      "pv_estimate90": "12",
      "period_end": "2018-01-01T12:30:00.00000Z",
      "period": "PT30M"
    }
  ]
}

Für die Vorhersage für den heutigen Solarertrag müsste ich also $.forecasts[0], $.forecasts[1] bis $.forecasts
  • einlesen und dann immer vergleichen, ob period_end noch dem heutigen Tag entspricht. Idealerweise müsste dabei noch dieser UTC-codierte Zeitstempel an die lokalen Zeitzone angepasst werden (oder umgekehrt).

Für die Tagessumme müssten dann alle Werte des Tages aus pv_estimate (Werte in kWh) addiert werden und durch (60 / period) geteilt werden, weil die Werte nicht stündlich, sondern halbstündlich (bei kostenpflichtigen Paketen auch in noch geringeren Abständen) ausgegeben werden.

Am Ende sollte dann ein (halb-)stündlich aktualisierter Wert stehen, der den voraussichtlich noch zu erwartenden Solarertrag ausgibt. Anhand dessen könnte man dann die Ladung der Batterie oder das Einschalten anderer Verbraucher steuern.

Meine Frage ist jetzt, ob sich das irgendwie mit JsonMod umsetzen lässt, oder ob ich dafür doch ein eigenes Modul stricken muss. Momentan habe ich ein selbstgestricktes Python-Programm am Laufen, das das oben genannte macht, vielleicht hilft das noch zum Verständnis:
https://github.com/fredlcore/SolarEdge_Predictive_Charging/

Da ich sonst aber alles mit FHEM steuere, würde ich mich sehr freuen, wenn ich diese Funktionalität nicht auslagern müsste.

Danke schon einmal für jeden Hinweis!
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline frober

  • Sr. Member
  • ****
  • Beiträge: 845
  • Was man nicht kann, kann man lernen...
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #1 am: 11 August 2021, 09:30:22 »
Du kannst Python direkt mit Fhem nutzen, vielleicht ist das eine Alternative
https://forum.fhem.de/index.php/topic,63816.60.html
Raspi 3b mit Raspbian Stretch und relativ aktuellem Fhem,  FS20, LGW, PCA301, MySensors mit RS485(CAN-Receiver), etc.,
einiges umgesetzt, vieles in Planung :-)

********************************************
...man wächst mit der Herausforderung...

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #2 am: 11 August 2021, 10:05:14 »
Ah, das ist schon mal ein guter Hinweis! Aber "nativ" wäre natürlich noch schöner :).
Ich habe jetzt mit
multi(jsonPath('$.forecasts[*]'), concat('pv_estimate_', index()), property('pv_estimate'));eine Liste aller über 300 Einträge mit den jeweiligen Ertragsvoraussagen bekommen.
Wenn ich hier jetzt statt index() den Inhalt von period_end einsetzen könnte, dann ließen sich die Readings schon mal nach dem jeweiligen Tag filtern, und dann wäre das mit der Summierung auch schon mal einen guten Schritt einfacher...

EDIT: jsonPath('$.forecasts[index()].pv_period') anstelle von index() gibt leider einen Syntax Error
« Letzte Änderung: 11 August 2021, 10:10:34 von freetz »
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #3 am: 11 August 2021, 10:23:56 »
Yay, mit
multi(jsonPath('$.forecasts[*]'), concat('pv_estimate_', property('period_end')), property('pv_estimate'));hat's geklappt - sehr schön :).
Ich denke, jetzt komme ich weiter, werde das Ergebnis dann aber gerne hier bei Interesse noch posten...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Online MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 11024
  • NIVEAu ist keine Creme...
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #4 am: 11 August 2021, 11:28:59 »
Du kannst Python direkt mit Fhem nutzen, vielleicht ist das eine Alternative
https://forum.fhem.de/index.php/topic,63816.60.html

Ah, das ist schon mal ein guter Hinweis! Aber "nativ" wäre natürlich noch schöner :).

Evtl. eine (weitere) Alternative: https://forum.fhem.de/index.php/topic,115230.msg1094931.html#msg1094931

Gruß, Joachim
FHEM PI3B+ Buster: 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)
FHEM PI3 RaspiOS (Test)

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #5 am: 11 August 2021, 12:33:56 »
Sehr cool! ich bin mit Python an sich aber noch am Fremdeln (auch, weil ich seit über 20 Jahren Perl als erste Wahl beim Programmieren verwende), insofern würde ich erst einmal schauen, ob ich es auch mit "Bordmitteln" hinbekomme. Aber als Backup ist das eine sehr coole Option!
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #6 am: 11 August 2021, 23:57:13 »
So sieht die (für diesen Teil) fertige Lösung aus, für alle, die es interessiert:
attr SolCast readingList multi(jsonPath('$.forecasts[*]'), concat('pv_estimate_', property('period_end')), property('pv_estimate'));;\
single(jsonPath('$.forecasts[0].period'),'period','');;
attr SolCast userReadings forecast_today {\
  my $total=0;;\
  my $period = ReadingsVal("SolCast", "period", 0);;\
  $period =~ s/.*(\d\d).*/$1/;;\
  my ($date, $time) = split(" ", FmtDateTime(time()));;\
  my $hash = $defs{$NAME};;\
  my $readings = $hash->{READINGS};;\
  foreach my $reading ( keys %{$readings} ) {\
    if ($reading =~ /$date/) {\
      my $val = ReadingsVal($NAME,$reading,0);;\
      $total += $val/(60/$period);;\
    }\
  }\
  return $total;;\
}
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #7 am: 13 August 2021, 08:43:56 »
Bzgl. Solarprognose kann ich dir dieses Modul auch empfehlen, dann brauchst du nicht alles selber machen, was es schon gibt ;-)
https://forum.fhem.de/index.php/topic,117864.1155.html

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #8 am: 13 August 2021, 09:09:53 »
Danke, ich glaube, da war ich bei meiner Recherche auch schon darauf gestoßen, aber das scheint alles auf DWD-Daten zu basieren. Der Punkt bei mir ist, dass die DWD-Daten im Tagesverlauf nur alle sechs Stunden aktualisiert werden, SolCast hingegen aktualisiert alle 30 Minuten. So sind die Werte für den gesamten Tag am Morgen noch relativ identisch, aber zum Nachmittag hin kommen doch Abweichungen von bis zu 20 Prozent zustande (bei mir zumindest). Das ist gerade für mein Anwendungsziel, wo ich die Batterie so spät wie möglich am Tag laden möchte, ein no-go, so dass ich DWD nur als Backup einsetzen würde, falls SolCast irgendwann auch für kleinere Installationen kostenpflichtig wird.

Da sich die Tagesprognose für SolCast dank JsonMod mit den oben genannten wenigen Zeilen in FHEM einbinden lässt, war der Aufwand zum Glück auch überschaubar. Vielleicht wäre das umgekehrt etwas, was die Modul-Maintainer übernehmen wollen würden, um mehrere Datenbasen anbieten zu können.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #9 am: 13 September 2021, 15:55:29 »
Es wäre vielleicht ganz hilfreich wenn du deine komplette Definition zur Verfügung stellen könntest damit haben es dann die nächsten Einsteiger einfacher.

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #10 am: 13 September 2021, 20:08:58 »
Was meinst Du mit "kompletter Definition"? Welche DbLogExcludes, interval etc. ich da noch verwende, ist ja von Fall zu Fall unterschiedlich und verwirrt gerade Einsteiger vielleicht dahingehend, was denn nun das Relevante ist. Oder meinst Du alle damit zusammenhängenden Devices (DOIFs, SolCast Reporting, Max Eco Schalter zum vorzeitigen Batterieladen, Wechselrichter-Batterie-Anbindung)? Auch das ist ja am Ende ziemlich speziell auf meine Situation hier zugeschnitten.
Aber ich teile gerne, was sinnvoll erscheint...
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #11 am: 14 September 2021, 08:05:57 »
Als grundsätzlich meinte ich die defmod von dem JsonMod, das würde ja schon helfen wie ein Anfänger es definieren muss bzgl. der API. Dann wäre natürlich interessant wie du mit den den ganzen Daten (Readings)  weiter umgehst. Was berechnest du wie, auch wenn es auf dein System zugeschnitten hilft es m.E. um das System zu verstehen und sich ggf. selber davon Use Cases ableiten zu können.
Es gibt auch "halbe" Beispiele" über HTTPMOD. Du hast dich ja jetzt für JsonMod entschieden und bestimmt einen Grund dafür gehabt.

gerade im Bezug auf den Titel des Threads "Anwendungsbeispiel" fehlt mir der Kontext um aus diesen Einträgen ein komplettes Anwendungsbeispiel ableiten zu können.
Bitte nicht falsch verstehen, aber mit den Informationen könnte man kein Anwendungsbeispiel für SolCast ableiten. Hier geht es eher darum wie man ein usereading in JsonMod definiert.
« Letzte Änderung: 14 September 2021, 08:10:05 von xerion »

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #12 am: 14 September 2021, 08:41:14 »
Ich weiß nicht, ob das defmod wirklich den großen Unterschied macht, denn das besteht ja nur aus der URL, aber bitte:
defmod SolCast JsonMod https://api.solcast.com.au/rooftop_sites/xxx/forecasts?format=json&api_key=yyyWobei xxx durch die Site-ID und yyy durch den API Key ersetzt werden muss. Wer dies nicht direkt im Device speichern möchte, findet hier Alternativen:
https://forum.fhem.de/index.php/topic,109398.0.html

Wie man mit den Readings umgeht, ist ja eben sehr auf den Anwendungskontext zugeschnitten, das userReading "forecast_today" gibt zurück, wie viel prognostizierte Sonnenenergie für den Tag noch erwartet wird. Die Info kann mir schon reichen, wenn ich einfach nur Graphen pflegen will, ich kann damit die Ladung meines E-Autos aktivieren oder wie in meinem Fall das Aufladen des PV-Speichers zu einem bestimmten Zeitpunkt starten.

Insofern entspricht der Titel exakt dem, was das userReading macht: Es ruft über JsonMod die SolCast Solar-Vorhersage ab, und stellt diese für weitere Zwecke zur Verfügung, allerdings kumuliert für den Tag und nicht halbstundenweise, wie die Daten "roh" ankommen. Insofern ist es schon mehr, als nur ein userReading in JsonMod.

Im Endeffekt ist es so, wie bei Proplanta oder einem anderen Wetter-Modul auch. Da gibt es ja ebenfalls viele Einsatzmöglichkeiten, die sehr unterschiedlich ausfallen können, aber auch der Wert alleine (insbesondere, wenn er wie hier als kumuliertem Tageswert nicht direkt abrufbar ist) ist an sich schon aussagekräftig. Alles weitere, was ich damit mache, sind verschiedene DOIFs die basierend auf diesem Wert Aktionen starten. Da gibt es schon sehr viele, sehr gute Tutorials, als dass ich da noch etwas Sinnvolles beitragen könnte.

JsonMod habe ich gegenüber HTTPMOD bevorzugt, weil ich Readings generieren muss, deren Bezeichnung aus abgerufenen Werten bestehen und die dann wiederum einen anderen abgerufenen Wert zugewiesen bekommen. Konkret: Der Zeitstempel eines Wertes wird Teil des Namens des Readings, der eigentliche Solarertrag dann der Wert des Readings, und das für alle Einträge des Tages.
Kann gut sein, dass man das in HTTPMOD (was ich sonst auch gerne verwende) auch irgendwie hinbekommen hätte, aber so ist es mit einer attr-Zeile möglich, die Readings in die richtige Form zu bekommen. Das eigentliche userReading würde mit HTTPMOD genau so funktionieren, wenn man damit eine JSON-Struktur abgerufen und entsprechend umbenannt bekommt.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #13 am: 14 September 2021, 10:57:08 »
Danke für deine ausführliche Rückmeldung. Ich habe das jetzt mal mit den Informationen aus diesem Thread versucht aufzubauen und bekomme bei den userReading immer folgenden Fehler:

Error evaluating SolCast userReading forecast_today: Experimental aliasing via reference not enabled at (eval 233678) line 2.

Offline xerion

  • Sr. Member
  • ****
  • Beiträge: 555
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #14 am: 14 September 2021, 11:01:24 »
Fehler gefunden, leider Copy&Paste Fehler, ein / war noch versteckt ;-)

Offline freetz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2012
    • GitHub Projektseite für BSB-LAN und Robotan
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #15 am: 14 September 2021, 11:11:42 »
Prima, das freut mich - vielleicht mache ich für die Batteriesteuerung mal einen eigenen Thread auf, wenn es dafür Interesse gibt, das würde nämlich hier wirklich nicht mehr zum Topic passen, da das dann über ModbusAttr läuft.
Alle Infos zur Anbindung von Heizungssystemen mit PPS-, LPB- bzw. BSB-Bus ans LAN gibt es hier:
https://github.com/fredlcore/bsb_lan

Alle Infos zum WLAN-Interface "Robotan" für Ambrogio/Stiga/Wolf und baugleiche Rasenmähroboter:
https://github.com/fredlcore/robotan

Offline ansgru

  • New Member
  • *
  • Beiträge: 24
Antw:Anwendungsbeispiel JsonMod - SolCast Solar-Vorhersage abrufen
« Antwort #16 am: 17 Oktober 2021, 10:55:47 »
Danke dir freetz für deine Arbeit! Ich habe diese etwas weiterentwickelt und zusätzlich noch ein UserReading für morgen erstellt sowie eine Funktion, welche bei jedem Aufruf die aktuellen Prognosewerte in einen dblog schreibt. Historische Werte werden dabei belassen, es werden nur die abgerufenen Werte überschrieben. Hintergrund: so kann ich mir einen Graphen plotten der mir eine Vorhersage liefert, aber auch einen Rückblick damit ich schauen kann, wie gut die Prognose stimmt. Das UserReading für morgen brauche ich um z.B. am Abend vorher gewisse Grossverbraucher mit dem günstigen Nachttarif laufen lassen zu können falls der prognostizierte Solarstrom nicht reichen sollte.

Hier das UserReading:

forecast_today {
my $total = 0;
my $period = ReadingsVal("SolCast", "period", 0);
$period =~ s/.*(\d\d).*/$1/;
my ($date, $time) = split(" ", FmtDateTime(time()));
my $hash = $defs{$NAME};
my $readings = $hash->{READINGS};
foreach my $reading ( keys %{$readings} ) {
if ($reading =~ /$date/) {
my $val = ReadingsVal($NAME,$reading,0);
$total += $val/(60/$period);
}
}
return $total;
},
forecast_tomorrow {
use Time::Piece ();
use Time::Seconds;

my $total = 0;
my $period = ReadingsVal("SolCast", "period", 0);
$period =~ s/.*(\d\d).*/$1/;
my ($date, $time) = split(" ", FmtDateTime(time()));
my $date = Time::Piece->strptime($date, '%Y-%m-%d');
$date += ONE_DAY;
$date = $date->strftime('%Y-%m-%d');
my $hash = $defs{"SolCast"};
my $readings = $hash->{READINGS};
foreach my $reading (keys %{$readings}) {
if ($reading =~ /$date/) {
my $val = ReadingsVal("SolCast", $reading, 0);
$total += $val/(60/$period);
}
}
return $total;
}

Und hier die Funktion um die Vorhersage im dblog zu speichern (gehört in MyUtils):

# Braucht 3 Argumente: $name = Name des "Solcast" Devices, $dblog und $dbrep Namen der dblog/dbrep Devices. Bei jedem Aufruf wird der Forecast für morgen sowie alle aktuellen Prognosewerte gespeichert. Die Prognosewerte werden dabei überschrieben, alte Werte bleiben bestehen
sub forecast_in_DB_speichern($$$) {
my ( $name, $dblog, $dbrep ) = @_;
my $val = ReadingsVal($name, "forecast_tomorrow", 0);
my $time = strftime('%Y-%m-%d %H:%M:%S', localtime(time + 86400));
fhem("set ".$dblog." addCacheLine $time|$name|JSONMOD|forecast|forecast|$val");
my %hash = %{$defs{$name}{READINGS}};
my @pv_estimates = sort grep /pv_estimate/, keys %hash;
# Max/Min Forecast Zeitpunkt ermitteln
$pv_estimates[-1] =~ m/pv_estimate_(.*)/;
my $max = str2time($1);
$pv_estimates[0] =~ m/pv_estimate_(.*)/;
my $min = str2time($1);
# Alle alten Werte löschen die aktualisiert werden sollen
fhem("set ".$dbrep." sqlCmd DELETE FROM `history` WHERE DEVICE = '".$name."' AND `TIMESTAMP` >= FROM_UNIXTIME(".$min.") AND `TIMESTAMP` <= FROM_UNIXTIME(".$max.")");

foreach my $reading (@pv_estimates) {
$reading =~ m/pv_estimate_(.*)/;
$time = strftime('%Y-%m-%d %H:%M:%S', localtime(str2time($1)));
$val = ReadingsVal($name, $reading, 0) * 1000;
fhem("set ".$dblog." addCacheLine $time|$name|JSONMOD|pv_estimate|pv_estimate|$val");
}
}

Die eigentliche Speicherung erfolgt dann in einem at:

defmod at_SolCast_Prognose_speichern at *22:00 {forecast_in_DB_speichern('SolCast','dblog','DB_Bereinigung_Kostal')}
Prognosen siehe Anhang. Es besteht noch Optimierungsbedarf, im Moment habe ich alle meine Module (O, S & W) zusammengefasst zu einer Anlage (Südausrichtung). Wenn ich Zeit und Lust habe, splitte ich das auf 3 Anlagen mit der korrekten Ausrichtung und Neigung und aktualisiere dann meinen Code. Was mir auch schon aufgefallen ist: Nebel/"grauer Himmel" wird nicht richtig prognostiziert, so ist z.B. bei uns im Moment Hochnebel und der PV Ertrag entsprechend gering, das spiegelt sich aber nicht in der SolCast Prognose wieder (siehe auch 10. Oktober, das war auch so ein Tag wo bis am Mittag Hochnebel herrschte). Die DWD Werte kann ich leider nicht benutzen da keine Station bei mir in der Nähe ist.