From bacd17c859df2b0769640a5cb1d14f2bda4893ca Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Mon, 1 May 2023 20:51:34 +0000 Subject: [PATCH] 76_SolarForecast: contrib 0.76.0 git-svn-id: https://svn.fhem.de/fhem/trunk@27505 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 24 +++++++++++++++++++++ 1 file changed, 24 insertions(+) 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. runTimeCentralTask die Laufzeit des letzten SolarForecast Intervalls (Gesamtprozess) in Sekunden runTimeLastAPIAnswer die letzte Antwortzeit der SolCast API (nur Model SolCastAPI) auf einen Request in Sekunden runTimeLastAPIProc die letzte Prozesszeit zur Verarbeitung der empfangenen SolCast API Daten (nur Model SolCastAPI) + SunMinutes_Remain die verbleibenden Minuten bis Sonnenuntergang des aktuellen Tages + SunHours_Remain die verbleibenden Stunden bis Sonnenuntergang des aktuellen Tages todayMaxAPIcalls die maximal mögliche Anzahl SolCast API Calls (nur Model SolCastAPI). Ein Call kann mehrere API Requests enthalten. todayDoneAPIcalls die Anzahl der am aktuellen Tag ausgeführten SolCast API Calls (nur Model SolCastAPI)