diff --git a/EaseeGateway/README.md b/EaseeGateway/README.md index acfa1aa..1e5a695 100644 --- a/EaseeGateway/README.md +++ b/EaseeGateway/README.md @@ -3,7 +3,7 @@ Das Gateway hält eine gemeinsame SignalR-Verbindung zum Easee-Konto und verteilt die Observations 47 (Max Charger Current), 109 (Charger Op Mode), 110 (Output Phase), 120 (Total Power) und 182 bis 185 (gemessene Leiterströme) an alle verbundenen -Ladestation_v2-Instanzen. +Ladestation- und Ladestation_v2-Instanzen. Benutzername und Passwort werden ausschließlich im Gateway eingetragen. Mehrere Easee-Ladestationen desselben Kontos verwenden dasselbe Gateway. Für ein weiteres diff --git a/Ladestation/README.md b/Ladestation/README.md index 9fea178..8140d3b 100644 --- a/Ladestation/README.md +++ b/Ladestation/README.md @@ -7,8 +7,8 @@ Ladestationstyp an. Allgemeine Regel- und Zeitparameter bleiben immer sichtbar. ## Easee -Die Ladestationstypen 5 und 6 verwenden das oben als Schnittstelle ausgewählte -`Easee SignalR Gateway`. Die Schnittstellenauswahl wird bei allen +Die Ladestationstypen 5 und 6 verwenden das im Konfigurationsformular +ausgewählte `Easee SignalR Gateway`. Die Auswahl wird nur bei diesen beiden Stationstypen angezeigt. - Typ 5: Easee mit zusätzlicher eCarUp-Benutzerprüfung für Solarladen @@ -67,7 +67,6 @@ Modul- und Instanzidentität bleibt erhalten. 1. Eine Instanz `Easee SignalR Gateway` anlegen. 2. Easee-Benutzername und Passwort im Gateway eintragen. 3. In `Ladestation` Typ 5 oder 6 sowie die Easee-Seriennummer wählen. -4. Oben über `Schnittstelle konfigurieren` beziehungsweise - `Schnittstelle ändern` die gewünschte Gateway-Instanz auswählen. +4. Im Feld `Easee SignalR Gateway` die gewünschte Gateway-Instanz auswählen. Mehrere Easee-Ladestationen desselben Kontos verwenden gemeinsam ein Gateway. diff --git a/Ladestation/form.json b/Ladestation/form.json index 4722992..23200c3 100644 --- a/Ladestation/form.json +++ b/Ladestation/form.json @@ -105,10 +105,16 @@ "suffix": "", "visible": false }, + { + "type": "SelectInstance", + "name": "EaseeGatewayID", + "caption": "Easee SignalR Gateway", + "visible": false + }, { "type": "Label", "name": "EaseeGatewayHint", - "caption": "Das Easee SignalR Gateway wird oben über Schnittstelle konfigurieren/ändern ausgewählt.", + "caption": "Die Easee-Zugangsdaten werden im ausgewählten Gateway konfiguriert.", "visible": false } ] diff --git a/Ladestation/module.json b/Ladestation/module.json index 3e68d11..8d0cf52 100644 --- a/Ladestation/module.json +++ b/Ladestation/module.json @@ -4,13 +4,9 @@ "type": 3, "vendor": "Belevo AG", "aliases": [], - "parentRequirements": [ - "{BC4E9B83-9C9B-44C3-A902-5CEB45B0E5B1}" - ], + "parentRequirements": [], "childRequirements": [], - "implemented": [ - "{A8EF2E37-6B35-4E92-A7D1-4F8172790BA2}" - ], + "implemented": [], "prefix": "GEF", "url": "https://git.belevo.ch/dh/Enelix/src/branch/main/Ladestation" } diff --git a/Ladestation/module.php b/Ladestation/module.php index 062a8cf..fcfc46a 100644 --- a/Ladestation/module.php +++ b/Ladestation/module.php @@ -200,6 +200,9 @@ class Ladestation extends IPSModule "visible" => false, "caption" => "Variable mit eCarUp API-Token", ], + "EaseeGatewayID" => [ + "visible" => false, + ], "EaseeGatewayHint" => [ "visible" => false, ], @@ -253,6 +256,7 @@ class Ladestation extends IPSModule "caption" => "eCarUp Benutzerkennung für Solarladen", ]; $configuration["Token_ECarUp"]["visible"] = true; + $configuration["EaseeGatewayID"]["visible"] = true; $configuration["EaseeGatewayHint"]["visible"] = true; break; @@ -261,6 +265,7 @@ class Ladestation extends IPSModule "visible" => true, "caption" => "Easee Seriennummer", ]; + $configuration["EaseeGatewayID"]["visible"] = true; $configuration["EaseeGatewayHint"]["visible"] = true; break; } @@ -296,22 +301,7 @@ class Ladestation extends IPSModule !$usesEaseeGateway ); - $instance = IPS_GetInstance($this->InstanceID); - $parentID = (int)$instance["ConnectionID"]; - - // Eine in Version 1.2/1.3 gespeicherte Gateway-Auswahl wieder als - // normale IP-Symcon-Schnittstelle verbinden. - if ($parentID <= 0) { - $storedGatewayID = $this->GetConfiguredEaseeGatewayID(); - if ($storedGatewayID > 0) { - IPS_ConnectInstance($this->InstanceID, $storedGatewayID); - $parentID = $storedGatewayID; - } - } - - if ($usesEaseeGateway && $this->IsEaseeGatewayInstance($parentID)) { - $this->SubscribeToEaseeGateway(); - } else { + if (!$usesEaseeGateway || $this->ReadPropertyInteger("EaseeGatewayID") <= 0) { $this->SetValue("Easee_Gateway_Connected", false); } @@ -449,17 +439,16 @@ class Ladestation extends IPSModule private function SendEaseeGatewayRequest(array $request) { - $instance = IPS_GetInstance($this->InstanceID); - $parentID = (int)$instance["ConnectionID"]; - if (!$this->IsEaseeGatewayInstance($parentID)) { + $gatewayID = $this->GetConfiguredEaseeGatewayID(); + if ($gatewayID <= 0 || !function_exists("EASEEGW_ProcessStationRequest")) { $this->SetValue("Easee_Gateway_Connected", false); return null; } - $response = $this->SendDataToParent(json_encode([ - "DataID" => self::EASEE_GATEWAY_REQUEST_ID, - "Buffer" => json_encode($request), - ])); + $response = EASEEGW_ProcessStationRequest( + $gatewayID, + json_encode($request) + ); if (!is_string($response) || $response === "") { return null;