no message
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user