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

Also die Daten von solcast kommen mir auch komisch vor, die sind ja zum Teil doppelt so hoch wie von solarprognose! Sehr merkwürdig!

Ich nehm alles zurück, da ist wohl bei mir ein Fehler im Scrikt. Aufgrund der halbstündlichen Werte habe ich sie zur Stunde zusammenkopiert, das ist natürlich falsch :frowning:

Also alles gut!

Moin Moin,

Ich bekomme regelmäßig folgende Fehlermeldung. Kann jemand was dazu sagen?

Danke und Gruß Michael

Hi,

Hi Pitti, kannst du mir sagen, was du wo geändert hast? Bei mir sind die Werte auch recht hoch und ich sehe im Admininterface bei Solcast das die Werte auch auf 30 Minuten stehe, denke das ich ebenfalls deswegen so hohe Werte habe.

Danke dir.

Hi,

ich habe leider das Script komplett " reassimiliert" :slight_smile: … da ist kein Stein auf dem anderen geblieben!

Leider aus Zeitmangel noch nicht fertig, hatte mich erstmal mit solarprognose.de auseinandergesetzt!
Das ist jetzt aber fertig und kommt heute oder morgen hier ins Forum. Danach mach ich solcast.com hübsch :wink:

Falls Du selber schon basteln willst - hier was ich habe …

Ich nutze die Urls die man wie im Screen sich kopieren kann (also mit der Ressource-ID)

Habe dementsprechend das globale Array erweitert (viele Dinge brauch man auch nicht mehr, hab sie aber trotzdem drin gelassen - vorerst :slight_smile:

# Erste Anlage
$PVA['Garage'] = [ 
    'rid'        => '<hier Resource ID eintragen>',
    'kwp'        => '7.5', 
    'azimuth'    => 150,
    'tilt'       => 10,
    'efficiency' => 100,
    'lon'        => '48.xxxx', // richtige Werte eintragen
    'lat'        => '11.xxxx', // richtige Werte eintragen
];

Und dann habe ich 2 Funktionen:

function UpdateData($data)
{
    $fc = [];
    $hcount =0;
    foreach($data['forecasts'] as $o){
        $hour = date('H',strtotime($o['period_end']));
        $day  = date('z',strtotime($o['period_end'])) - date('z');
        if(isset($fc[$day][$hour])) {
            $fc[$day][$hour]['norm'] = ($fc[$day][$hour]['norm'] + $o['pv_estimate']) / 2;
            $fc[$day][$hour]['poor'] = ($fc[$day][$hour]['poor'] + $o['pv_estimate10']) / 2 ;
            $fc[$day][$hour]['more'] = ($fc[$day][$hour]['more'] + $o['pv_estimate90']) / 2;
        }
        else {
            $fc[$day][$hour] = [
                'hour'  => $hour,
                'norm'  => $o['pv_estimate'],
                'poor'  => $o['pv_estimate10'],
                'more'  => $o['pv_estimate90'],
            ];
        }
    }

    $eff = $plant["efficiency"] / 100;

    //Morgen und Mittagswerte
    foreach($fc as $d => $day){
        $n_am = 0; $n_pm = 0;
        $p_am = 0; $p_pm = 0;
        $m_am = 0; $m_pm = 0;
        foreach($day as $hour){
            if($hour["hour"] <13 ){
                $n_am += $hour["norm"];
                $p_am += $hour["poor"];
                $m_am += $hour["more"];
            }else{
                $n_pm += $hour["norm"];
                $p_pm += $hour["poor"];
                $m_pm += $hour["more"];
            }
        }
        $fc[$d]["norm"] = ['am' => $n_am * $eff, 'pm' => $n_pm * $eff, 'all' => ($n_am + $n_pm) * $eff];
        $fc[$d]["poor"] = ['am' => $p_am * $eff, 'pm' => $p_pm * $eff, 'all' => ($p_am + $p_pm) * $eff];
        $fc[$d]["more"] = ['am' => $m_am * $eff, 'pm' => $m_pm * $eff, 'all' => ($m_am + $m_pm) * $eff];
    }
    return $fc;
}

function SolCastData($token, $plant, $forecast) 
{
    // Which data
    $url = 'https://api.solcast.com.au/rooftop_sites/' . $plant['rid'];
    if($forecast) {
        $url .= '/forecasts?format=json';
    } else {
        $url .= '/estimated_actuals?format=json';
    }

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
    curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_TIMEOUT, 0);
    curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json', 
        'Authorization: Bearer ' . $SO_APIKEY
        ]);
    $response = curl_exec($ch);
    if ($response === false) {
        throw new ErrorException(curl_error($ch));
    }
    curl_close($ch);
//    $response = $SO_JSON;
    $data = json_decode($response, true);
   // print_r($data);
   return $data;
}

Weiter bin ich noch nicht wirklich :frowning: Aber in UpdateData kann man sehen wie die Daten aufaddiert und dann für die Stunde gemittelt werden (geteilt durch 2).

Rest kommt noch!

Heiko

1 „Gefällt mir“

sorry, dass ich jetzt erst antworte. ich war etwas beschäftigt mit einer Wärmepumpe über den Winter da hat PV nicht den riesen Walzer gespielt.
Allerdings waren im Modul ein paar Fehler drin.
Ich habe das jetzt nochmals umgebaut und es nutzt nun die ‚Globalstrahlung‘ der nächsten DWD Wetterstation um den Ertrag zu berechnen. Dieser sollte m.E. besser sein.
wer Lust hat, kann gerne testen. Meine Werte passen jetzt relativ gut die letzten Tage
stele99/pvForecast (github.com)

1 „Gefällt mir“

Hi Stele99,

Danke für Dein Modul - gerade installiert!

  • die Funktion Update() liefert bei mir false zurück :frowning:
  • pvFC_getForecast liefert ein Array mit Daten, aber nur die Wetterinfos sind gefüllt - pv_estimate ist immer 0

Was mache ich falsch? Hier mal meine Daten …

Hallo,
Du benötigst eine Wetterstation die die Einstrahlung liefert.
Das liefern leider nicht alle.
Probier mal eine andere in der Nähe.

Nach der Änderung musst du ggf noch aus einem Skript forceupdate aufrufen

Ah, okay! kann man das irgendwie erkennen ob Einstrahlung oder nicht?

Moin Moin,

und danke für die Aktualisierung…. Frage: kann man das Chart auch so konfigurieren, dass nur der aktuelle Tag angezeigt wird und nicht die nächsten 24 Std. Ggf. habe ich da auch was noch nicht verstanden.

Gruß Michael

Hallo zusammen,
ich habe nun eine Prüfung eingebaut, dass die Wetterstation prüft und ebenso prüft, ob die Strahlungswerte vorhanden sind.
Falls keine Strahlungswerte geliefert werden, bitte andere Wetterstation in der nähe auswählen.

Hallo Michael,
das Chart gibt den aktuellen Tag und weitere Tage einfach aus.
Es schneidet da ab, wo der Bildschirm aufhört.
Bisher ist nicht vorgesehen, dass das nur den aktuellen Tag anzeigt.

Hallo Steele99,

danke für die Rückmeldung. Spiele dann mal weiter rum. Heute zumindest passte die Vorhersage ganz gut. Und Fehlermeldungen gibt es nun auch nicht mehr. Danke Dir!!

Gruß Michael

Prima, gerne Rückmeldungen. Eigentlich müsste es mit der Globalstrahlung ganz gut passen, bei mir war es die letzten Tage auch bei unterschiedlichem Wetter recht gut. Was halt immer schwierig ist bei kleinen Wolken etc. da kann es natürlich größere Abweichungen geben. Wenn die Abweichungen bei jeder Wetterlage ähnlich sind, kann man ja etwas mit der Effizienz rumspielen.

1 „Gefällt mir“

Ich habe da noch mal eine Frage. Um die Werte mit meinen wirklichen Erträgen in einem Chart darstellen zu können, brauche ich die Forecastwerte in kWh. Dazu gibt es ja einen Schalter Wh —> kWh. Allerdings wird mit 1000 multipliziert statt zu dividieren. Im Ergebnis sind 1000 Wh doch 0,1 kWh und nicht 1000 kWh. Oder?

Gruß Michael

Hallo tissenm und auch an die Anderen.
Ich habe noch ein paar Korrekturen eingebaut! Das mit der Umrechnung sollte nun gehen.

Außerdem neu:
→ Es gibt 2 Wettermodelle zur Auswahl (ICON D2 - ziemlich genau 2km Abdeckung) und DWD-MOSMIX (wie gehabt).

→ Außerdem habe ich eine Option ‚AutoTune‘ eingeführt. Hiermit lernt die Instanz von der Abweichung der Prognose zu den Ist-Daten. Es ist aber notwendig, dass Ihr in Symcon eine Variable habt, wo die Tagesertragsdaten regelmäßig geschrieben werden.

wenn AutoTune aktiv ist, könnt Ihr mit
image

Die geloggten Infos abrufen.

Gerne versuchen - ist ein größeres Udpate.

1 „Gefällt mir“

Danke für dieses tolle Modul @Stele99 ich werde das jetzt auch mal testen. Aber nochmal zur Frage des Temperaturkoeffizienten… Die Frage wurde schon paar mal gestellt aber nie beantwortet. Welchen Koeffizienten nehme ich da (Pmax, Voc, Isc)? Meine Trina Module haben da Werte die stark von deinen 0,65 abweichen.

1 „Gefällt mir“

Hallo,

danke für die neue Version. Die Anpassung an das neue Wettermodell ist bestimmt gut, da bei mir die MOSMIX nur komische Daten geliefert haben. Daher hatte ich mir auch schon eine Art Anpassung (Vergleich Prognose/Ertrag) als Faktor errechnet und immer mit einbezogen.

Jetzt fehlt nur noch ein wenig Sonne …

Grüße
Björn

Guten Morgen
Ich habe dein Modul einmal neu eingespielt, erhalte aber immer noch die Meldung

Fehler beim Übernehmen der Änderungen
<br />
<b>Notice</b>:  Undefined index: TARGET in <b>/var/lib/symcon/modules/pvForecast/pvForecast/module.php</b> on line <b>43</b><br />
 (Code: -32603)

Da ich kein PHP kann, sagt mir das wenig.
Bernd

das ist etwas seltsam. Wann kommmt die Meldung? beim Speichern der Eigenschaften?
könntest du bitte mal die Instanz löschen und neu anlegen?