diff --git a/EaseeGateway/README.md b/EaseeGateway/README.md index bea3f9b..7e9b8a9 100644 --- a/EaseeGateway/README.md +++ b/EaseeGateway/README.md @@ -11,10 +11,9 @@ 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 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. Positive Vorgaben unter 6 A werden auf -den technischen Mindestladestrom von 6 A angehoben. +Bei 0 A setzt das Gateway das dynamische Stromlimit auf 0. Positive Werte werden +direkt als neues dynamisches Stromlimit gesendet. 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 e6310f1..c4d25a1 100644 --- a/EaseeGateway/module.php +++ b/EaseeGateway/module.php @@ -50,7 +50,6 @@ class EaseeGateway extends IPSModule $this->SetBuffer("Subscriptions", "{}"); $this->SetBuffer("SubscribedThisConnection", "{}"); $this->SetBuffer("PendingInvocations", "{}"); - $this->SetBuffer("LastCommandedCurrents", "{}"); $this->SetValue("SubscriptionCount", 0); $this->SetConnected(false); @@ -553,11 +552,6 @@ class EaseeGateway extends IPSModule return ["success" => false, "error" => "Strom muss zwischen 0 und 32 A liegen"]; } - $lastCurrents = $this->ReadBufferArray("LastCommandedCurrents"); - $previousAmps = isset($lastCurrents[$serialNumber]) - ? (float)$lastCurrents[$serialNumber] - : null; - $requestedAmps = $amps; if ($amps > 0 && $amps < 6) { $amps = 6; @@ -569,60 +563,16 @@ class EaseeGateway extends IPSModule "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/set_dynamic_charger_current", - json_encode(["amps" => 0, "minutes" => 0]) - ); - - return $result; - } - - // Easee behandelt 0 A als pausierte Sitzung. Beim ersten positiven - // Sollwert nach 0 A muss die Sitzung vor dem Setzen des Stromlimits - // explizit fortgesetzt werden. Resume setzt das dynamische Limit zurueck. - if ($previousAmps === null || $previousAmps <= 0) { - $resumeResult = $this->AuthorizedApiRequest( - "POST", - "/api/chargers/" . rawurlencode($serialNumber) . - "/commands/resume_charging", - "" - ); - - if (!($resumeResult["success"] ?? false)) { - $resumeResult["error"] = - "Ladevorgang konnte nicht fortgesetzt werden: " . - (string)($resumeResult["error"] ?? "Unbekannter Fehler"); - return $resumeResult; - } - } - - $result = $this->AuthorizedApiRequest( + return $this->AuthorizedApiRequest( "POST", "/api/chargers/" . rawurlencode($serialNumber) . "/commands/set_dynamic_charger_current", json_encode(["amps" => $amps, "minutes" => 0]) ); - - if ($result["success"] ?? false) { - $lastCurrents[$serialNumber] = $amps; - $this->SetBuffer("LastCommandedCurrents", json_encode($lastCurrents)); - } - - return $result; } private function AuthorizedApiRequest(string $method, string $path, string $body): array