From f4b3eae1782882acf469f9c554fc90cdb769916f Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Tue, 26 Sep 2023 18:51:10 +0000 Subject: [PATCH] 76_SolarForecast: contrib 0.83.2 git-svn-id: https://svn.fhem.de/fhem/trunk@28000 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 116 ++++++++++++++------ 1 file changed, 80 insertions(+), 36 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index eab6001e1..764499deb 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -142,6 +142,7 @@ BEGIN { # Versions History intern my %vNotesIntern = ( + "0.83.2" => "26.09.2023 setter reset consumption ", "0.83.1" => "26.09.2023 change currentRadiationDev to currentRadiationAPI, new attr ctrlAIdataStorageDuration ". "new elements todayConsumptionForecast, conForecastTillNextSunrise for attr ctrlStatisticReadings ". "add entry text in guided procedure ", @@ -1231,6 +1232,7 @@ sub Set { my @re = qw( aiData consumerMaster consumerPlanning + consumption currentBatteryDev currentWeatherDev currentInverterDev @@ -2065,7 +2067,7 @@ sub _setreset { ## no critic "not used" if ($dday) { if ($dhour) { delete $data{$type}{$name}{pvhist}{$dday}{$dhour}; - Log3 ($name, 3, qq{$name - Hour "$dhour" of day "$dday" deleted in pvHistory}); + Log3 ($name, 3, qq{$name - Day "$dday" hour "$dhour" deleted from pvHistory}); $paref->{reorg} = 1; # den Tag Stunde "99" reorganisieren $paref->{reorgday} = $dday; @@ -2075,13 +2077,50 @@ sub _setreset { ## no critic "not used" } else { delete $data{$type}{$name}{pvhist}{$dday}; - Log3 ($name, 3, qq{$name - Day "$dday" deleted in pvHistory}); + Log3 ($name, 3, qq{$name - Day "$dday" deleted from pvHistory}); } } else { delete $data{$type}{$name}{pvhist}; - Log3 ($name, 3, qq{$name - all days of pvHistory deleted}); + Log3 ($name, 3, qq{$name - all days deleted from pvHistory}); } + + return; + } + + if($prop eq 'consumption') { + my $dday = $paref->{prop1} // ""; # ein bestimmter Tag der pvHistory angegeben ? + my $dhour = $paref->{prop2} // ""; # eine bestimmte Stunde eines Tages der pvHistory angegeben ? + + if ($dday) { + if ($dhour) { + delete $data{$type}{$name}{pvhist}{$dday}{$dhour}{con}; + Log3 ($name, 3, qq{$name - consumption day "$dday" hour "$dhour" deleted from pvHistory}); + + $paref->{reorg} = 1; # den Tag Stunde "99" reorganisieren + $paref->{reorgday} = $dday; + setPVhistory ($paref); + delete $paref->{reorg}; + delete $paref->{reorgday}; + } + else { + for my $hr (sort keys %{$data{$type}{$name}{pvhist}{$dday}}) { + delete $data{$type}{$name}{pvhist}{$dday}{$hr}{con}; + } + + Log3 ($name, 3, qq{$name - consumption day "$dday" deleted from pvHistory}); + } + } + else { + for my $dy (sort keys %{$data{$type}{$name}{pvhist}}) { + for my $hr (sort keys %{$data{$type}{$name}{pvhist}{$dy}}) { + delete $data{$type}{$name}{pvhist}{$dy}{$hr}{con}; + } + } + + Log3 ($name, 3, qq{$name - all saved consumption deleted from pvHistory}); + } + return; } @@ -7471,7 +7510,7 @@ sub _estConsumptionForecast { next if(!$hdn || $hdn ne $tomorrow); } - my $dcon = HistoryVal ($hash, $n, 99, "con", 0); + my $dcon = HistoryVal ($hash, $n, 99, 'con', 0); next if(!$dcon); debugLog ($paref, "consumption", "History Consumption day >$n<: $dcon"); @@ -7781,7 +7820,7 @@ sub saveEnergyConsumption { $paref->{con} = $con; $paref->{nhour} = sprintf "%02d", $shr; - $paref->{histname} = "con"; + $paref->{histname} = 'con'; setPVhistory ($paref); delete $paref->{histname}; @@ -11197,7 +11236,7 @@ return $range; } ################################################################ -# Werte in History-Hash speichern +# History-Hash verwalten ################################################################ sub setPVhistory { my $paref = shift; @@ -14561,36 +14600,41 @@ die ordnungsgemäße Anlagenkonfiguration geprüft werden.