From 31b6988a7f2b25984da551a7bf870ea29b5deec9 Mon Sep 17 00:00:00 2001 From: nasseeder1 Date: Fri, 10 Jan 2025 15:37:15 +0000 Subject: [PATCH] 76_SolarForecast: contrib 1.43.0 git-svn-id: https://svn.fhem.de/fhem/trunk@29506 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/contrib/DS_Starter/76_SolarForecast.pm | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index f6a845b3f..c132b145d 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -9872,7 +9872,7 @@ sub _batChargeRecmd { next if($err); my $batinstcap = BatteryVal ($hash, $bn, 'binstcap', 0); # installierte Batteriekapazität Wh - my $soc = BatteryVal ($hash, $bn, 'bcharge', 0); # aktuelle Ladung in % + my $csoc = BatteryVal ($hash, $bn, 'bcharge', 0); # aktuelle Ladung in % my $batoptsoc = ReadingsNum ($name, 'Battery_OptimumTargetSoC_'.$bn, 0); # aktueller optimierter SoC if (!$inplim || !$batinstcap) { @@ -9889,8 +9889,7 @@ sub _batChargeRecmd { debugLog ($paref, 'batteryManagement', "Bat $bn Charge Rcmd - Installed Battery capacity: $batinstcap Wh"); - my $whneed = sprintf "%.0f", ($batinstcap - ($batinstcap * $soc / 100)); # benötigte Energie bis 100% Batteriekapazität Wh - my $sfmargin = $whneed * 0.25; # Sicherheitszuschlag: X% der benötigten Ladeenergie (Wh) + my $whneed = sprintf "%.0f", ($batinstcap - ($batinstcap * $csoc / 100)); # benötigte Energie bis 100% Batteriekapazität Wh ## Auswertung für jede kommende Stunde ######################################## @@ -9919,8 +9918,9 @@ sub _batChargeRecmd { ## SOC-Prognose und Ladeempfehlung #################################### - my $progsoc = sprintf "%.0f", (100 / $batinstcap * ($batinstcap - $whneed)); # Prognose SoC - $progsoc = $progsoc < $batoptsoc ? $batoptsoc : + my $progsoc = sprintf "%.0f", (100 / $batinstcap * ($batinstcap - $whneed)); # Prognose SoC + $progsoc = !$num ? $csoc : # Stunde 00 (aktuelle) -> $progsoc = $csoc + $progsoc < $batoptsoc ? $batoptsoc : $progsoc < $lowSoc ? $lowSoc : $progsoc; @@ -9931,6 +9931,8 @@ sub _batChargeRecmd { } ); # Readings NextHourXX_Bat_XX_ChargeForecast erstellen + my $sfmargin = $whneed * 0.25; # Sicherheitszuschlag: X% der benötigten Ladeenergie (Wh) + if ( $whneed + $sfmargin >= $spday ) {$rcmd = 1} # Ladeempfehlung wenn benötigte Ladeenergie >= Restüberschuß des Tages zzgl. Sicherheitsaufschlag if ( !$num && $pvCu - $curcon >= $inplim ) {$rcmd = 1} # Ladeempfehlung wenn akt. PV Leistung >= WR-Leistungsbegrenzung