Jetzt mal noch ein ganz anderer, sehr interessanter Aspekt den @h5n1 ins Gespräch brachte! Und zwar die Modultemperatur der PV-Module. Diese hat ja unbestritten einen nicht unbedeutenden Einfluss auf den Ertrag.
Nun hat mir die KI überraschenderweise gesagt dass man diese problemlos berechnen könnte... Das sieht auch wirklich zunächst durchaus plausibel aus... ich poste hier mal die entsprechende Javascript-Funktion:
/**
* SAPM/Sandia: Glas/Glas, dachparallel (close roof mount)
* Inputs:
* - Epoa: POA Einstrahlung [W/m²]
* - Ta: Umgebungstemperatur [°C]
* - WS: Windgeschwindigkeit [m/s]
* Output:
* - Tm: Modultemperatur (Rückseite) [°C]
* - Tc: Zelltemperatur [°C]
* - fT: Temperaturfaktor auf Leistung/Wirkungsgrad [-]
* - lossPct: Leistungsänderung ggü. 25°C [%] (negativ = Verlust)
*/
function pvTempAndPowerFactor(Epoa, Ta, WS) {
const a = -2.98; // Sandia/SAPM Parameter: glass/cell/glass close roof mount
const b = -0.0471; // Wind-Kühlungsfaktor
const deltaT = 1.0; // Differenz zwischen Modulrückseite und Zelle
const E0 = 1000.0; // W/m² Referenzeinstrahlung STC
const WSkorr = 1.1 //Korrekturfaktor für Windexposition
// Temperaturkoeffizient der Leistung: -0.3 %/°C -> -0.003 1/°C
const gamma = -0.003; //ggf. nach Moduldatenblatt anpassen
WS= WS * WSkorr
// Modul- und Zelltemperatur
const Tm = Ta + Epoa * Math.exp(a + b * WS);
const Tc = Tm + (Epoa / E0) * deltaT;
// Temperaturfaktor relativ zu STC (25°C)
const fT = 1 + gamma * (Tc - 25);
// Leistungsabfall in %
const lossPct = (fT - 1) * 100;
return { Tm, Tc, fT, lossPct };
}
Der Aufruf wäre dann in unserem Fall z.B. so:
const r = pvTempAndPowerFactor(getState(OpenMedeoDp + ".global_tilted_irradiance").val,getState(OpenMedeoDp + ".temperature_2m").val,getState(OpenMedeoDp + ".wind_speed_10m").val)
var PrognoseMitTemp = Math.round(PrognoseBisher*r.fT);
wobei "OpenMedeoDp" der entsprechend zusammengesetzte Datenpunkt für die jeweils fragliche Stunde ist.
Was haltet ihr davon?