2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-02-25 16:05:19 +00:00

76_SolarForecast.pm: contrib 0.68.6

git-svn-id: https://svn.fhem.de/fhem/trunk@26486 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
nasseeder1 2022-10-05 19:32:45 +00:00
parent c41fd07eef
commit a582072c07

View File

@ -126,6 +126,7 @@ BEGIN {
# Versions History intern
my %vNotesIntern = (
"0.68.6 "=> "05.10.2022 new attribute solCastPercentile ",
"0.68.5 "=> "03.10.2022 extent plant configuration check ",
"0.68.4 "=> "03.10.2022 do ___setLastAPIcallKeyData if response_status, generate events of Today_MaxPVforecast.* in every cycle ".
"add SolCast section in _graphicHeader, change default colors and settings, new reading Today_PVreal ".
@ -739,6 +740,7 @@ sub Initialize {
"showLink:1,0 ".
"showNight:1,0 ".
"showWeather:1,0 ".
"solCastPercentile:slider,10,10,90 ".
"spaceSize ".
"Wh_kWh:Wh,kWh ".
"weatherColor:colorpicker,RGB ".
@ -1980,6 +1982,19 @@ sub __solCast_ApiResponse {
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate10} += sprintf "%.0f", ($pvest10 * ($period/60) * 1000);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate90} += sprintf "%.0f", ($pvest90 * ($period/60) * 1000);
## erstellen Zusatzpercentile
###############################
my $lowdm = ($data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} - $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate10}) / 4;
my $highdm = ($data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate90} - $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate}) / 4;
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate20} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} - ($lowdm * 3);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate30} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} - ($lowdm * 2);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate40} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} - ($lowdm * 1);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate60} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} + ($highdm * 1);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate70} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} + ($highdm * 2);
$data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate80} = $data{$type}{$name}{solcastapi}{$string}{$starttmstr}{pv_estimate} + ($highdm * 3);
$k += 1;
}
}
@ -2675,12 +2690,12 @@ sub centralTask {
#deleteReadingspec ($hash, "CurrentHourPVforecast");
#deleteReadingspec ($hash, "NextHours_Sum00_PVforecast");
deleteReadingspec ($hash, "nextPolltime");
delete $data{$type}{$name}{solcastapi}{'All'};
delete $data{$type}{$name}{solcastapi}{'#All'};
delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{todaySolCastAPIcalls};
delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{currentAPIInterval};
delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{todayDoneAPIcalls};
#deleteReadingspec ($hash, "nextPolltime");
#delete $data{$type}{$name}{solcastapi}{'All'};
#delete $data{$type}{$name}{solcastapi}{'#All'};
#delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{todaySolCastAPIcalls};
#delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{currentAPIInterval};
#delete $data{$type}{$name}{solcastapi}{'?All'}{'?All'}{todayDoneAPIcalls};
###############################################################
@ -2744,10 +2759,10 @@ sub centralTask {
if (isSolCastUsed ($hash)) {
_getRoofTopData ($centpars); # SolCast API Strahlungswerte abrufen
_transferSolCastRadiationValues ($centpars); # SolCast API Strahlungswerte übertragen
_transferSolCastRadiationValues ($centpars); # SolCast API Strahlungswerte übertragen und Forecast erstellen
}
else {
_transferDWDRadiationValues ($centpars); # DWD Strahlungswerte übertragen
_transferDWDRadiationValues ($centpars); # DWD Strahlungswerte übertragen und Forecast erstellen
}
_calcMaxEstimateToday ($centpars); # heutigen Max PV Estimate & dessen Tageszeit ermitteln
@ -3470,7 +3485,11 @@ sub __calcSolCastEstimates {
$peak *= 1000;
my $est = SolCastAPIVal ($hash, $string, $wantdt, 'pv_estimate', 0);
my $perc = AttrVal ($name, 'solCastPercentile', 50); # Percentile Auswahl
$perc = q{} if($perc == 50);
my $est = SolCastAPIVal ($hash, $string, $wantdt, 'pv_estimate', 0); # Estimate mittleres Percentile
$est = SolCastAPIVal ($hash, $string, $wantdt, 'pv_estimate'.$perc, $est);
my $pv = sprintf "%.1f", ($est * $ccf * $rcf);
$lh = { # Log-Hash zur Ausgabe
@ -10306,7 +10325,7 @@ Ein/Ausschaltzeiten sowie deren Ausführung vom SolarForecast Modul übernehmen
<a id="SolarForecast-attr-cloudFactorDamping"></a>
<li><b>cloudFactorDamping </b><br>
Prozentuale Mehrgewichtung der Berücksichtigung des Bewölkungsfaktors bei der solaren Vorhersage. <br>
Prozentuale Mehrgewichtung des Bewölkungsfaktors bei der solaren Vorhersage. <br>
Größere Werte vermindern, kleinere Werte erhöhen tendenziell den prognostizierten PV Ertrag (Dämpfung der PV
Prognose durch den Bewölkungsfaktor).<br>
(default: 35)
@ -10726,7 +10745,7 @@ Ein/Ausschaltzeiten sowie deren Ausführung vom SolarForecast Modul übernehmen
<a id="SolarForecast-attr-rainFactorDamping"></a>
<li><b>rainFactorDamping </b><br>
Prozentuale Mehrgewichtung der Berücksichtigung des Regenprognosefaktors bei der solaren Vorhersage. <br>
Prozentuale Mehrgewichtung des Regenprognosefaktors bei der solaren Vorhersage. <br>
Größere Werte vermindern, kleinere Werte erhöhen tendenziell den prognostizierten PV Ertrag (Dämpfung der PV
Prognose durch den Regenfaktor).<br>
(default: 10)
@ -10775,7 +10794,25 @@ Ein/Ausschaltzeiten sowie deren Ausführung vom SolarForecast Modul übernehmen
Wettericons anzeigen. <br>
(default: 1)
</li>
<br>
<br>
<a id="SolarForecast-attr-solCastPercentile"></a>
<li><b>solCastPercentile </b><br>
(nur bei Verwendung der SolCast API) <br><br>
Auswahl des Vorhersageszenarios. <br>
SolCast liefert neben der deterministischen Vorhersage (die nur einen einzigen Wert ergibt)
ebenfalls probabilistische Vorhersagedaten in Form von Konfidenzintervallen, die eine
10 %- und 90 %-Wahrscheinlichkeitsgrenze um einen mittleren Prognosewert darstellen. <br>
Die '10'-Szenarien stellen die untere Grenze dessen dar, was in der Vorhersage erwartet wird.
Die '90'-Szenarien stellen die Obergrenze dessen dar, was in den Prognosedaten erwartet wird. <br>
Weitere Informationen zur SolCast Vorhersageerstellung findet man auf dieser
<a href="https://articles.solcast.com.au/en/articles/2963469-solcast-probabilistic-forecasting-fields-what-are-they-how-do-we-create-them">SolCast-Seite</a>.
<br>
(default: 50 = mittlerer Prognosewert)
</li>
<br>
<a id="SolarForecast-attr-spaceSize"></a>
<li><b>spaceSize &lt;value&gt; </b><br>