From b01b5ef90d81532d365c6a0518c137be6aaccdda Mon Sep 17 00:00:00 2001 From: DS_Starter Date: Mon, 3 Nov 2025 19:58:56 +0000 Subject: [PATCH] 76_SolarForecast: more preparation for barrierSoC git-svn-id: https://svn.fhem.de/fhem/trunk@30485 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/76_SolarForecast.pm | 8 +++++--- fhem/contrib/DS_Starter/76_SolarForecast.pm | 8 +++++--- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/fhem/FHEM/76_SolarForecast.pm b/fhem/FHEM/76_SolarForecast.pm index 1c7268886..807361a47 100644 --- a/fhem/FHEM/76_SolarForecast.pm +++ b/fhem/FHEM/76_SolarForecast.pm @@ -12319,17 +12319,19 @@ sub __batChargeOptTargetPower { ## Ziel und dessen Erreichbarkeit ################################### my $goalwh = $hsurp->{$hod}{$sbn}{goalwh}; # Ladeziel - my $runwhneed = $goalwh - $runwh; + my $runwhneed = ($goalwh - $runwh) / $befficiency; my $achievable = 1; - if ($runwhneed > 0 && $remainingSurp * $befficiency < $runwhneed) { # Erreichbarkeit des Ziels (benötigte Ladeenergie total) prüfen + if ($runwhneed > 0 && $remainingSurp < $runwhneed) { # Erreichbarkeit des Ziels (benötigte Ladeenergie total) prüfen $achievable = 0; } storeReading ('Battery_TargetAchievable_'.$sbn, $achievable) if($nhr eq '00'); $hsurp->{$hod}{$sbn}{loadrel} = $runwhneed > 0 ? 1 : 0; # Ladefreigabe abhängig von Ziel-SoC Erfüllung - $hsurp->{$hod}{$sbn}{achievelog} = "charging target: $goalwh Wh, remaining: ".(sprintf "%.0f", $runwhneed).' Wh -> target likely achievable? '.($achievable ? 'yes' : 'no'); + $hsurp->{$hod}{$sbn}{achievelog} = "charging target: $goalwh Wh, remaining: ". + (sprintf "%.0f", ($runwhneed * $befficiency)).' Wh -> target likely achievable? '. + ($achievable ? 'yes' : 'no'); ## kein Überschuß ################### diff --git a/fhem/contrib/DS_Starter/76_SolarForecast.pm b/fhem/contrib/DS_Starter/76_SolarForecast.pm index 1c7268886..807361a47 100644 --- a/fhem/contrib/DS_Starter/76_SolarForecast.pm +++ b/fhem/contrib/DS_Starter/76_SolarForecast.pm @@ -12319,17 +12319,19 @@ sub __batChargeOptTargetPower { ## Ziel und dessen Erreichbarkeit ################################### my $goalwh = $hsurp->{$hod}{$sbn}{goalwh}; # Ladeziel - my $runwhneed = $goalwh - $runwh; + my $runwhneed = ($goalwh - $runwh) / $befficiency; my $achievable = 1; - if ($runwhneed > 0 && $remainingSurp * $befficiency < $runwhneed) { # Erreichbarkeit des Ziels (benötigte Ladeenergie total) prüfen + if ($runwhneed > 0 && $remainingSurp < $runwhneed) { # Erreichbarkeit des Ziels (benötigte Ladeenergie total) prüfen $achievable = 0; } storeReading ('Battery_TargetAchievable_'.$sbn, $achievable) if($nhr eq '00'); $hsurp->{$hod}{$sbn}{loadrel} = $runwhneed > 0 ? 1 : 0; # Ladefreigabe abhängig von Ziel-SoC Erfüllung - $hsurp->{$hod}{$sbn}{achievelog} = "charging target: $goalwh Wh, remaining: ".(sprintf "%.0f", $runwhneed).' Wh -> target likely achievable? '.($achievable ? 'yes' : 'no'); + $hsurp->{$hod}{$sbn}{achievelog} = "charging target: $goalwh Wh, remaining: ". + (sprintf "%.0f", ($runwhneed * $befficiency)).' Wh -> target likely achievable? '. + ($achievable ? 'yes' : 'no'); ## kein Überschuß ###################