no message
This commit is contained in:
@@ -104,9 +104,9 @@
|
|||||||
"type": "NumberSpinner",
|
"type": "NumberSpinner",
|
||||||
"name": "UpdateInterval",
|
"name": "UpdateInterval",
|
||||||
"caption": "Neuberechnung alle",
|
"caption": "Neuberechnung alle",
|
||||||
"suffix": "Sekunden",
|
"suffix": "Miliskeunden",
|
||||||
"minimum": 0,
|
"minimum": 200,
|
||||||
"maximum": 86400
|
"maximum": 100000
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
|||||||
//$this->RegisterPropertyInteger("$upKWh + $underKWh)", 0);
|
//$this->RegisterPropertyInteger("$upKWh + $underKWh)", 0);
|
||||||
$this->RegisterPropertyInteger("SDL_Leistung_Laden", 0);
|
$this->RegisterPropertyInteger("SDL_Leistung_Laden", 0);
|
||||||
$this->RegisterPropertyInteger("SDL_Leistung_Entladen", 0); // W
|
$this->RegisterPropertyInteger("SDL_Leistung_Entladen", 0); // W
|
||||||
$this->RegisterPropertyInteger("UpdateInterval", 5); // Minuten
|
$this->RegisterPropertyInteger("UpdateInterval", 2000); // Minuten
|
||||||
|
|
||||||
// Status
|
// Status
|
||||||
$this->RegisterVariableBoolean("State", "Aktiv", "~Switch", 1);
|
$this->RegisterVariableBoolean("State", "Aktiv", "~Switch", 1);
|
||||||
@@ -45,7 +45,7 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
|||||||
parent::ApplyChanges();
|
parent::ApplyChanges();
|
||||||
|
|
||||||
$intervalSec = (int)$this->ReadPropertyInteger("UpdateInterval");
|
$intervalSec = (int)$this->ReadPropertyInteger("UpdateInterval");
|
||||||
$this->SetTimerInterval("UpdateTimer", ($intervalSec > 0) ? $intervalSec * 1000 : 0);
|
$this->SetTimerInterval("UpdateTimer", ($intervalSec > 0) ? $intervalSec : 0);
|
||||||
|
|
||||||
// Cache neu bauen (force)
|
// Cache neu bauen (force)
|
||||||
$this->BuildBatteryCache(true);
|
$this->BuildBatteryCache(true);
|
||||||
@@ -95,16 +95,21 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
|||||||
// Integrator: State laden
|
// Integrator: State laden
|
||||||
// =====================
|
// =====================
|
||||||
// Optional für 2s besser: microtime(true) statt time() verwenden
|
// Optional für 2s besser: microtime(true) statt time() verwenden
|
||||||
$now = time();
|
|
||||||
|
|
||||||
$lastTs = (int)$this->GetBufferSafe("Int_LastTs");
|
// Millisekunden-genau: microtime(true) liefert Sekunden als Float
|
||||||
$lastPEV = (float)$this->GetBufferSafe("Int_LastP_EV_W"); // W (+ laden, - entladen)
|
$now = microtime(true);
|
||||||
$lastPSDL = (float)$this->GetBufferSafe("Int_LastP_SDL_W"); // W (+ laden, - entladen)
|
|
||||||
|
|
||||||
$Eev = (float)$this->GetBufferSafe("Int_E_EV_kWh"); // kWh-Konto EV
|
// Timestamp als Float aus Buffer lesen (nicht int!)
|
||||||
$Esdl = (float)$this->GetBufferSafe("Int_E_SDL_kWh"); // kWh-Konto SDL
|
$lastTs = (float)$this->GetBufferSafe("Int_LastTs");
|
||||||
|
|
||||||
if ($lastTs <= 0) {
|
// Leistungen / Konten wie gehabt
|
||||||
|
$lastPEV = (float)$this->GetBufferSafe("Int_LastP_EV_W"); // W (+ laden, - entladen)
|
||||||
|
$lastPSDL = (float)$this->GetBufferSafe("Int_LastP_SDL_W"); // W (+ laden, - entladen)
|
||||||
|
|
||||||
|
$Eev = (float)$this->GetBufferSafe("Int_E_EV_kWh"); // kWh-Konto EV
|
||||||
|
$Esdl = (float)$this->GetBufferSafe("Int_E_SDL_kWh"); // kWh-Konto SDL
|
||||||
|
|
||||||
|
if ($lastTs <= 0.0) {
|
||||||
$lastTs = $now;
|
$lastTs = $now;
|
||||||
$lastPEV = 0.0;
|
$lastPEV = 0.0;
|
||||||
$lastPSDL = 0.0;
|
$lastPSDL = 0.0;
|
||||||
@@ -112,7 +117,15 @@ class Bat_EV_SDL_V3_Beta extends IPSModule
|
|||||||
$Esdl = 0.0;
|
$Esdl = 0.0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$dtH = ($now - $lastTs) / 3600.0; // Stunden
|
// dt in Sekunden (Float) und Stunden
|
||||||
|
$dtSec = $now - $lastTs;
|
||||||
|
if ($dtSec < 0.0) $dtSec = 0.0;
|
||||||
|
|
||||||
|
// Sicherheitskappe bei Aussetzern (optional: z.B. max 10s)
|
||||||
|
if ($dtSec > 10.0) $dtSec = 10.0;
|
||||||
|
|
||||||
|
$dtH = $dtSec / 3600.0;
|
||||||
|
|
||||||
if ($dtH < 0) $dtH = 0.0;
|
if ($dtH < 0) $dtH = 0.0;
|
||||||
if ($dtH > 1.0) $dtH = 1.0; // Sicherheitskappe
|
if ($dtH > 1.0) $dtH = 1.0; // Sicherheitskappe
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user