From 92e0ee22bfedf231d9728eb881cfd1bf7db3827a Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Thu, 31 Dec 2020 09:09:49 +0000 Subject: [PATCH] 76_SolarForecast.pm: contrib 0.1.0 git-svn-id: https://svn.fhem.de/fhem/trunk@23438 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index ca1a4d9e9..2d769bd8d 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -700,7 +700,7 @@ sub _transferDWDForecastValues { my ($time_str,$epoche); - deleteReadingspec ($hash, "NextHour.*"); + # deleteReadingspec ($hash, "NextHour.*"); for my $num (0..47) { my $fh = $chour + $num; @@ -763,6 +763,10 @@ sub _transWeatherValues { push @$daref, "Tomorrow_SunRise:".$fc1_SunRise; push @$daref, "Tomorrow_SunSet:". $fc1_SunSet; + my $fc0_SunRise_round = (sprintf "%02d", (split ":", $fc0_SunRise)[0] - 1); + my $fc0_SunSet_round = (sprintf "%02d", (split ":", $fc0_SunSet)[0] + 1); + + Log3($name, 1, "$name - round: $fc0_SunRise_round, $fc0_SunSet_round"); for my $num (0..47) { my $fh = $chour + $num; @@ -785,10 +789,10 @@ sub _transWeatherValues { my $fhstr = sprintf "%02d", $fh; - if($fd == 0 && ($fhstr lt $fc0_SunRise || $fhstr gt $fc0_SunSet)) { # Zeit vor Sonnenaufgang oder nach Sonnenuntergang heute + if($fd == 0 && ($fhstr lt $fc0_SunRise_round || $fhstr gt $fc0_SunSet_round)) { # Zeit vor Sonnenaufgang oder nach Sonnenuntergang heute $wid = "1".$wid; # "1" der WeatherID voranstellen wenn Nacht } - elsif ($fd == 1 && ($fhstr lt $fc1_SunRise || $fhstr gt $fc1_SunSet)) { # Zeit vor Sonnenaufgang oder nach Sonnenuntergang morgen + elsif ($fd == 1 && ($fhstr lt $fc0_SunRise_round || $fhstr gt $fc0_SunSet_round)) { # Zeit vor Sonnenaufgang oder nach Sonnenuntergang morgen $wid = "1".$wid; # "1" der WeatherID voranstellen wenn Nacht } @@ -1212,7 +1216,7 @@ sub forecastGraphic { $lupt = "Stand:"; $autoct = "automatische Korrektur:"; $lblPv4h = encode("utf8", "nächste 4h:"); - $lblPvRe = "Rest heute:"; + $lblPvRe = "Rest heute:"; $lblPvTo = "morgen:"; $lblPvCu = "aktuell"; } @@ -1919,6 +1923,11 @@ sub calcPVforecast { $hc = 1 if(1*$hc == 0); my $pv = sprintf "%.1f", ($rad * $kJtokWh * $ma * $htilt{"$ta"} * $me/100 * $ie/100 * $hc * 1000); + + my $kw = AttrVal ($name, 'Wh/kWh', 'Wh'); + if($kw eq "Wh") { + $pv = int $pv; + } Log3($name, 5, "$name - calcPVforecast - Hour: ".sprintf("%02d",$fh)." ,moduleTiltAngle factor: ".$htilt{"$ta"}.", pvCorrectionFactor: $hc");