From d8d3e2c9987369532c9859ac8e545de68d0fa4a1 Mon Sep 17 00:00:00 2001 From: DanielHaefliger Date: Thu, 6 Aug 2026 10:37:22 +0200 Subject: [PATCH] no message --- EaseeGateway/README.md | 5 +++-- EaseeGateway/module.php | 34 ++++++++++++++++++++++++++-------- Ladestation_v2/module.php | 2 +- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/EaseeGateway/README.md b/EaseeGateway/README.md index 34007f7..bea3f9b 100644 --- a/EaseeGateway/README.md +++ b/EaseeGateway/README.md @@ -11,9 +11,10 @@ Easee-Konto wird eine weitere Gateway-Instanz benötigt. Stromvorgaben werden von den Ladestationsinstanzen an das Gateway übergeben und von dort über die Easee-REST-API gesendet. -Bei 0 A pausiert das Gateway die aktuelle Ladesitzung. Beim anschließenden +Bei 0 A setzt das Gateway das dynamische Stromlimit auf 0. Beim anschließenden Wechsel auf einen positiven Strom wird die Sitzung zuerst fortgesetzt und danach -das neue dynamische Stromlimit gesetzt. +das neue dynamische Stromlimit gesetzt. Positive Vorgaben unter 6 A werden auf +den technischen Mindestladestrom von 6 A angehoben. Der benötigte WebSocket-Client wird nach dem Speichern der Easee-Zugangsdaten automatisch erstellt und konfiguriert. Im WebSocket-Client muss keine URL diff --git a/EaseeGateway/module.php b/EaseeGateway/module.php index c1bdd16..e6310f1 100644 --- a/EaseeGateway/module.php +++ b/EaseeGateway/module.php @@ -206,7 +206,8 @@ class EaseeGateway extends IPSModule $this->RegisterSubscription($serialNumber); return $this->CreateStateResponse($serialNumber); - case "SetCurrent": + case "SetDynamicChargerCurrent": + case "SetCurrent": // Kompatibilität mit Versionen bis 1.7 return json_encode( $this->SetDynamicChargerCurrent( $serialNumber, @@ -557,19 +558,36 @@ class EaseeGateway extends IPSModule ? (float)$lastCurrents[$serialNumber] : null; + $requestedAmps = $amps; + if ($amps > 0 && $amps < 6) { + $amps = 6; + } + + $this->SendDebug( + "DynamicCurrent", + json_encode([ + "serialNumber" => $serialNumber, + "requestedAmps" => $requestedAmps, + "effectiveAmps" => $amps, + "previousAmps" => $previousAmps, + ]), + 0 + ); + if ($amps <= 0) { + // Den angeforderten Zustand sofort merken. Damit wird beim nächsten + // positiven Sollwert immer ein Resume ausgelöst, auch wenn die + // HTTP-Antwort des 0-A-Befehls verloren geht. + $lastCurrents[$serialNumber] = 0; + $this->SetBuffer("LastCommandedCurrents", json_encode($lastCurrents)); + $result = $this->AuthorizedApiRequest( "POST", "/api/chargers/" . rawurlencode($serialNumber) . - "/commands/pause_charging", - "" + "/commands/set_dynamic_charger_current", + json_encode(["amps" => 0, "minutes" => 0]) ); - if ($result["success"] ?? false) { - $lastCurrents[$serialNumber] = 0; - $this->SetBuffer("LastCommandedCurrents", json_encode($lastCurrents)); - } - return $result; } diff --git a/Ladestation_v2/module.php b/Ladestation_v2/module.php index d136007..e1d02a5 100644 --- a/Ladestation_v2/module.php +++ b/Ladestation_v2/module.php @@ -571,7 +571,7 @@ class Ladestation_v2 extends IPSModule private function SendEaseeCurrentToGateway(float $value) { $response = $this->SendEaseeGatewayRequest([ - "action" => "SetCurrent", + "action" => "SetDynamicChargerCurrent", "serialNumber" => strtoupper(trim($this->ReadPropertyString("Seriennummer"))), "amps" => $value, ]);