no message

This commit is contained in:
2026-04-17 18:47:42 +02:00
parent f54d3dabeb
commit 446ed0926e
+34
View File
@@ -321,6 +321,40 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
}
$this->SetBuffer("Int_ResetArmed", $armed ? "1" : "0");
// =====================
// EV-Zone (oben/unten) erkennen und EV-Konto beim Zonenwechsel hart setzen
// Ziel: Wenn obere Grenze erreicht -> SoC_EV = 100% (Eev = EV_total)
// Wenn untere Grenze erreicht -> SoC_EV = 0% (Eev = 0)
// =====================
$epsKWh = 0.001;
// ZoneNow aus EV-Referenz ableiten:
// -1 = EV leer (untere Zone), 0 = Fenster, +1 = EV voll (obere Zone)
$zoneNow = 0;
if ($real_kWh_ev_ges <= $epsKWh) {
$zoneNow = -1;
} elseif ($EV_kWh_ges > 0.0 && $real_kWh_ev_ges >= ($EV_kWh_ges - $epsKWh)) {
$zoneNow = 1;
}
// Vorherige Zone aus Buffer
$zonePrevStr = $this->GetBufferSafe("EV_Zone");
$zonePrev = ($zonePrevStr === "") ? $zoneNow : (int)$zonePrevStr;
// Nur beim Zonenwechsel hart setzen (Edge-Trigger)
if ($zoneNow !== $zonePrev) {
if ($zoneNow === 1) {
// Übergang in obere Zone -> EV "voll"
$Eev = $EV_kWh_ges;
} elseif ($zoneNow === -1) {
// Übergang in untere Zone -> EV "leer"
$Eev = 0.0;
}
}
// Zone speichern
$this->SetBuffer("EV_Zone", (string)$zoneNow);
// ===================================================
// Integrator: NUR integrieren wenn Soll != 0W
// Angleichen ist raus: wir setzen bei Soll=0 hart auf Referenz