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",
"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",
"name": "UpdateInterval",

View File

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