diff --git a/Bat_EV_SDL _V2/module.php b/Bat_EV_SDL _V2/module.php index cfe16d3..80fab97 100644 --- a/Bat_EV_SDL _V2/module.php +++ b/Bat_EV_SDL _V2/module.php @@ -155,8 +155,23 @@ class Bat_EV_SDL_V2 extends IPSModule // --- Deine 3 Fälle --- if ($underKWh <= $real_kWh && $upKWh >= $real_kWh) { - $SDL_SOC = 100 / ($capKWh - $upKWh + $underKWh) * $underKWh; - $EV_SOC = 100 / $EV_kWh * ($real_kWh - $underKWh); + + $denSDL = ($capKWh - $upKWh + $underKWh); + if ($denSDL > 0.0) { + $SDL_SOC = 100.0 * $underKWh / $denSDL; + } else { + $SDL_SOC = 0.0; + } + $SDL_SOC = is_finite($SDL_SOC) ? max(0.0, min(100.0, $SDL_SOC)) : 0.0; + + + if ($EV_kWh > 0.0) { + $EV_SOC = 100.0 * ($real_kWh - $underKWh) / $EV_kWh; + } else { + $EV_SOC = 0.0; // definierter Fallback + } + $EV_SOC = is_finite($EV_SOC) ? max(0.0, min(100.0, $EV_SOC)) : 0.0; + @@ -172,8 +187,14 @@ class Bat_EV_SDL_V2 extends IPSModule $EV_SOC = 100.0; - $den = ($capKWh - $real_kWh + $underKWh); - $SDL_SOC = ($den > 0.0 && $underKWh > 0.0) ? ($den / (2.0 * $underKWh) * 100.0) : 0.0; + $den1 = ($capKWh - $real_kWh + $underKWh); + $den2 = (2.0 * $underKWh); + if ($den1 > 0.0 && $den2 > 0.0) { + $SDL_SOC = ($den1 / $den2) * 100.0; + } else { + $SDL_SOC = 0.0; + } + $SDL_SOC = is_finite($SDL_SOC) ? max(0.0, min(100.0, $SDL_SOC)) : 0.0; $sdlDisKW = $sdlShareKW_entladen; $evDisKW = $evShareKW_entladen; @@ -189,6 +210,7 @@ class Bat_EV_SDL_V2 extends IPSModule $den = $upKWh + $underKWh; $SDL_SOC = ($den > 0.0) ? ($real_kWh * 100.0 / $den) : 0.0; + $SDL_SOC = is_finite($SDL_SOC) ? max(0.0, min(100.0, $SDL_SOC)) : 0.0; $sdlDisKW = $sdlShareKW_entladen; $evDisKW = 0.0;