no message

This commit is contained in:
dh
2026-08-06 09:27:07 +02:00
parent 89f348123f
commit 875a961afb
4 changed files with 34 additions and 72 deletions
+5 -4
View File
@@ -4,9 +4,9 @@ Das Modul steuert verschiedene Ladestationstypen.
## Easee ## Easee
Die Ladestationstypen 5 und 6 verwenden das ausgewählte Die Ladestationstypen 5 und 6 verwenden das oben als Schnittstelle ausgewählte
`Easee SignalR Gateway`. Bei den Typen 1 bis 4 wird die Gateway-Auswahl `Easee SignalR Gateway`. Die Schnittstellenauswahl wird bei allen
ausgeblendet und keine Gateway-Verbindung verwendet. Stationstypen angezeigt.
- Typ 5: Easee mit zusätzlicher eCarUp-Benutzerprüfung für Solarladen - Typ 5: Easee mit zusätzlicher eCarUp-Benutzerprüfung für Solarladen
- Typ 6: Easee ohne eCarUp-Benutzerprüfung - Typ 6: Easee ohne eCarUp-Benutzerprüfung
@@ -30,6 +30,7 @@ Die Typen 1 bis 4 arbeiten unverändert und benötigen kein Easee-Gateway.
1. Eine Instanz `Easee SignalR Gateway` anlegen. 1. Eine Instanz `Easee SignalR Gateway` anlegen.
2. Easee-Benutzername und Passwort im Gateway eintragen. 2. Easee-Benutzername und Passwort im Gateway eintragen.
3. In `Ladestation_v2` Typ 5 oder 6 sowie die Easee-Seriennummer wählen. 3. In `Ladestation_v2` Typ 5 oder 6 sowie die Easee-Seriennummer wählen.
4. Im Feld `Easee SignalR Gateway` die gewünschte Gateway-Instanz auswählen. 4. Oben über `Schnittstelle konfigurieren` beziehungsweise
`Schnittstelle ändern` die gewünschte Gateway-Instanz auswählen.
Mehrere Easee-Ladestationen desselben Kontos verwenden gemeinsam ein Gateway. Mehrere Easee-Ladestationen desselben Kontos verwenden gemeinsam ein Gateway.
+1 -9
View File
@@ -4,7 +4,6 @@
"type": "Select", "type": "Select",
"name": "Ladestation", "name": "Ladestation",
"caption": "Ladestation", "caption": "Ladestation",
"onChange": "IPS_RequestAction($id, \"UpdateEaseeGatewayVisibility\", $Ladestation);",
"options": [ "options": [
{ {
"caption": "Go-E Wallbox (Alte Version)", "caption": "Go-E Wallbox (Alte Version)",
@@ -99,16 +98,9 @@
"caption": "Variable API-Token für eCarUp", "caption": "Variable API-Token für eCarUp",
"suffix": "" "suffix": ""
}, },
{
"type": "Select",
"name": "EaseeGatewayID",
"caption": "Easee SignalR Gateway",
"visible": false,
"options": []
},
{ {
"type": "Label", "type": "Label",
"caption": "Die Typen 5 und 6 verwenden das ausgewählte Easee SignalR Gateway. Easee-Zugangsdaten werden im Gateway konfiguriert." "caption": "Das Easee SignalR Gateway wird oben über Schnittstelle konfigurieren/ändern ausgewählt. Die Typen 5 und 6 verwenden diese Schnittstelle."
} }
] ]
} }
+3 -1
View File
@@ -4,7 +4,9 @@
"type": 3, "type": 3,
"vendor": "Belevo AG", "vendor": "Belevo AG",
"aliases": [], "aliases": [],
"parentRequirements": [], "parentRequirements": [
"{BC4E9B83-9C9B-44C3-A902-5CEB45B0E5B1}"
],
"childRequirements": [], "childRequirements": [],
"implemented": [ "implemented": [
"{A8EF2E37-6B35-4E92-A7D1-4F8172790BA2}" "{A8EF2E37-6B35-4E92-A7D1-4F8172790BA2}"
+25 -58
View File
@@ -152,37 +152,6 @@ class Ladestation_v2 extends IPSModule
return json_encode($data); return json_encode($data);
} }
public function GetConfigurationForm()
{
$form = json_decode(file_get_contents(__DIR__ . "/form.json"), true);
$showGateway = $this->UsesEaseeGateway($this->ReadPropertyInteger("Ladestation"));
$gatewayOptions = [
["caption" => "Kein Gateway", "value" => 0],
];
foreach (IPS_GetInstanceListByModuleID(self::EASEE_GATEWAY_MODULE_ID) as $gatewayID) {
$name = trim(IPS_GetName($gatewayID));
if ($name === "") {
$name = "Easee SignalR Gateway #" . $gatewayID;
}
$gatewayOptions[] = [
"caption" => $name . " (#" . $gatewayID . ")",
"value" => $gatewayID,
];
}
foreach ($form["elements"] as &$element) {
if (($element["name"] ?? "") === "EaseeGatewayID") {
$element["visible"] = $showGateway;
$element["options"] = $gatewayOptions;
break;
}
}
unset($element);
return json_encode($form);
}
public function ApplyChanges() public function ApplyChanges()
{ {
parent::ApplyChanges(); parent::ApplyChanges();
@@ -205,16 +174,17 @@ class Ladestation_v2 extends IPSModule
$instance = IPS_GetInstance($this->InstanceID); $instance = IPS_GetInstance($this->InstanceID);
$parentID = (int)$instance["ConnectionID"]; $parentID = (int)$instance["ConnectionID"];
// Alte Parent-Verbindungen aus Version 1.1 entfernen. Ab Version 1.2 // Eine in Version 1.2/1.3 gespeicherte Gateway-Auswahl wieder als
// wird das Gateway optional ueber EaseeGatewayID angesprochen. // normale IP-Symcon-Schnittstelle verbinden.
if ($parentID > 0) { if ($parentID <= 0) {
$parent = IPS_GetInstance($parentID); $storedGatewayID = $this->GetConfiguredEaseeGatewayID();
if ($parent["ModuleInfo"]["ModuleID"] === self::EASEE_GATEWAY_MODULE_ID) { if ($storedGatewayID > 0) {
IPS_DisconnectInstance($this->InstanceID); IPS_ConnectInstance($this->InstanceID, $storedGatewayID);
$parentID = $storedGatewayID;
} }
} }
if ($usesEaseeGateway && $this->GetConfiguredEaseeGatewayID() > 0) { if ($usesEaseeGateway && $this->IsEaseeGatewayInstance($parentID)) {
$this->SubscribeToEaseeGateway(); $this->SubscribeToEaseeGateway();
} else { } else {
$this->SetValue("Easee_Gateway_Connected", false); $this->SetValue("Easee_Gateway_Connected", false);
@@ -229,14 +199,6 @@ class Ladestation_v2 extends IPSModule
{ {
switch ($Ident) { switch ($Ident) {
case "UpdateEaseeGatewayVisibility":
$this->UpdateFormField(
"EaseeGatewayID",
"visible",
$this->UsesEaseeGateway((int)$Value)
);
break;
case "SetAktuelle_Leistung": case "SetAktuelle_Leistung":
$this->SetValue("Power", (int)$Value); $this->SetValue("Power", (int)$Value);
break; break;
@@ -358,22 +320,17 @@ class Ladestation_v2 extends IPSModule
private function SendEaseeGatewayRequest(array $request) private function SendEaseeGatewayRequest(array $request)
{ {
$gatewayID = $this->GetConfiguredEaseeGatewayID(); $instance = IPS_GetInstance($this->InstanceID);
if ($gatewayID <= 0) { $parentID = (int)$instance["ConnectionID"];
if (!$this->IsEaseeGatewayInstance($parentID)) {
$this->SetValue("Easee_Gateway_Connected", false); $this->SetValue("Easee_Gateway_Connected", false);
return null; return null;
} }
try { $response = $this->SendDataToParent(json_encode([
$response = EASEEGW_ProcessStationRequest( "DataID" => self::EASEE_GATEWAY_REQUEST_ID,
$gatewayID, "Buffer" => json_encode($request),
json_encode($request) ]));
);
} catch (Throwable $error) {
$this->SetValue("Easee_Gateway_Connected", false);
IPS_LogMessage("Ladestation_v2", $error->getMessage());
return null;
}
if (!is_string($response) || $response === "") { if (!is_string($response) || $response === "") {
return null; return null;
@@ -398,6 +355,16 @@ class Ladestation_v2 extends IPSModule
return $gatewayID; return $gatewayID;
} }
private function IsEaseeGatewayInstance(int $instanceID): bool
{
if ($instanceID <= 0 || !IPS_InstanceExists($instanceID)) {
return false;
}
$instance = IPS_GetInstance($instanceID);
return $instance["ModuleInfo"]["ModuleID"] === self::EASEE_GATEWAY_MODULE_ID;
}
private function UsesEaseeGateway(int $stationType): bool private function UsesEaseeGateway(int $stationType): bool
{ {
return $stationType === 5 || $stationType === 6; return $stationType === 5 || $stationType === 6;