mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-07 19:04:20 +00:00
76_Solarforcast: contrib 0.80.1
git-svn-id: https://svn.fhem.de/fhem/trunk@27639 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
084bc00526
commit
72387f9e58
@ -9150,9 +9150,7 @@ return;
|
|||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Korrekturfaktoren und Qualität in Abhängigkeit von DWD
|
# Korrekturfaktoren und Qualität in Abhängigkeit von DWD
|
||||||
# Bewölkung errechnen:
|
# Bewölkung errechnen
|
||||||
# Abweichung PVreal / PVforecast bei eingeschalteter automat.
|
|
||||||
# Korrektur berechnen, im Circular Hash speichern
|
|
||||||
################################################################
|
################################################################
|
||||||
sub _calcCAQfromDWDcloudcover {
|
sub _calcCAQfromDWDcloudcover {
|
||||||
my $paref = shift;
|
my $paref = shift;
|
||||||
@ -9389,9 +9387,9 @@ sub _calcCAQfromAPIPercentil {
|
|||||||
next if(!$pvval);
|
next if(!$pvval);
|
||||||
|
|
||||||
$paref->{hour} = $h;
|
$paref->{hour} = $h;
|
||||||
my ($pvhis,$fchis,$dnum) = __Pv_Fc_Dnum_Hist ($paref); # historischen Percentilfaktor / Qualität ermitteln
|
my ($pvhis,$fchis,$dnum) = __Pv_Fc_Dnum_Hist ($paref); # historischen Percentilfaktor / Qualität ermitteln
|
||||||
|
|
||||||
my ($oldfac, $oldq) = CircularAutokorrVal ($hash, sprintf("%02d",$h), 'percentile', 1.0); # bisher definiertes Percentil/Qualität der Stunde des Tages der entsprechenden Bewölkungsrange
|
my ($oldfac, $oldq) = CircularAutokorrVal ($hash, sprintf("%02d",$h), 'percentile', 0);
|
||||||
$oldfac = 1.0 if(1 * $oldfac == 0 || $oldfac >= 10);
|
$oldfac = 1.0 if(1 * $oldfac == 0 || $oldfac >= 10);
|
||||||
|
|
||||||
my @sts = split ",", ReadingsVal($name, 'inverterStrings', '');
|
my @sts = split ",", ReadingsVal($name, 'inverterStrings', '');
|
||||||
@ -9400,17 +9398,17 @@ sub _calcCAQfromAPIPercentil {
|
|||||||
my $est50 = 0;
|
my $est50 = 0;
|
||||||
|
|
||||||
for my $s (@sts) {
|
for my $s (@sts) {
|
||||||
$est50 += SolCastAPIVal ($hash, $s, $tmstr, 'pv_estimate50', 0); # Standardpercentil
|
$est50 += SolCastAPIVal ($hash, $s, $tmstr, 'pv_estimate50', 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!$est50) { # kein Standardpercentile vorhanden
|
if(!$est50) {
|
||||||
debugLog ($paref, "pvCorrection", "Simple Corrf -> hour: $h, the correction factor can't be calculated because of the default percentile has no value yet");
|
debugLog ($paref, "pvCorrection", "Simple Corrf -> hour: $h, the correction factor can't be calculated because of no PV forecast");
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $perc = sprintf "%.2f", ($pvval / $est50); # berechneter Faktor der Stunde -> speichern in pvHistory
|
my $perc = sprintf "%.2f", ($pvval / $est50); # berechneter Faktor der Stunde -> speichern in pvHistory
|
||||||
|
|
||||||
$paref->{pvcorrf} = $perc.'/1'; # Korrekturfaktor / Qualität in History speichern
|
$paref->{pvcorrf} = $perc.'/1'; # Korrekturfaktor / Qualität in History speichern
|
||||||
$paref->{nhour} = sprintf("%02d",$h);
|
$paref->{nhour} = sprintf("%02d",$h);
|
||||||
$paref->{histname} = "pvcorrfactor";
|
$paref->{histname} = "pvcorrfactor";
|
||||||
|
|
||||||
@ -9420,8 +9418,7 @@ sub _calcCAQfromAPIPercentil {
|
|||||||
delete $paref->{nhour};
|
delete $paref->{nhour};
|
||||||
delete $paref->{pvcorrf};
|
delete $paref->{pvcorrf};
|
||||||
|
|
||||||
debugLog ($paref, 'pvCorrection', "Simple Corrf -> PV estimate for hour of day >$h<: $est50");
|
debugLog ($paref, 'pvCorrection', "Simple Corrf -> PV for hour >$h< -> estimate without corr factor: $est50, real: $pvval");
|
||||||
debugLog ($paref, 'pvCorrection', "Simple Corrf -> number checked days: $dnum, pvreal: $pvval, correction factor: $perc");
|
|
||||||
|
|
||||||
my $factor;
|
my $factor;
|
||||||
my ($usenhd) = __useNumHistDays ($name); # ist Attr affectNumHistDays gesetzt ?
|
my ($usenhd) = __useNumHistDays ($name); # ist Attr affectNumHistDays gesetzt ?
|
||||||
@ -9451,7 +9448,7 @@ sub _calcCAQfromAPIPercentil {
|
|||||||
Log3 ($name, 3, "$name - new correction factor calculated: $factor (old: $oldfac) for hour: $h calculated") if($factor != $oldfac);
|
Log3 ($name, 3, "$name - new correction factor calculated: $factor (old: $oldfac) for hour: $h calculated") if($factor != $oldfac);
|
||||||
}
|
}
|
||||||
|
|
||||||
debugLog ($paref, 'pvCorrection', "Simple Corrf -> old circular correction: $oldfac, new correction: $factor");
|
debugLog ($paref, 'pvCorrection', "Simple Corrf -> old circular correction: $oldfac, new correction: $factor, number of days for calc: $dnum");
|
||||||
debugLog ($paref, 'saveData2Cache', "Simple Corrf -> write correction factor into circular Hash: $factor, Hour $h");
|
debugLog ($paref, 'saveData2Cache', "Simple Corrf -> write correction factor into circular Hash: $factor, Hour $h");
|
||||||
|
|
||||||
my $type = $paref->{type};
|
my $type = $paref->{type};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user