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