no message
This commit is contained in:
@@ -116,6 +116,23 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
||||
$EV_kWh_ges = 0.0;
|
||||
$totalCapKWh = 0.0;
|
||||
|
||||
// SDL-Gesamtkapazität aus Cache vorab berechnen
|
||||
$SDL_kWh_ges_cfg = 0.0;
|
||||
|
||||
foreach ($cache["bats"] as $bc) {
|
||||
$SDL_kWh_ges_cfg += (float)($bc["SDL_kWh_total"] ?? 0.0);
|
||||
}
|
||||
|
||||
// aktueller virtueller SDL-Stand
|
||||
$sdlVirtPct = ($SDL_kWh_ges_cfg > 0.0)
|
||||
? ($Esdl_kWh / $SDL_kWh_ges_cfg * 100.0)
|
||||
: 0.0;
|
||||
|
||||
$sdlVirtPct = max(0.0, min(100.0, $sdlVirtPct));
|
||||
|
||||
$sdlIsEmpty = ($sdlVirtPct <= 0.1);
|
||||
$sdlIsFull = ($sdlVirtPct >= 99.9);
|
||||
|
||||
foreach ($cache["bats"] as $i => $c) {
|
||||
|
||||
$capKWh = (float)($c["capKWh"] ?? 0.0);
|
||||
@@ -133,6 +150,24 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
||||
$typ = (string)($c["typ"] ?? ("Bat " . ($i + 1)));
|
||||
$underKWh = (float)($c["underKWh"] ?? 0.0);
|
||||
$upKWh = (float)($c["upKWh"] ?? 0.0);
|
||||
|
||||
// Standard: EV darf nur zwischen underKWh und upKWh arbeiten
|
||||
$evUnderKWh = $underKWh;
|
||||
$evUpKWh = $upKWh;
|
||||
|
||||
// Wenn SDL virtuell leer ist, darf EV die untere SDL-Reserve verwenden
|
||||
if ($sdlIsEmpty) {
|
||||
$evUnderKWh = 0.0;
|
||||
}
|
||||
|
||||
// Wenn SDL virtuell voll ist, darf EV die obere SDL-Reserve verwenden
|
||||
if ($sdlIsFull) {
|
||||
$evUpKWh = $capKWh;
|
||||
}
|
||||
|
||||
$evWindowKWh = max(0.0, $evUpKWh - $evUnderKWh);
|
||||
|
||||
|
||||
$SDL_kWh = (float)($c["SDL_kWh_total"] ?? 0.0);
|
||||
$EV_kWh = (float)($c["EV_kWh_total"] ?? 0.0);
|
||||
|
||||
@@ -155,8 +190,8 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
||||
if ($underKWh <= $real_kWh && $real_kWh <= $upKWh) {
|
||||
|
||||
// EV_SOC im Fenster dynamisch (0..100)
|
||||
if ($EV_kWh > 0.0) {
|
||||
$EV_SOC = 100.0 * ($real_kWh - $underKWh) / $EV_kWh;
|
||||
if ($evWindowKWh > 0.0) {
|
||||
$EV_SOC = 100.0 * ($real_kWh - $evUnderKWh) / $evWindowKWh;
|
||||
} else {
|
||||
$EV_SOC = 0.0;
|
||||
}
|
||||
@@ -176,10 +211,10 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
||||
$sdlChKW = $sdlShareKW_laden;
|
||||
$evChKW = $evShareKW_laden;
|
||||
|
||||
$real_kWh_ev = $real_kWh - $underKWh;
|
||||
$real_kWh_sdl = $underKWh;
|
||||
$real_kWh_ev = max(0.0, min($evWindowKWh, $real_kWh - $evUnderKWh));
|
||||
$real_kWh_sdl = $real_kWh - $real_kWh_ev;
|
||||
|
||||
} elseif ($real_kWh > $upKWh) {
|
||||
} elseif ($real_kWh > $evUpKWh) {
|
||||
|
||||
// Obere Grenze: EV = 100%
|
||||
$EV_SOC = 100.0;
|
||||
@@ -202,7 +237,7 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
||||
$real_kWh_ev = $capKWh - ($capKWh - $upKWh + $underKWh);
|
||||
$real_kWh_sdl = ($capKWh - $upKWh + $underKWh) - ($capKWh - $real_kWh);
|
||||
|
||||
} else { // $real_kWh < $underKWh
|
||||
} elseif ($real_kWh < $evUnderKWh) {
|
||||
|
||||
// Untere Grenze: EV = 0%
|
||||
$EV_SOC = 0.0;
|
||||
|
||||
Reference in New Issue
Block a user