diff --git a/Bat_EV_SDL_V3_Beta/module.php b/Bat_EV_SDL_V3_Beta/module.php index de57dc1..6f96447 100644 --- a/Bat_EV_SDL_V3_Beta/module.php +++ b/Bat_EV_SDL_V3_Beta/module.php @@ -360,7 +360,13 @@ class Bat_EV_SDL_V3_Beta extends IPSModule if ($cacheHash !== "" && $cacheHash !== $intHash) { // Bei Cache-/SDL-Leistungsänderung wieder auf 50 % - $Esdl_kWh = $SDL_kWh_ges_cfg * 0.5; + $SDL_start_kWh_cfg = 0.0; + + foreach ($cache["bats"] as $bc) { + $SDL_start_kWh_cfg += (float)($bc["underKWh"] ?? 0.0); + } + + $Esdl_kWh = max(0.0, min($SDL_kWh_ges_cfg, $SDL_start_kWh_cfg)); $lastTs = $now; $this->SetBuffer("Int_LastTs", (string)$now); @@ -995,7 +1001,15 @@ private function ResetSDLTo50Percent(): void return; } - $this->SetBuffer("Int_E_SDL_kWh", (string)($sdlKWhTotal * 0.5)); + $startKWh = 0.0; + + foreach ($cache["bats"] as $bat) { + $startKWh += (float)($bat["underKWh"] ?? 0.0); + } + + $startKWh = max(0.0, min($sdlKWhTotal, $startKWh)); + + $this->SetBuffer("Int_E_SDL_kWh", (string)$startKWh); $this->SetBuffer("Int_Init_SDL", "1"); $this->SetBuffer("Int_LastTs", (string)microtime(true));