Gibt es Prognosedaten für die tägl.Erzeugungsmenge einer PV Anlage?

du hast recht, die Variablen waren falsch benannt - sorry. (ist korrigiert)
Also nochmals zu Verständnis aller:
beim Parameter: $PV_CURRENT wir eine Variable erwartet, die die aktuelle Leistung der PV angibt. Diese sollte Logging aktiviert haben.
Dahinter verbirgt sich die Logik:
Das Neuronale Netz wird trainiert mit:
→ der Globalstrahlung in der letzten Stunde
→ Dem gemittelten Sonnenstand der letzten Stunde
----> Erwaret wird vom Neuronalen Netz, dass der Output, also dem Ertrag der letzten Stunde, entspricht. (über den Archivhandler der Variable $PV_CURRENT wird die gemittelte (AVG) Leistung der Anlage in der letzten Stunde ausgelesen).

Wenn das Netz gut trainiert ist, wird erwaret, dass durch Input von Sonnenstand + Globalstrahlung der korrekte Ertrag berechnet wird.

hoffe, das ist jetzt einigermaßen logisch erklärt.

was meinst Du damit?

Wenn ich das jetzt richtig verstehe, wird nur mit den Werten der letzten vergangenen Stunde gerechnet.
Ich hatte mich schon gewundert, wie du Prognosedaten, also Daten aus der Zukunft in das Archiv schreiben kannst.
Das heißt doch aber auch, das der gelernte Wert nur so gut ist, wie die Abweichung eine Stunde aus der Vergangenheit ist zwischen erzeugtem Ertrag und dem berechneten Ertrag aus der Globalstrahlung der letzten Stunde?
Ich dachte, du kannst schon einen Tag im voraus genaue Werte liefern, weil die Abweichung aus dem Vortag mit dem aktuellen verglichen wird?

Na z.B. so …

/* ### Einstellungen ########################################### */

$PV_MAX        = 8000; // Watt Peak der PV Anlage
$PV_CURRENT    = 39680; // Variable mit aktueller Leistung der PV Anlage - sollte moeglichst realtime sein.
$PV_LAT        = 48.024873309;   // Breitengrad der Anlage
$PV_LON        = 8.929772606;    // Laengengrad der Anlage

$FC_STATION   = 10818;  // Stationsid der DWD Vorhersage https://wettwarn.de/mosmix/mosmix.html
$ID_ARCHIVE   = 26472;// ID des Archive Handlers
$GSMAX        = 1800; // Maximale Globalstrahlung


$NN_NAME      = "pv_garage"; // Name für neuronales Netz (=Dateiname für Persistenz), kann frei geaendert werden.keine sonderzeichen

$FC_VARIABLE  = true;  // Erzeuge Variable fuer forecast  in Watt fuer heute und morgen
$FC_COMPARE   = true; //true wenn PV-Forecast in Variable gespeichert werden sollen fuer spaeteren Vergleich (SOLL /IST)
$FC_CHART     = true; // Generiere Vorhersagechart fr den aktuellen Tag und Morgen

$NN_TRAIN     = 1;      // 1 = trainieren aktiv, 0 kein Training mehr, -1 Training löschen
$NN_TRAIN_MAX = 365;   // Anzahl der Tage für Training // Achtun CPU Bedarf steigt!


/* #### weitere CONFIG Daten (intern) ################################### */

Den Stationscode müsstest du vermutlich eher als String verarbeiten, da dieser an einigen Stationen auch Buchstaben enthält.

$FC_STATION   = 10818;

hilf mir mal mit dem markdown - bei mir zeigt er im editor der foren-softare nur das code symbol an.
wie krieg ich syntax highlightning für code in dieser foren software? - bin ich zu doof?

nicht ganz:
Das script legt ja variablen an PV Forecast und PV Wirkleistung und aktiviert bei beiden das Logging.
Dort wird quasi der Durschnittsertrag und die Globalstrahlung der letzten Stunde weggespeichert.
Zum lernen werden diese Historien-Daten hergenommen - nicht nur die letzte Stunde - das würde nix werden - Das Netz braucht ja schon die verschiedenen Parameter Strahlung, Sonnenstand und Ertrag um überhaupt Vorhersagen treffen zu können - und das zu unterschiedlichen Zeiten / Ständen.

OK, das macht so Sinn, hatte das vorher anders verstanden.

Den Code fügst du am Besten hiermit ein …

2022-09-14_20h34_20

Ja den Button hab ich verwendet. Trotzdem wir nicht PHP formatiert. Vielleicht kommt der Parser mit dem großen Code nicht klar.

Ja hast recht, da scheint eine Zeilenbegrenzung zu bestehen.
Wenn ich die Hälfte weg nehme geht es.

@paresy
Lässt sich die Begrenzung nicht etwas großzügiger einstellen?

Bei mir ist das die Variable „Eingang Gesamtleistung“

Dann habe ich noch für die Erträge jeweils Variablen:

Müsste dann die Erstere sein, die hier passt

Ja, die hatte ich im Skript auch eingetragen.

Dann lass das Skript mal 2-3 Tage laufen und berichte gerne mal, wie die KI reagiert
Es gibt noch zwei HTML String Variablen unter dem Script, die du ins Webfront verlinken kannst.
Und vielleicht das aktuelle Script aus obigem Post verwenden. Hatte noch 2 bugs eliminiert.

Ja das Skript aktualisiere ich jetzt noch. Nochmals Danke für deine Mühe.

1 „Gefällt mir“

Das Ereignis ist korrekt das es 00:10:00 beginnt, aber spielt ja auch keine Rolle.

Passt startet um 00:10 jede Stunde 10 nach.
Da schaut das Script wie der Ertrag letzte Stunde war und speichert die Daten weg. Außerdem wird noch diverses aktualisiert

1 „Gefällt mir“

Habe gerade gesehen was ich für ein Blödsinn geschrieben habe. Es sollte natürlich Eingang A+B heißen. :roll_eyes:

 // Tageswerte in Variable Werte ausgeben
    if($FC_VARIABLE){
        $id = CreateVariableByName($_IPS['SELF'], "Erwarteter Ertrag Heute", 2, "~Watt");
        $wsum = 0;
        foreach($fc["hourly"] as $fh){
            if(date("z", $fh["ts"]) == date('z'))$wsum += $fh["pv_estimate"];
        }
        // nur vor 8 Forecast ausgeben
        if(date('G')<8)SetValue($id,$wsum);

        $id = CreateVariableByName($_IPS['SELF'], "Erwarteter Ertrag Morgen", 2, "~Watt");
        $wsum = 0;
        foreach($fc["hourly"] as $fh){
            if(date("z", $fh["ts"]) == date('z',time()+3600*24))$wsum += $fh["pv_estimate"];

Das angegebene Profil stimmt noch nicht, es müssten Wh Stunden sein, wenn es denn der Ertrag sein sollte :wink:

… und kannst du dir diese Meldungen noch mal anschauen …?

Heute mal die ersten Daten angezeigt bekommen, bin mal gespannt ob das Ganze in etwa zutrifft:

Edit: Ertrag von Heute (wird noch minimal nach oben gehen)

Hallo,

ich wollte das Skript auch mal testen und berichten …
Woher komme ich den nachfolgenden Wert ?

Habe ihn erstmal bei 1800 belassen.

Ansonsten bekomme ich folgende Fehlermeldung:


Warning: Use of undefined constant P425 - assumed 'P425' (this will throw an Error in a future version of PHP) in /var/lib/symcon/scripts/22941.ips.php on line 34

Warning: A non-numeric value encountered in /var/lib/symcon/scripts/22941.ips.php on line 214
Noch zu wenig Trainingsdaten.

Das müsste der Fehler sein, der bereits angesprochen wurde, da es Stationen gibt die Buchstaben enthalten und daher als STRING zu behandeln wären.

Fliesen die Änderungen bzw. Korrekturen hier im Thread in das erste gepostet Skript mit ein ?
Oder wird es versioniert und immer wieder neu gepostet ?

Grüße
Björn

Den Wert kannst du so belassen.

Skript aus Post #43 ist das aktuelle.