no message

This commit is contained in:
belevo\mh
2026-01-27 08:46:34 +01:00
parent cdc7d762d8
commit 78668405bc
2 changed files with 63 additions and 20 deletions

View File

@@ -70,6 +70,18 @@
"caption": "SDL_Leistung", "caption": "SDL_Leistung",
"suffix": "W" "suffix": "W"
}, },
{
"type": "NumberSpinner",
"name": "SDL_Leistung_Laden",
"caption": "SDL_Leistung_Laden",
"suffix": "W"
},
{
"type": "NumberSpinner",
"name": "SDL_Leistung_Entladen",
"caption": "SDL_Leistung_Entladen",
"suffix": "W"
},
{ {
"type": "NumberSpinner", "type": "NumberSpinner",
"name": "UpdateInterval", "name": "UpdateInterval",

View File

@@ -10,7 +10,9 @@ class Bat_EV_SDL_V2 extends IPSModule
// Properties // Properties
$this->RegisterPropertyString("Batteries", "[]"); $this->RegisterPropertyString("Batteries", "[]");
$this->RegisterPropertyInteger("SDL_Leistung", 0); // W $this->RegisterPropertyInteger("SDL_Leistung", 0);
$this->RegisterPropertyInteger("SDL_Leistung_Laden", 0);
$this->RegisterPropertyInteger("SDL_Leistung_Entladen", 0); // W
$this->RegisterPropertyInteger("UpdateInterval", 5); // Minuten $this->RegisterPropertyInteger("UpdateInterval", 5); // Minuten
// Status // Status
@@ -118,8 +120,12 @@ class Bat_EV_SDL_V2 extends IPSModule
$SDL_kWh = (float)($c["SDL_kWh_total"] ?? 0.0); $SDL_kWh = (float)($c["SDL_kWh_total"] ?? 0.0);
$EV_kWh = (float)($c["EV_kWh_total"] ?? 0.0); $EV_kWh = (float)($c["EV_kWh_total"] ?? 0.0);
$sdlShareKW = (float)($c["sdlShareKW"] ?? 0.0); $sdlShareKW_laden = (float)($c["sdlShareKW laden"] ?? 0.0);
$evShareKW = (float)($c["evShareKW"] ?? 0.0); $sdlShareKW_entladen = (float)($c["sdlShareKW entladen"] ?? 0.0);
$evShareKW_laden = (float)($c["evShareKW laden"] ?? 0.0);
$evShareKW_entladen = (float)($c["evShareKW entladen"] ?? 0.0);
// Defaults // Defaults
$EV_SOC = 0.0; $EV_SOC = 0.0;
@@ -137,10 +143,10 @@ class Bat_EV_SDL_V2 extends IPSModule
$SDL_SOC = 50.0; $SDL_SOC = 50.0;
$EV_SOC = ($capKWh > 0.0) ? (($real_kWh - $underKWh) * 100.0 / $capKWh) : 0.0; $EV_SOC = ($capKWh > 0.0) ? (($real_kWh - $underKWh) * 100.0 / $capKWh) : 0.0;
$sdlDisKW = $sdlShareKW; $sdlDisKW = $sdlShareKW_entladen;
$evDisKW = $evShareKW; $evDisKW = $evShareKW_entladen;
$sdlChKW = $sdlShareKW; $sdlChKW = $sdlShareKW_laden;
$evChKW = $evShareKW; $evChKW = $evShareKW_laden;
$real_kWh_ev = $real_kWh - $underKWh; $real_kWh_ev = $real_kWh - $underKWh;
$real_kWh_sdl = $underKWh; $real_kWh_sdl = $underKWh;
@@ -152,25 +158,25 @@ class Bat_EV_SDL_V2 extends IPSModule
$den = ($capKWh - $real_kWh + $underKWh); $den = ($capKWh - $real_kWh + $underKWh);
$SDL_SOC = ($den > 0.0 && $underKWh > 0.0) ? ($den / (2.0 * $underKWh) * 100.0) : 0.0; $SDL_SOC = ($den > 0.0 && $underKWh > 0.0) ? ($den / (2.0 * $underKWh) * 100.0) : 0.0;
$sdlDisKW = $sdlShareKW; $sdlDisKW = $sdlShareKW_entladen;
$evDisKW = $evShareKW; $evDisKW = $evShareKW_entladen;
$sdlChKW = $sdlShareKW; $sdlChKW = $sdlShareKW_laden;
$evChKW = 0.0; $evChKW = 0.0;
$real_kWh_ev = $capKWh - 2.0 * $underKWh; $real_kWh_ev = $capKWh - ($upKWh + $underKWh);
$real_kWh_sdl = (2.0 * $underKWh) - ($capKWh - $real_kWh); $real_kWh_sdl = ($upKWh + $underKWh) - ($capKWh - $real_kWh);
} elseif ($underKWh > $real_kWh) { } elseif ($underKWh > $real_kWh) {
$EV_SOC = 0.0; $EV_SOC = 0.0;
$den = 2.0 * $underKWh; $den = $upKWh + $underKWh;
$SDL_SOC = ($den > 0.0) ? ($real_kWh * 100.0 / $den) : 0.0; $SDL_SOC = ($den > 0.0) ? ($real_kWh * 100.0 / $den) : 0.0;
$sdlDisKW = $sdlShareKW; $sdlDisKW = $sdlShareKW_entladen;
$evDisKW = 0.0; $evDisKW = 0.0;
$sdlChKW = $sdlShareKW; $sdlChKW = $sdlShareKW_laden;
$evChKW = $evShareKW; $evChKW = $evShareKW_laden;
$real_kWh_ev = 0.0; $real_kWh_ev = 0.0;
$real_kWh_sdl = $real_kWh; $real_kWh_sdl = $real_kWh;
@@ -183,8 +189,8 @@ class Bat_EV_SDL_V2 extends IPSModule
$real_kWh_sdl = 0.0; $real_kWh_sdl = 0.0;
} elseif ($real_kWh >= $capKWh) { } elseif ($real_kWh >= $capKWh) {
$sdlChKW = 0.0; $sdlChKW = 0.0;
$real_kWh_ev = $capKWh - 2.0 * $underKWh; $real_kWh_ev = $capKWh - ($upKWh + $underKWh);
$real_kWh_sdl = 2.0 * $underKWh; $real_kWh_sdl = $upKWh + $underKWh;
} }
$real_kWh_ev = max(0.0, $real_kWh_ev); $real_kWh_ev = max(0.0, $real_kWh_ev);
@@ -268,11 +274,15 @@ class Bat_EV_SDL_V2 extends IPSModule
{ {
$batteriesRaw = $this->ReadPropertyString("Batteries"); $batteriesRaw = $this->ReadPropertyString("Batteries");
$sdlTotalW = max(0, (int)$this->ReadPropertyInteger("SDL_Leistung")); $sdlTotalW = max(0, (int)$this->ReadPropertyInteger("SDL_Leistung"));
$sdlTotalW_laden = max(0, (int)$this->ReadPropertyInteger("SDL_Leistung_Laden"));
$sdlTotalW_entladen = max(0, (int)$this->ReadPropertyInteger("SDL_Leistung_Entladen"));
$hours = self::HOURS; $hours = self::HOURS;
$hash = md5(json_encode([ $hash = md5(json_encode([
"Batteries" => $batteriesRaw, "Batteries" => $batteriesRaw,
"SDL_W" => $sdlTotalW, "SDL_W" => $sdlTotalW,
"SDL_W_Laden" => $sdlTotalW_laden,
"SDL_W_Entladen" => $sdlTotalW_entladen,
"hours" => $hours "hours" => $hours
])); ]));
@@ -293,6 +303,8 @@ class Bat_EV_SDL_V2 extends IPSModule
$cache = [ $cache = [
"inputs" => [ "inputs" => [
"SDL_Leistung_W" => $sdlTotalW, "SDL_Leistung_W" => $sdlTotalW,
"SDL_Leistung_W_laden" => $sdlTotalW_laden,
"SDL_Leistung_W_entladen" => $sdlTotalW_entladen,
"SumBatPower_W" => round($sumBatPowerW, 0), "SumBatPower_W" => round($sumBatPowerW, 0),
"hours" => $hours "hours" => $hours
], ],
@@ -309,6 +321,9 @@ class Bat_EV_SDL_V2 extends IPSModule
$sumBatPowerkW = $sumBatPowerW / 1000.0; $sumBatPowerkW = $sumBatPowerW / 1000.0;
$sdlTotalkW = $sdlTotalW / 1000.0; $sdlTotalkW = $sdlTotalW / 1000.0;
$sdlTotalkW_laden = $sdlTotalW_laden / 1000.0;
$sdlTotalkW_entladen = $sdlTotalW_entladen / 1000.0;
foreach ($batteries as $idx => $b) { foreach ($batteries as $idx => $b) {
$pBatW = max(0.0, (float)($b["powerbat"] ?? 0)); $pBatW = max(0.0, (float)($b["powerbat"] ?? 0));
@@ -320,6 +335,7 @@ class Bat_EV_SDL_V2 extends IPSModule
$socVarId = (int)($b["soc"] ?? 0); $socVarId = (int)($b["soc"] ?? 0);
$typ = (string)($b["typ"] ?? ("Bat " . ($idx + 1))); $typ = (string)($b["typ"] ?? ("Bat " . ($idx + 1)));
/*
$sdlShareKW = ($sumBatPowerkW > 0.0) ? ($sdlTotalkW / $sumBatPowerkW * $pBatkW) : 0.0; $sdlShareKW = ($sumBatPowerkW > 0.0) ? ($sdlTotalkW / $sumBatPowerkW * $pBatkW) : 0.0;
$evShareKW = $pBatkW - $sdlShareKW; $evShareKW = $pBatkW - $sdlShareKW;
@@ -329,6 +345,19 @@ class Bat_EV_SDL_V2 extends IPSModule
$upKWh = $capKWh - $underKWh; $upKWh = $capKWh - $underKWh;
$SDL_kWh = 2.0 * $underKWh; $SDL_kWh = 2.0 * $underKWh;
$EV_kWh = max(0.0, $capKWh - $SDL_kWh); $EV_kWh = max(0.0, $capKWh - $SDL_kWh);
*/
// Mit laden und entladen unterschiedlich
//----------------------------------------------------
$sdlShareKW_laden = ($sumBatPowerkW > 0.0) ? ($sdlTotalkW_laden / $sumBatPowerkW * $pBatkW) : 0.0;
$evShareKW_laden = $pBatkW - $sdlShareKW_laden;
$upKWh = $capKWh - $sdlShareKW_laden * 0.5;
$sdlShareKW_entladen = ($sumBatPowerkW > 0.0) ? ($sdlTotalkW_entladen / $sumBatPowerkW * $pBatkW) : 0.0;
$evShareKW_entladen = $pBatkW - $sdlShareKW_entladen;
$underKWh = $sdlShareKW_entladen * 0.5;
$SDL_kW = $underKWh + $upKWh;
$EV_kWh = $capKWh - $SDL_kW;
//----------------------------------------------------
$cache["bats"][] = [ $cache["bats"][] = [
"idx" => $idx, "idx" => $idx,
@@ -338,8 +367,10 @@ class Bat_EV_SDL_V2 extends IPSModule
"capKWh" => $capKWh, "capKWh" => $capKWh,
"pBatW" => $pBatW, "pBatW" => $pBatW,
"sdlShareKW" => $sdlShareKW, "sdlShareKW laden" => $sdlShareKW_laden,
"evShareKW" => $evShareKW, "sdlShareKW entladen" => $sdlShareKW_entladen,
"evShareKW laden" => $evShareKW_laden,
"evShareKW entladen" => $evShareKW_entladen,
"underKWh" => $underKWh, "underKWh" => $underKWh,
"upKWh" => $upKWh, "upKWh" => $upKWh,