Die Solarprognose funktioniert nicht mehr.

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Geins
Beiträge: 31
Registriert: Mi 5. Okt 2022, 18:16
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von Geins »

PifPof hat geschrieben:
Fr 31. Jul 2026, 18:18
PifPof hat geschrieben:
Do 30. Jul 2026, 22:04
Hallo Uli,
vielen Dank für dein Patch - Script.
Ich habe auch eine Ost - West - Ausrichtung und bin Deiner Anleitung gefolgt.
Das Abfragen klappt ganz wunderbar, ich sehe URLs für beide Abfragen.
Habe die auch mal im Browser getestet und sehe unterschiedliche Werte für die beiden Felder.

Im Grafana wird mir jedoch nur der Oststrang grafisch angezeigt.
Ich habe ein eigenes Dashboard und hatte da die Wetterprognose vorher (von solarprognose) so drin:

Code: Alles auswählen

SELECT mean("Prognose_W") FROM "autogen"."Wetterprognose" WHERE $timeFilter GROUP BY time($__interval) fill(null)
Werden jetzt meine zwei Stränge nicht addiert oder selektiere ich das falsche Feld in der falschen Tabelle?
Könntest Du mir vielleicht einen Tipp geben, wo ich suchen kann?

Danke und viele Grüße,
PifPof
Hi,
ich habe mal einen Tag gewartet, hier der Eintrag im Log:
31.07. 12:20:01 |------------------- Start wetterdaten.php --------------------
31.07. 12:20:01 WET-Prognosedaten 1 werden abgeholt
31.07. 12:20:01 |------- [Regler 27] ----- Start sma_wr.php ---- [28.01.2025] ------
31.07. 12:20:01 -SMA: 192.168.178.170 Port: 502 GeräteID: 03
31.07. 12:20:02 WET-Prognosedaten 2 werden abgeholt
31.07. 12:20:03 WET-URL: https://api.forecast.solar/estimate/wat ... 2/-90/6.97
31.07. 12:20:03 WET-Verbindung zum Wetterserver 'forecast.solar' erfolgreich.
31.07. 12:20:03 *- -Geräteklasse: 8009
31.07. 12:20:03 *- -Gerätetyp: 19051
31.07. 12:20:03 -Alle 10 Minuten werden die Statistikdaten übertragen.
31.07. 12:20:03 * -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
31.07. 12:20:03 |------------------- Stop wetterdaten.php ---------------------

Rufe ich die URLs im Browser auf (mit den echten Koordinaten erhalte ich für -90 und für +90 Werte:
Bildschirmfoto 2026-07-31 um 18.30.03.pngBildschirmfoto 2026-07-31 um 18.30.28.png

Wenn ich für 12:00 die Werte addiere erhalte ich

Code: Alles auswählen

1343+968=2311
Grafana zeigt mir 1.34 kW an, das passt nicht.

Insgesamt kommt mir das auch viel zu wenig vor, die tatsächliche Produktion lag bei 7.6 kW zu dem Zeitpunkt.

Meine User.config.php enthält diese Daten:
$Prognosedaten = true;
$Breitengrad = 47.11; //manipuliert, um meine Adresse nicht im Internet zu veröffentlichen,
$Laengengrad = 5.4321; // in Wirklichkeit habe ich natürlich meine echten Koordinaten

// 1. String (Ost)
$PV_Nennleistung = 6.97;
$Winkel = 42;
$Suedausrichtung = -90;
// 2. String (West)
$PV_Nennleistung2 = 6.97;
$Winkel2 = 42;
$Suedausrichtung2 = 90;

Bildschirmfoto 2026-07-31 um 18.16.05.png

Die Vorhersage ist die gestrichelte orange Linien, unten links ist ein Panel mit der Gesamttages-Arbeit.

Hat jemand eine Idee?
Danke und Gruß,
PifPof
Hallo PifPof,

deine Grafana-Abfrage ist völlig in Ordnung! Du suchst nicht am falschen Ort, sondern bist exakt in denselben Fehler gerannt wie ein anderer Kollege hier.

Das Problem liegt an der allerersten Version von meinem Patch-Skript. Da war ein Logikfehler bei der PHP-Array-Addition drin. Das Skript ruft zwar brav die Daten für deinen West-String ab, aber statt die Watt-Werte zusammenzurechnen, überschreibt PHP sie einfach. Deshalb siehst du in deinem Dashboard aktuell zu 100 % nur die Leistung deines Ost-Strings, also die exakte Hälfte.

Geh bitte auf deine Konsole, öffne dein angelegtes Patch-Skript (z.B. nano patch.sh), lösch den alten Inhalt komplett raus und ersetze ihn durch diese fehlerfreie V2-Version:

#!/bin/bash
FILE="/var/www/html/wetterdaten.php"

# Alten fehlerhaften Patch sauber entfernen
sed -i '/\/\/ --SUED-WEST PATCH--/,/\/\/ -------------------/d' "$FILE"

if grep -q "SUED-WEST PATCH V2" "$FILE"; then
echo "Patch V2 ist bereits installiert!"
else
# Temporäre Datei anlegen, um Copy-Paste-Fehler zu vermeiden
cat << 'EOF' > /tmp/wetter_patch.txt
// --SUED-WEST PATCH V2--
if (isset($PV_Nennleistung2) && $PV_Nennleistung2 > 0) {
$URL2 = str_replace("/".$Winkel."/".$Suedausrichtung."/".$PV_Nennleistung, "/".$Winkel2."/".$Suedausrichtung2."/".$PV_Nennleistung2, $URL);
$res2 = @file_get_contents($URL2);
$arr2 = json_decode($res2, true);
if(isset($arr2["result"])) {
foreach($arr2["result"] as $k => $v) {
if(is_array($v)) {
if(!isset($Einzelwerte["result"][$k])) $Einzelwerte["result"][$k] = array();
foreach($v as $zeit => $wert) {
if(isset($Einzelwerte["result"][$k][$zeit])) {
$Einzelwerte["result"][$k][$zeit] += $wert;
} else {
$Einzelwerte["result"][$k][$zeit] = $wert;
}
}
ksort($Einzelwerte["result"][$k]);
} else {
if(isset($Einzelwerte["result"][$k])) {
$Einzelwerte["result"][$k] += $v;
} else {
$Einzelwerte["result"][$k] = $v;
}
}
}
ksort($Einzelwerte["result"]);
}
}
// ----------------------
EOF

# Block sauber mit sed einfügen
sed -i -e '/$Einzelwerte = json_decode($result, true);/r /tmp/wetter_patch.txt' "$FILE"
rm /tmp/wetter_patch.txt
echo "Sued-West Patch V2 erfolgreich eingefuegt."
fi


Einfach abspeichern und mit sudo ./patch.sh einmal drüberbügeln. Das Skript putzt die alte, fehlerhafte Variante automatisch raus und fügt die V2 ein, die beide Arrays sauber addiert.

Warte dann einfach den nächsten regulären Forecast-Abruf ab (passiert automatisch immer 20 Minuten nach jeder 3. vollen Stunde). Danach summiert er beide Dächer und deine gestrichelte Kurve in Grafana schießt endlich nach oben!

dreamerpit
Beiträge: 61
Registriert: Mi 16. Aug 2023, 15:10
Danksagung erhalten: 3 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von dreamerpit »

Hi Uli,
hab gerade mal nachgesehen. Bei mir steht der Patch V2 auch zweimal drin...
Dann wetterdaten.php neu eingespielt, patch laufen lassen. Gleiches Ergebnis.
Gruß Peter

Geins
Beiträge: 31
Registriert: Mi 5. Okt 2022, 18:16
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von Geins »

Hi Peter,

verdammt, da hast du absolut recht. Da hab ich mir ein sauberes Eigentor geschossen!

Ich hab mir die originale wetterdaten.php gerade nochmal angesehen. Ulrich hat die Zeile $Einzelwerte = json_decode($result, true); da tatsächlich zweimal drin. Mein Skript war da schlicht zu stumpf und hat den Patch-Block einfach gnadenlos nach beiden Treffern reingeballert. Absolut mein Fehler.

Mach die wetterdaten.php nochmal frisch (Original reinkopieren oder Update drüber) und nimm direkt diese V3 hier. Da hab ich einen Riegel vorgeschoben: Das Skript greift sich jetzt exakt nur den ersten Treffer und setzt den Code genau da ab, wo er hingehört.

#!/bin/bash
FILE="/var/www/html/wetterdaten.php"

# Alten fehlerhaften Patch sauber entfernen (falls noch Reste da sind)
sed -i '/\/\/ --SUED-WEST PATCH/,/\/\/ ----------------------/d' "$FILE"

if grep -q "SUED-WEST PATCH V3" "$FILE"; then
echo "Patch V3 ist bereits installiert!"
else
# Temporäre Datei anlegen, um Copy-Paste-Fehler zu vermeiden
cat << 'EOF' > /tmp/wetter_patch.txt
// --SUED-WEST PATCH V3--
if (isset($PV_Nennleistung2) && $PV_Nennleistung2 > 0) {
$URL2 = str_replace("/".$Winkel."/".$Suedausrichtung."/".$PV_Nennleistung, "/".$Winkel2."/".$Suedausrichtung2."/".$PV_Nennleistung2, $URL);
$res2 = @file_get_contents($URL2);
$arr2 = json_decode($res2, true);
if(isset($arr2["result"])) {
foreach($arr2["result"] as $k => $v) {
if(is_array($v)) {
if(!isset($Einzelwerte["result"][$k])) $Einzelwerte["result"][$k] = array();
foreach($v as $zeit => $wert) {
if(isset($Einzelwerte["result"][$k][$zeit])) {
$Einzelwerte["result"][$k][$zeit] += $wert;
} else {
$Einzelwerte["result"][$k][$zeit] = $wert;
}
}
ksort($Einzelwerte["result"][$k]);
} else {
if(isset($Einzelwerte["result"][$k])) {
$Einzelwerte["result"][$k] += $v;
} else {
$Einzelwerte["result"][$k] = $v;
}
}
}
ksort($Einzelwerte["result"]);
}
}
// ----------------------
EOF

# Zeilennummer vom ERSTEN Treffer finden und exakt dort einfügen
LINE=$(grep -n '\$Einzelwerte = json_decode($result, true);' "$FILE" | head -n 1 | cut -d: -f1)

if [ -n "$LINE" ]; then
sed -i "${LINE}r /tmp/wetter_patch.txt" "$FILE"
echo "Sued-West Patch V3 erfolgreich eingefuegt."
else
echo "Fehler: Einsprungpunkt in wetterdaten.php nicht gefunden!"
fi
rm /tmp/wetter_patch.txt
fi


Einfach abspeichern, ausführen und fertig. Dann steht es nur noch einmal drin und summiert endlich sauber. Sorry für die Ehrenrunde!

Geins
Beiträge: 31
Registriert: Mi 5. Okt 2022, 18:16
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von Geins »

Männer, Kommando zurück und Finger weg von dem Code!

Ich hab mir den Code gerade nochmal angeschaut, hatte Kuddelmuddel in meinen Kopf. Dass der Patch bei euch zweimal in der wetterdaten.php auftaucht, ist kein Bug, sondern zwingend notwendig!

Ulrichs Original-Skript fragt die API nämlich zweimal getrennt ab: Zuerst holt es die reine Tagessumme (watthours/day/) und ein paar Zeilen weiter die detaillierte Verlaufskurve (watthours/period/). Wenn unser Patch nicht nach beiden Abfragen dazwischengrätscht und die Werte addiert, stimmt am Ende entweder eure Tagessumme nicht oder das Grafana-Dashboard zeigt nur die halbe Wahrheit an.

@Peter: Bei dir ist also alles im grünen Bereich. Dass der Block zweimal drinsteht, MUSS exakt so sein. Lass es genau so laufen und lösch da bloß nichts raus!

@PifPof: Bei dir hat es nur wegen einem Logikfehler im allerersten V1-Skript nicht addiert. Wenn du die V2 drübergebügelt hast, bist du jetzt auch safe.

Fazit für alle:
Wer das V2-Skript genutzt hat, hat alles richtig gemacht. Nicht wundern, dass der Code doppelt in der Datei steht. Einfach auf den nächsten automatischen API-Abruf warten, dann summieren sich eure Dächer auch hoffentlich nun sauber. Sorry nochmal für den Durcheinander.....

dreamerpit
Beiträge: 61
Registriert: Mi 16. Aug 2023, 15:10
Danksagung erhalten: 3 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von dreamerpit »

Hi Uli,
du musst dich nicht entschuldigen. Das ist aus meiner Sicht beim testen doch völlig ok. Teamwork...
patch V3 ist drin und läuft. Die Kurve hat sich aber nicht weiter geändert

dreamerpit
Beiträge: 61
Registriert: Mi 16. Aug 2023, 15:10
Danksagung erhalten: 3 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von dreamerpit »

ok, hat sich jetzt überschnitten. Kommando zurück auf patch v2

dreamerpit
Beiträge: 61
Registriert: Mi 16. Aug 2023, 15:10
Danksagung erhalten: 3 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von dreamerpit »

Hi Uli,
V2 ist wieder drin :D
Die reine Tagessumme ist aus meiner Sicht vielleicht nicht richtig. Deswegen ist die aufsummierte Kurve wohl nicht, oder ?

Geins
Beiträge: 31
Registriert: Mi 5. Okt 2022, 18:16
Hat sich bedankt: 11 Mal
Danksagung erhalten: 4 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von Geins »

dreamerpit hat geschrieben:
Fr 31. Jul 2026, 19:20
Hi Uli,
du musst dich nicht entschuldigen. Das ist aus meiner Sicht beim testen doch völlig ok. Teamwork...
patch V3 ist drin und läuft. Die Kurve hat sich aber nicht weiter geändert
Danke, finde es nur komisch, dass es bei mir recht gut passt...... Ja, die geladene Prognose ist für heute flacher als das was die Anlage tatsächlich gebracht hat. Die letzten drei Tage war es aber wirklich sehr identisch.
Können ja noch ein versuch machen. Importiere mal bitte mein Dashboard. Klar werden ein paar Dinge nicht passen, aber der Graph von der Leistung und Prognose sollte ja identisch zu deinem Dashboard sein. Nur zum ausschließen..... :lol: Glaube Ulrich lacht sich innerlich kaputt....
Dateianhänge
dashboard-1785518752836.json
(296.56 KiB) 1-mal heruntergeladen
Dashboard Screenshot.png

dreamerpit
Beiträge: 61
Registriert: Mi 16. Aug 2023, 15:10
Danksagung erhalten: 3 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von dreamerpit »

sorry, muss leider aufhören. Morgen weiter.
War jetzt doch viel schnell durcheinander. Da sind noch ein paar geschriebene Fragen offen.
Danke, hat Spass gemacht

Stephan Helfers
Beiträge: 47
Registriert: Di 7. Mai 2019, 17:50
Hat sich bedankt: 5 Mal
Danksagung erhalten: 2 Mal

Re: Die Solarprognose funktioniert nicht mehr.

Beitrag von Stephan Helfers »

Geins hat geschrieben:
Fr 31. Jul 2026, 18:28
Stephan Helfers hat geschrieben:
Fr 31. Jul 2026, 16:49
Hallo Uli,

ich habe deinen Patch auch mal ausprobiert, da ich auch 2 Dachhälften beleget habe. Nur funktioniert das ganze bei mir nicht so ganz. Der Patch fügt den Code 2mal in meine Wetterdaten.php ein, erstellt aber keine Formatierung, sonderm fängt jede Zeile von links an.In der Solaranzeige.log wird mir auch nur eine url angezeigt. Ich füge mal ein paar Auszüge zur Veranschaulichung bei.

Solaranzeige.log
31.07. 12:20:01 -Multi Regler Auslesen [Start].
31.07. 12:20:01 -Verarbeitung von: '1.user.config.php' Regler: 18
31.07. 12:20:01 |------------------- Start wetterdaten.php --------------------
31.07. 12:20:01 WET-Prognosedaten 1 werden abgeholt
31.07. 12:20:01 |---------------- Start E3DC Wechselrichter ---------------
31.07. 12:20:01 -E3DC: 192.168.170.112 Port: 502 GeräteID: 1
31.07. 12:20:01 -Hardware Version: Raspberry unbekannt
31.07. 12:20:01 -Alle 10 Minuten werden die Statistikdaten übertragen.
31.07. 12:20:01 * -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
31.07. 12:20:01 -Multi-Regler-Ausgang. 7
31.07. 12:20:02 WET-Prognosedaten 2 werden abgeholt
31.07. 12:20:02 WET-URL: https://api.forecast.solar/estimate/watthours/period/
31.07. 12:20:02 WET-Verbindung zum Wetterserver 'forecast.solar' erfolgreich.
31.07. 12:20:02 |------------------- Stop wetterdaten.php ---------------------
31.07. 15:20:01 |------------------- Start wetterdaten.php --------------------
31.07. 15:20:01 WET-Prognosedaten 1 werden abgeholt
31.07. 15:20:01 -Multi Regler Auslesen [Start].
31.07. 15:20:01 -Verarbeitung von: '1.user.config.php' Regler: 18
31.07. 15:20:01 |---------------- Start E3DC Wechselrichter ---------------
31.07. 15:20:01 -E3DC: 192.168.170.112 Port: 502 GeräteID: 1
31.07. 15:20:01 -Hardware Version: Raspberry Pi 4 Model B Rev 1.5
31.07. 15:20:01 -Alle 10 Minuten werden die Statistikdaten übertragen.
31.07. 15:20:01 * -Daten zur lokalen InfluxDB [ solaranzeige ] gesendet.
31.07. 15:20:01 -Multi-Regler-Ausgang. 7
31.07. 15:20:02 WET-Prognosedaten 2 werden abgeholt
31.07. 15:20:02 WET-URL: https://api.forecast.solar/estimate/watthours/period/
31.07. 15:20:02 WET-Verbindung zum Wetterserver 'forecast.solar' erfolgreich.
31.07. 15:20:02 |------------------- Stop wetterdaten.php ---------------------

1.user.config.php
/ PROGNOSEDATEN PROGNOSEDATEN PROGNOSEDATEN PROGNOSEDATEN
******************************************************************************/
// Die Wetterprognosedaten werden vom Server forecast.solar geholt.
// Die Daten sind kostenlos und eine Anmeldung ist nicht nötig.
//
// Sollen die aktuellen Prognosedaten geholt und abgespeichert werden?
// Bitte die Koordinaten des Standortes eingeben, sowie die PV-Nennleistung.
// Es kann mehrere Stunden dauern, bis die ersten Daten abgeholt werden.
//
$Prognosedaten = true; // false oder true
//
$Breitengrad =
$Laengengrad =
// 1.String (Ost)
$PV_Nennleistung = 3.05; // Summe der PV-Leistung in kWp
$Winkel = 40; // Modulwinkel 0 - 90
$Suedausrichtung = 45; // 0 = genau nach Süden +180 / -180
$Offset = 0; // Verschiebung der Gesamtkurve, falls nötig
$Prognose_Faktor = 1; // Dämpfung (z.B. 0.8) der Gesamtkurve, falls die Prognose zu hoch is
//
// 2.String (West)
$PV_Nennleistung2 = 6.71;
$Winkel2 = 40;
$Suedausrichtung2 = -135;
//

Vielleicht habe ich ja nur etwas übersehen.

Vielen Dank für deine Bemühungen
Stephan
Hallo Stephan,

danke für die Daten, die hast du in deinem Post ja direkt unter der 1.user.config.php mitgeschickt. Da gibt es allerdings ein paar Punkte, die du dringend korrigieren musst:

1. Deine Ausrichtungen (Himmelsrichtungen) stimmen nicht!
Du schreibst im Kommentar, String 1 sei "Ost", hast aber 45 eingetragen (45 = Süd-West). String 2 nennst du "West", hast aber -135 eingetragen (-135 = Nord-Ost).
Zur Info: 0 = exakt Süd, -90 = Ost, 90 = West.
Bitte pass deine Ausrichtungen ($Suedausrichtung und $Suedausrichtung2) entsprechend an, sonst rechnet Forecast für Dächer, die du gar nicht hast. Mein Patch-Skript ist universell und holt sich genau diese Daten aus deiner Config – egal ob Ost/West oder Süd/Nord. Wenn die Config falsch ist, ist auch die Prognose falsch.

2. Fehlende URL im Log:
Dass du in der solaranzeige.log nur eine URL siehst, ist absolut korrekt und kein Fehler! Der Patch holt die Werte deines zweiten Strings lautlos im Hintergrund ab und addiert sie zum Array. Das taucht im Logbuch schlichtweg nicht auf, summiert sich aber am Ende sauber für die Datenbank.

3. Doppelter Code & Formatierung:
Wenn das bei dir doppelt drin steht und die Formatierung zerschossen ist, hast du den Code offensichtlich mehrfach ausgeführt oder manuell falsch reinkopiert.
Hol dir am besten einmal die originale wetterdaten.php per Update zurück (oder lösch deine manuellen Einträge komplett raus). Nutze danach einmalig das "V2-Patch-Skript", welches bei Peter (dreamerpit) ist. Das Skript hat eine Sicherung eingebaut, damit es sich nicht doppelt installiert, und es hält die Formatierung sauber.

Gruß
Uli

Passe deine Winkel in der Config an, mach die Datei einmal sauber, lass das Patch-Skript laufen und dann sollte es gehen.
Vielen Dank für deine schnelle uns ausführliche Antwort.
Die Winkel habe ich korrigiert und das Script neu erstellt und ausgeführt, mal sehen ob jetzt etwas wird.

Toll das hier einem hier im Forum schnell und kompetent geholfen wird.

Schönen Abend noch.
Stephan

Zurück zu „Allgemeines“

Wer ist online?

Mitglieder in diesem Forum: wawuff und 3 Gäste