mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-05-04 20:17:45 +00:00
76_Solarforcast: contrib 0.15.2
git-svn-id: https://svn.fhem.de/fhem/trunk@24006 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
97012b05fd
commit
57226d8a9c
@ -116,6 +116,7 @@ BEGIN {
|
|||||||
|
|
||||||
# Versions History intern
|
# Versions History intern
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"0.15.2" => "19.03.2021 some bug fixing ",
|
||||||
"0.15.1" => "18.03.2021 replace ThisHour_ by NextHour00_ ",
|
"0.15.1" => "18.03.2021 replace ThisHour_ by NextHour00_ ",
|
||||||
"0.15.0" => "18.03.2021 delete overhanging readings in sub _transferDWDForecastValues ",
|
"0.15.0" => "18.03.2021 delete overhanging readings in sub _transferDWDForecastValues ",
|
||||||
"0.14.0" => "17.03.2021 new getter PVReal, weatherData, consumption total in currentMeterdev ",
|
"0.14.0" => "17.03.2021 new getter PVReal, weatherData, consumption total in currentMeterdev ",
|
||||||
@ -1132,7 +1133,10 @@ sub centralTask {
|
|||||||
|
|
||||||
RemoveInternalTimer($hash, "FHEM::SolarForecast::centralTask");
|
RemoveInternalTimer($hash, "FHEM::SolarForecast::centralTask");
|
||||||
|
|
||||||
### nicht mehr benötigte Readings löschen - kann später wieder raus !!
|
### nicht mehr benötigte Readings/Daten löschen - kann später wieder raus !!
|
||||||
|
for my $i (keys %{$data{$type}{$name}{pvhist}}) {
|
||||||
|
delete $data{$type}{$name}{pvhist}{$i}{"00"};
|
||||||
|
}
|
||||||
deleteReadingspec ($hash, "Today_Hour.*_Consumption");
|
deleteReadingspec ($hash, "Today_Hour.*_Consumption");
|
||||||
deleteReadingspec ($hash, "ThisHour_.*");
|
deleteReadingspec ($hash, "ThisHour_.*");
|
||||||
deleteReadingspec ($hash, "Today_PV");
|
deleteReadingspec ($hash, "Today_PV");
|
||||||
@ -1367,8 +1371,9 @@ sub _transferDWDForecastValues {
|
|||||||
for my $num (0..47) {
|
for my $num (0..47) {
|
||||||
my ($fd,$fh) = _calcDayHourMove ($chour, $num);
|
my ($fd,$fh) = _calcDayHourMove ($chour, $num);
|
||||||
|
|
||||||
|
my $num1 = $num-1;
|
||||||
if($fd > 1) { # überhängende Readings löschen
|
if($fd > 1) { # überhängende Readings löschen
|
||||||
deleteReadingspec ($hash, "NextHour".$num.".*");
|
deleteReadingspec ($hash, "NextHour".$num1.".*");
|
||||||
next;
|
next;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1376,11 +1381,16 @@ sub _transferDWDForecastValues {
|
|||||||
|
|
||||||
Log3($name, 5, "$name - collect DWD forecast data: device=$fcname, rad=fc${fd}_${fh}_Rad1h, Val=$v");
|
Log3($name, 5, "$name - collect DWD forecast data: device=$fcname, rad=fc${fd}_${fh}_Rad1h, Val=$v");
|
||||||
|
|
||||||
$time_str = "NextHour".sprintf "%02d", $num;
|
if ($num1 >= 0) {
|
||||||
$epoche = $t + (3600*$num);
|
$time_str = "NextHour".sprintf "%02d", $num1;
|
||||||
|
$epoche = $t + (3600*$num1);
|
||||||
|
}
|
||||||
|
|
||||||
my $calcpv = calcPVforecast ($name, $v, $fh); # Vorhersage gewichtet kalkulieren
|
my $calcpv = calcPVforecast ($name, $v, $fh); # Vorhersage gewichtet kalkulieren
|
||||||
$data{$hash->{TYPE}}{$name}{pvfc}{sprintf("%02d",$fh)} = $calcpv if($num < 24); # Hilfshash Wert PV forecast Forum: https://forum.fhem.de/index.php/topic,117864.msg1133350.html#msg1133350
|
|
||||||
|
if($num < 24 && $fh && $fh < 24) { # Ringspeicher PV forecast Forum: https://forum.fhem.de/index.php/topic,117864.msg1133350.html#msg1133350
|
||||||
|
$data{$hash->{TYPE}}{$name}{pvfc}{sprintf("%02d",$fh)} = $calcpv;
|
||||||
|
}
|
||||||
|
|
||||||
push @$daref, "${time_str}_PVforecast:".$calcpv." Wh";
|
push @$daref, "${time_str}_PVforecast:".$calcpv." Wh";
|
||||||
push @$daref, "${time_str}_Time:" .TimeAdjust ($epoche); # Zeit fortschreiben
|
push @$daref, "${time_str}_Time:" .TimeAdjust ($epoche); # Zeit fortschreiben
|
||||||
@ -1391,7 +1401,7 @@ sub _transferDWDForecastValues {
|
|||||||
push @$daref, "Today_Hour".sprintf("%02d",$fh)."_PVforecast:$calcpv Wh";
|
push @$daref, "Today_Hour".sprintf("%02d",$fh)."_PVforecast:$calcpv Wh";
|
||||||
}
|
}
|
||||||
|
|
||||||
if($fd == 0) {
|
if($fd == 0 && $fh) {
|
||||||
$paref->{calcpv} = $calcpv;
|
$paref->{calcpv} = $calcpv;
|
||||||
$paref->{histname} = "pvfc";
|
$paref->{histname} = "pvfc";
|
||||||
$paref->{nhour} = sprintf("%02d",$fh);
|
$paref->{nhour} = sprintf("%02d",$fh);
|
||||||
@ -1439,8 +1449,12 @@ sub _transferWeatherValues {
|
|||||||
my ($fd,$fh) = _calcDayHourMove ($chour, $num);
|
my ($fd,$fh) = _calcDayHourMove ($chour, $num);
|
||||||
last if($fd > 1);
|
last if($fd > 1);
|
||||||
|
|
||||||
$time_str = "NextHour".sprintf "%02d", $num;
|
my $num1 = $num-1;
|
||||||
$epoche = $t + (3600*$num);
|
|
||||||
|
if ($num1 >= 0) {
|
||||||
|
$time_str = "NextHour".sprintf "%02d", $num1;
|
||||||
|
$epoche = $t + (3600*$num1);
|
||||||
|
}
|
||||||
|
|
||||||
my $wid = ReadingsNum($fcname, "fc${fd}_${fh}_ww", -1);
|
my $wid = ReadingsNum($fcname, "fc${fd}_${fh}_ww", -1);
|
||||||
my $neff = ReadingsNum($fcname, "fc${fd}_${fh}_Neff", 0); # Effektive Wolkendecke
|
my $neff = ReadingsNum($fcname, "fc${fd}_${fh}_Neff", 0); # Effektive Wolkendecke
|
||||||
@ -1464,8 +1478,8 @@ sub _transferWeatherValues {
|
|||||||
$hash->{HELPER}{"${time_str}_CloudCover"} = $neff;
|
$hash->{HELPER}{"${time_str}_CloudCover"} = $neff;
|
||||||
$hash->{HELPER}{"${time_str}_RainProb"} = $r101;
|
$hash->{HELPER}{"${time_str}_RainProb"} = $r101;
|
||||||
|
|
||||||
if($num < 24) {
|
if($num < 24 && $fh && $fh < 24) { # Ringspeicher Weather Forum: https://forum.fhem.de/index.php/topic,117864.msg1139251.html#msg1139251
|
||||||
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{id} = $wid; # Hilfshash Wert Weather Forum: https://forum.fhem.de/index.php/topic,117864.msg1139251.html#msg1139251
|
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{id} = $wid;
|
||||||
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{txt} = $txt;
|
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{txt} = $txt;
|
||||||
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{cloudcover} = $neff;
|
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{cloudcover} = $neff;
|
||||||
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{rainprob} = $r101;
|
$data{$type}{$name}{weather}{sprintf("%02d",$fh)}{rainprob} = $r101;
|
||||||
@ -3516,8 +3530,8 @@ werden weitere SolarForecast Devices zugeordnet.
|
|||||||
<ul>
|
<ul>
|
||||||
<a name="pvHistory"></a>
|
<a name="pvHistory"></a>
|
||||||
<li><b>pvHistory </b> <br>
|
<li><b>pvHistory </b> <br>
|
||||||
Listet die historischen Werte der letzten Tage (max. 31) sortiert nach dem Tagesdatum und der Stunde des jeweiligen
|
Listet die historischen Werte der letzten Tage (max. 31) sortiert nach dem Tagesdatum und Stunde.
|
||||||
Tages auf.
|
Die Stundenangaben beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
|
||||||
Dabei sind <b>pvreal</b> der reale PV Ertrag, <b>pvforecast</b> der prognostizierte PV Ertrag und <b>gridcon</b>
|
Dabei sind <b>pvreal</b> der reale PV Ertrag, <b>pvforecast</b> der prognostizierte PV Ertrag und <b>gridcon</b>
|
||||||
der Netzbezug der jeweiligen Stunde.
|
der Netzbezug der jeweiligen Stunde.
|
||||||
</li>
|
</li>
|
||||||
@ -3527,8 +3541,8 @@ werden weitere SolarForecast Devices zugeordnet.
|
|||||||
<ul>
|
<ul>
|
||||||
<a name="pvForecast"></a>
|
<a name="pvForecast"></a>
|
||||||
<li><b>pvForecast </b> <br>
|
<li><b>pvForecast </b> <br>
|
||||||
Listet die im Ringspeicher vorhandenen PV Vorhersagewerte der kommenden 24h auf. Die Stundenangaben beziehen sich auf den
|
Listet die im Ringspeicher vorhandenen PV Vorhersagewerte der kommenden 24h auf.
|
||||||
Beginn der Stunde, z.B. bezieht sich 09 auf die Zeit von 08:00-09:00.
|
Die Stundenangaben beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
@ -3536,8 +3550,8 @@ werden weitere SolarForecast Devices zugeordnet.
|
|||||||
<ul>
|
<ul>
|
||||||
<a name="pvReal"></a>
|
<a name="pvReal"></a>
|
||||||
<li><b>pvReal </b> <br>
|
<li><b>pvReal </b> <br>
|
||||||
Listet die im Ringspeicher vorhandenen PV Erzeugungswerte der letzten 24h auf. Die Stundenangaben beziehen sich auf die Stunde
|
Listet die im Ringspeicher vorhandenen PV Erzeugungswerte der letzten 24h auf.
|
||||||
des Tages, z.B. Stunde 09 ist die Zeit von 08:00-09:00.
|
Die Stundenangaben beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
@ -3545,8 +3559,8 @@ werden weitere SolarForecast Devices zugeordnet.
|
|||||||
<ul>
|
<ul>
|
||||||
<a name="weatherData"></a>
|
<a name="weatherData"></a>
|
||||||
<li><b>weatherData </b> <br>
|
<li><b>weatherData </b> <br>
|
||||||
Listet die im Ringspeicher vorhandenen Wetterdaten der kommenden 24h auf. Die Stundenangaben beziehen sich auf den
|
Listet die im Ringspeicher vorhandenen Wetterdaten der kommenden 24h auf.
|
||||||
Beginn der Stunde, z.B. bezieht sich 09 auf die Zeit von 08:00-09:00.
|
Die Stundenangaben beziehen sich auf die Stunde des Tages, z.B. bezieht sich die Stunde 09 auf die Zeit von 08 - 09 Uhr.
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<br>
|
<br>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user