diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 573335496..5e2474b8f 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -134,6 +134,7 @@ BEGIN { # Versions History intern my %vNotesIntern = ( + "0.76.0" => "01.05.2023 new ctrlStatisticReadings SunMinutes_Remain, SunHours_Remain ", "0.75.3" => "23.04.2023 fix Illegal division by zero at ./FHEM/76_SolarForecast.pm line 6199 ", "0.75.2" => "16.04.2023 some minor changes ", "0.75.1" => "24.03.2023 change epieces for consumer type washingmachine, PV Vorhersage auf WR Kapazität begrenzen ", @@ -793,6 +794,8 @@ my %hcsr = ( runTimeLastAPIAnswer => { fnr => 2, fn => \&CurrentVal, def => '-' }, runTimeLastAPIProc => { fnr => 2, fn => \&CurrentVal, def => '-' }, allStringsFullfilled => { fnr => 2, fn => \&CurrentVal, def => 0 }, + SunHours_Remain => { fnr => 3, fn => \&CurrentVal, def => 0 }, # fnr => 3 -> Custom Calc + SunMinutes_Remain => { fnr => 3, fn => \&CurrentVal, def => 0 }, ); # Information zu verwendeten internen Datenhashes @@ -6342,6 +6345,7 @@ sub genStatisticReadings { my $hash = $paref->{hash}; my $name = $paref->{name}; my $daref = $paref->{daref}; + my $t = $paref->{t}; # aktueller UNIX Timestamp my @csr = split ',', AttrVal($name, 'ctrlStatisticReadings', ''); @@ -6361,6 +6365,24 @@ sub genStatisticReadings { if ($hcsr{$kpi}{fnr} == 2) { push @$daref, 'statistic_'.$kpi.'<>'. &{$hcsr{$kpi}{fn}} ($hash, $kpi, $def); } + + if ($hcsr{$kpi}{fnr} == 3) { + if ($kpi eq 'SunHours_Remain') { + my $ss = &{$hcsr{$kpi}{fn}} ($hash, 'sunsetTodayTs', $def); + my $shr = ($ss - $t) / 3600; + $shr = $shr < 0 ? 0 : $shr; + + push @$daref, 'statistic_'.$kpi.'<>'. sprintf "%.2f", $shr; + } + + if ($kpi eq 'SunMinutes_Remain') { + my $ss = &{$hcsr{$kpi}{fn}} ($hash, 'sunsetTodayTs', $def); + my $smr = ($ss - $t) / 60; + $smr = $smr < 0 ? 0 : $smr; + + push @$daref, 'statistic_'.$kpi.'<>'. sprintf "%.0f", $smr; + } + } } return; @@ -12040,6 +12062,8 @@ Planung und Steuerung von PV Überschuß abhängigen Verbraucherschaltungen.