no message
This commit is contained in:
@@ -31,6 +31,9 @@ und zusätzlich durch `Max_Current_abs` begrenzt. Die Typen 1 bis 4 verwenden
|
|||||||
weiterhin unverändert die bisherige zeit- und leistungsbasierte Erkennung.
|
weiterhin unverändert die bisherige zeit- und leistungsbasierte Erkennung.
|
||||||
Die Fahrzeugphasen werden anhand der tatsächlich gemessenen Leiterströme
|
Die Fahrzeugphasen werden anhand der tatsächlich gemessenen Leiterströme
|
||||||
erkannt; alte Phasenwerte werden beim Trennen oder Neuverbinden verworfen.
|
erkannt; alte Phasenwerte werden beim Trennen oder Neuverbinden verworfen.
|
||||||
|
Während einer Ladepause mit 0 W bleibt die zuletzt erkannte Phasenanzahl
|
||||||
|
erhalten. Sie ändert sich erst bei einer eindeutigen Strommessung oder beim
|
||||||
|
Abstecken des Fahrzeugs.
|
||||||
|
|
||||||
Stromvorgaben von 0 bis 32 A werden ebenfalls über das Gateway gesendet.
|
Stromvorgaben von 0 bis 32 A werden ebenfalls über das Gateway gesendet.
|
||||||
|
|
||||||
@@ -59,8 +62,9 @@ Ladestrom fließt. Beim Abstecken werden die erkannten Phasen zurückgesetzt.
|
|||||||
Typ 4 bleibt unverändert.
|
Typ 4 bleibt unverändert.
|
||||||
|
|
||||||
Beim Update bestehender Instanzen wird die frühere Eigenschaft `Token_Easee`
|
Beim Update bestehender Instanzen wird die frühere Eigenschaft `Token_Easee`
|
||||||
automatisch entfernt und durch die Gateway-Zuordnung ersetzt. Die vorhandene
|
aus Kompatibilitätsgründen intern beibehalten, aber nicht mehr verwendet oder
|
||||||
Modul- und Instanzidentität bleibt erhalten.
|
im Formular angezeigt. Auch der frühere Token-Timer wird deaktiviert. Die
|
||||||
|
vorhandene Modul- und Instanzidentität bleibt erhalten.
|
||||||
|
|
||||||
## Einrichtung
|
## Einrichtung
|
||||||
|
|
||||||
|
|||||||
+37
-42
@@ -103,6 +103,12 @@ class Ladestation extends IPSModule
|
|||||||
IPS_SetHidden($this->GetIDForIdent("Easee_Gateway_Connected"), true);
|
IPS_SetHidden($this->GetIDForIdent("Easee_Gateway_Connected"), true);
|
||||||
$this->SetBuffer("EaseeGatewayState", "{}");
|
$this->SetBuffer("EaseeGatewayState", "{}");
|
||||||
|
|
||||||
|
// Kompatibilität mit bestehenden Instanzen der ursprünglichen Version.
|
||||||
|
// Der Inhalt wird nicht mehr verwendet; die Easee-Anmeldung übernimmt
|
||||||
|
// ausschließlich das SignalR-Gateway.
|
||||||
|
$this->RegisterVariableString("Token_Intern", "Internes Token Easee");
|
||||||
|
IPS_SetHidden($this->GetIDForIdent("Token_Intern"), true);
|
||||||
|
|
||||||
// Hilfsvariabeln für Idle zustand
|
// Hilfsvariabeln für Idle zustand
|
||||||
$this->RegisterPropertyInteger("IdleCounterMax", 2);
|
$this->RegisterPropertyInteger("IdleCounterMax", 2);
|
||||||
$this->RegisterVariableInteger("IdleCounter", "IdleCounter", "", 0);
|
$this->RegisterVariableInteger("IdleCounter", "IdleCounter", "", 0);
|
||||||
@@ -113,44 +119,12 @@ class Ladestation extends IPSModule
|
|||||||
$this->SetValue("Idle", true);
|
$this->SetValue("Idle", true);
|
||||||
|
|
||||||
$this->RegisterTimer("Timer_Do_UserCalc_EVC",$this->ReadPropertyInteger("Interval")*1000,"IPS_RequestAction(" .$this->InstanceID .', "Do_UserCalc", "");');
|
$this->RegisterTimer("Timer_Do_UserCalc_EVC",$this->ReadPropertyInteger("Interval")*1000,"IPS_RequestAction(" .$this->InstanceID .', "Do_UserCalc", "");');
|
||||||
|
$this->RegisterTimer("Timer_Refresh_Token", 0, "IPS_RequestAction(" .$this->InstanceID .', "Refresh_Token", "");');
|
||||||
$this->RegisterVariableInteger("Mindestaldestrom", "Mindestaldestrom", "", 0);
|
$this->RegisterVariableInteger("Mindestaldestrom", "Mindestaldestrom", "", 0);
|
||||||
$this->EnableAction("Mindestaldestrom");
|
$this->EnableAction("Mindestaldestrom");
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function Migrate($JSONData)
|
|
||||||
{
|
|
||||||
parent::Migrate($JSONData);
|
|
||||||
|
|
||||||
$data = json_decode($JSONData, true);
|
|
||||||
if (!is_array($data)) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isset($data["configuration"]) || !is_array($data["configuration"])) {
|
|
||||||
$data["configuration"] = [];
|
|
||||||
}
|
|
||||||
|
|
||||||
$changed = false;
|
|
||||||
|
|
||||||
// Nur das frühere Ladestation-Modul besaß diese Easee-Eigenschaft.
|
|
||||||
// Sie muss vor dem Aufbau der neuen V2-kompatiblen Instanz entfernt
|
|
||||||
// werden, weil die Zugangsdaten jetzt ausschließlich im Gateway liegen.
|
|
||||||
if (array_key_exists("Token_Easee", $data["configuration"])) {
|
|
||||||
unset($data["configuration"]["Token_Easee"]);
|
|
||||||
$changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!array_key_exists("EaseeGatewayID", $data["configuration"])) {
|
|
||||||
// In Migrate keine Instanzfunktionen aufrufen: Die
|
|
||||||
// Instanzschnittstelle wird zu diesem Zeitpunkt erst aufgebaut.
|
|
||||||
$data["configuration"]["EaseeGatewayID"] = 0;
|
|
||||||
$changed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $changed ? json_encode($data) : "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public function GetConfigurationForm()
|
public function GetConfigurationForm()
|
||||||
{
|
{
|
||||||
$form = json_decode(file_get_contents(__DIR__ . "/form.json"), true);
|
$form = json_decode(file_get_contents(__DIR__ . "/form.json"), true);
|
||||||
@@ -294,6 +268,8 @@ class Ladestation extends IPSModule
|
|||||||
false
|
false
|
||||||
);
|
);
|
||||||
$this->SetTimerInterval("Timer_Do_UserCalc_EVC",$this->ReadPropertyInteger("Interval")*1000);
|
$this->SetTimerInterval("Timer_Do_UserCalc_EVC",$this->ReadPropertyInteger("Interval")*1000);
|
||||||
|
// Einen noch vorhandenen Token-Timer aus Altinstanzen sicher stilllegen.
|
||||||
|
$this->SetTimerInterval("Timer_Refresh_Token", 0);
|
||||||
$stationType = $this->ReadPropertyInteger("Ladestation");
|
$stationType = $this->ReadPropertyInteger("Ladestation");
|
||||||
$usesEaseeGateway = $this->UsesEaseeGateway($stationType);
|
$usesEaseeGateway = $this->UsesEaseeGateway($stationType);
|
||||||
IPS_SetHidden(
|
IPS_SetHidden(
|
||||||
@@ -365,6 +341,10 @@ class Ladestation extends IPSModule
|
|||||||
$this->ResetNullTimer();
|
$this->ResetNullTimer();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case "Refresh_Token":
|
||||||
|
$this->Refresh_Token();
|
||||||
|
break;
|
||||||
|
|
||||||
case "Mindestaldestrom":
|
case "Mindestaldestrom":
|
||||||
$this->SetValue("Mindestaldestrom", (int)$Value);
|
$this->SetValue("Mindestaldestrom", (int)$Value);
|
||||||
break;
|
break;
|
||||||
@@ -637,10 +617,12 @@ class Ladestation extends IPSModule
|
|||||||
{
|
{
|
||||||
$outputPhase = (int)($state["110"] ?? 0);
|
$outputPhase = (int)($state["110"] ?? 0);
|
||||||
|
|
||||||
// Ein explizit einphasiger Easee-Ausgang ist auch in IT-Netzen
|
// Bei Ladepause bzw. 0 W die zuletzt erkannte Fahrzeugphase behalten.
|
||||||
// einphasig, obwohl dort Strom auf zwei Leitern gemessen wird.
|
// Die Phasenvariable darf erst durch eine echte Strommessung wechseln.
|
||||||
if ($outputPhase >= 10 && $outputPhase <= 15) {
|
if (
|
||||||
$this->SetValue("Is_1_ph", true);
|
array_key_exists("120", $state) &&
|
||||||
|
abs((float)$state["120"]) < 0.1
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -651,6 +633,17 @@ class Ladestation extends IPSModule
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($activePhaseConductors === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ein explizit einphasiger Easee-Ausgang ist auch in IT-Netzen
|
||||||
|
// einphasig, obwohl dort Strom auf zwei Leitern gemessen wird.
|
||||||
|
if ($outputPhase >= 10 && $outputPhase <= 15) {
|
||||||
|
$this->SetValue("Is_1_ph", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Bei einem dreiphasig freigegebenen Ausgang kann ein einphasiges Auto
|
// Bei einem dreiphasig freigegebenen Ausgang kann ein einphasiges Auto
|
||||||
// trotzdem nur auf einem Leiter Strom beziehen. Observation 110 allein
|
// trotzdem nur auf einem Leiter Strom beziehen. Observation 110 allein
|
||||||
// kann diesen Fahrzeugwechsel deshalb nicht erkennen.
|
// kann diesen Fahrzeugwechsel deshalb nicht erkennen.
|
||||||
@@ -658,11 +651,6 @@ class Ladestation extends IPSModule
|
|||||||
$this->SetValue("Is_1_ph", true);
|
$this->SetValue("Is_1_ph", true);
|
||||||
} elseif ($activePhaseConductors >= 2) {
|
} elseif ($activePhaseConductors >= 2) {
|
||||||
$this->SetValue("Is_1_ph", false);
|
$this->SetValue("Is_1_ph", false);
|
||||||
} elseif (
|
|
||||||
($outputPhase >= 20 && $outputPhase <= 22) ||
|
|
||||||
$outputPhase === 30
|
|
||||||
) {
|
|
||||||
$this->SetValue("Is_1_ph", false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1069,6 +1057,13 @@ class Ladestation extends IPSModule
|
|||||||
$this->SetValue("IsTimerActive_Null_Timer", false);
|
$this->SetValue("IsTimerActive_Null_Timer", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function Refresh_Token()
|
||||||
|
{
|
||||||
|
// Kompatibilitätsfunktion für bestehende Instanzen. Das Gateway
|
||||||
|
// verwaltet die Easee-Anmeldung und benötigt diesen Timer nicht mehr.
|
||||||
|
$this->SetTimerInterval("Timer_Refresh_Token", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public function Get_Car_Status(int $carType)
|
public function Get_Car_Status(int $carType)
|
||||||
|
|||||||
@@ -31,6 +31,9 @@ und zusätzlich durch `Max_Current_abs` begrenzt. Die Typen 1 bis 4 verwenden
|
|||||||
weiterhin unverändert die bisherige zeit- und leistungsbasierte Erkennung.
|
weiterhin unverändert die bisherige zeit- und leistungsbasierte Erkennung.
|
||||||
Die Fahrzeugphasen werden anhand der tatsächlich gemessenen Leiterströme
|
Die Fahrzeugphasen werden anhand der tatsächlich gemessenen Leiterströme
|
||||||
erkannt; alte Phasenwerte werden beim Trennen oder Neuverbinden verworfen.
|
erkannt; alte Phasenwerte werden beim Trennen oder Neuverbinden verworfen.
|
||||||
|
Während einer Ladepause mit 0 W bleibt die zuletzt erkannte Phasenanzahl
|
||||||
|
erhalten. Sie ändert sich erst bei einer eindeutigen Strommessung oder beim
|
||||||
|
Abstecken des Fahrzeugs.
|
||||||
|
|
||||||
Stromvorgaben von 0 bis 32 A werden ebenfalls über das Gateway gesendet.
|
Stromvorgaben von 0 bis 32 A werden ebenfalls über das Gateway gesendet.
|
||||||
|
|
||||||
|
|||||||
@@ -635,10 +635,12 @@ class Ladestation_v2 extends IPSModule
|
|||||||
{
|
{
|
||||||
$outputPhase = (int)($state["110"] ?? 0);
|
$outputPhase = (int)($state["110"] ?? 0);
|
||||||
|
|
||||||
// Ein explizit einphasiger Easee-Ausgang ist auch in IT-Netzen
|
// Bei Ladepause bzw. 0 W die zuletzt erkannte Fahrzeugphase behalten.
|
||||||
// einphasig, obwohl dort Strom auf zwei Leitern gemessen wird.
|
// Die Phasenvariable darf erst durch eine echte Strommessung wechseln.
|
||||||
if ($outputPhase >= 10 && $outputPhase <= 15) {
|
if (
|
||||||
$this->SetValue("Is_1_ph", true);
|
array_key_exists("120", $state) &&
|
||||||
|
abs((float)$state["120"]) < 0.1
|
||||||
|
) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,6 +651,17 @@ class Ladestation_v2 extends IPSModule
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($activePhaseConductors === 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ein explizit einphasiger Easee-Ausgang ist auch in IT-Netzen
|
||||||
|
// einphasig, obwohl dort Strom auf zwei Leitern gemessen wird.
|
||||||
|
if ($outputPhase >= 10 && $outputPhase <= 15) {
|
||||||
|
$this->SetValue("Is_1_ph", true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Bei einem dreiphasig freigegebenen Ausgang kann ein einphasiges Auto
|
// Bei einem dreiphasig freigegebenen Ausgang kann ein einphasiges Auto
|
||||||
// trotzdem nur auf einem Leiter Strom beziehen. Observation 110 allein
|
// trotzdem nur auf einem Leiter Strom beziehen. Observation 110 allein
|
||||||
// kann diesen Fahrzeugwechsel deshalb nicht erkennen.
|
// kann diesen Fahrzeugwechsel deshalb nicht erkennen.
|
||||||
@@ -656,11 +669,6 @@ class Ladestation_v2 extends IPSModule
|
|||||||
$this->SetValue("Is_1_ph", true);
|
$this->SetValue("Is_1_ph", true);
|
||||||
} elseif ($activePhaseConductors >= 2) {
|
} elseif ($activePhaseConductors >= 2) {
|
||||||
$this->SetValue("Is_1_ph", false);
|
$this->SetValue("Is_1_ph", false);
|
||||||
} elseif (
|
|
||||||
($outputPhase >= 20 && $outputPhase <= 22) ||
|
|
||||||
$outputPhase === 30
|
|
||||||
) {
|
|
||||||
$this->SetValue("Is_1_ph", false);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user