From 7e35a1ef86a5348c6c5daef08d91711bd2764d43 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Thu, 17 Dec 2020 13:35:52 +0000 Subject: [PATCH] 76_Solarforcast: contrib 0.1.0 git-svn-id: https://svn.fhem.de/fhem/trunk@23371 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 51337ceee..5858ab8b4 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -153,7 +153,7 @@ my @chours = (5..21); # St my $defpvme = 16.52; # default Wirkungsgrad Solarmodule my $definve = 98.3; # default Wirkungsgrad Wechselrichter my $kJtokWh = 0.00027778; # Umrechnungsfaktor kJ in kWh -my $maxvariance = 0.6; # max. Varianz pro Durchlauf Berechnung Autokorrekturfaktor +my $maxvariance = 0.3; # max. Varianz pro Durchlauf Berechnung Autokorrekturfaktor my $definterval = 70; # Standard Abfrageintervall ################################################################ @@ -1828,6 +1828,7 @@ sub calcVariance { my $paref = shift; my $myHash = $paref->{myHash}; my $myName = $paref->{myName}; + my $chour = $paref->{chour}; my $dcauto = ReadingsVal ($myName, "pvCorrectionFactor_Auto", "off"); # nur bei "on" automatische Varianzkalkulation if($dcauto =~ /^off/x) { @@ -1852,13 +1853,14 @@ sub calcVariance { my @da; for my $h (1..23) { + next if(!$chour || $h >= $chour); my $fcval = $myHash->{HELPER}{"fc0_".sprintf("%02d",$h)."_PVforecast"} // 0; my $fcnum = int ((split " ", $fcval)[0]); next if(!$fcnum); - + my $pvval = ReadingsNum ($myName, "Today_Hour".sprintf("%02d",$h)."_PVreal", 0); next if(!$pvval); - + my $oldfac = ReadingsNum ($myName, "pvCorrectionFactor_".sprintf("%02d",$h), 1); # bisher definierter Korrekturfaktor $oldfac = 1 if(1*$oldfac == 0); @@ -1870,7 +1872,7 @@ sub calcVariance { Log3($myName, 4, "$myName - Use new limited Variance factor: $factor for hour: $h"); } else { - Log3($myName, 4, "$myName - new Variance factor: $factor for hour: $h calculated"); + Log3($myName, 4, "$myName - new Variance factor: $factor for hour: $h calculated") if($factor != $oldfac); } push @da, "pvCorrectionFactor_".sprintf("%02d",$h).":".$factor." (automatic)";