no message
This commit is contained in:
@@ -11,10 +11,9 @@ Easee-Konto wird eine weitere Gateway-Instanz benötigt.
|
|||||||
Stromvorgaben werden von den Ladestationsinstanzen an das Gateway übergeben und
|
Stromvorgaben werden von den Ladestationsinstanzen an das Gateway übergeben und
|
||||||
von dort über die Easee-REST-API gesendet.
|
von dort über die Easee-REST-API gesendet.
|
||||||
|
|
||||||
Bei 0 A setzt das Gateway das dynamische Stromlimit auf 0. Beim anschließenden
|
Bei 0 A setzt das Gateway das dynamische Stromlimit auf 0. Positive Werte werden
|
||||||
Wechsel auf einen positiven Strom wird die Sitzung zuerst fortgesetzt und danach
|
direkt als neues dynamisches Stromlimit gesendet. Positive Vorgaben unter 6 A
|
||||||
das neue dynamische Stromlimit gesetzt. Positive Vorgaben unter 6 A werden auf
|
werden auf den technischen Mindestladestrom von 6 A angehoben.
|
||||||
den technischen Mindestladestrom von 6 A angehoben.
|
|
||||||
|
|
||||||
Der benötigte WebSocket-Client wird nach dem Speichern der Easee-Zugangsdaten
|
Der benötigte WebSocket-Client wird nach dem Speichern der Easee-Zugangsdaten
|
||||||
automatisch erstellt und konfiguriert. Im WebSocket-Client muss keine URL
|
automatisch erstellt und konfiguriert. Im WebSocket-Client muss keine URL
|
||||||
|
|||||||
+1
-51
@@ -50,7 +50,6 @@ class EaseeGateway extends IPSModule
|
|||||||
$this->SetBuffer("Subscriptions", "{}");
|
$this->SetBuffer("Subscriptions", "{}");
|
||||||
$this->SetBuffer("SubscribedThisConnection", "{}");
|
$this->SetBuffer("SubscribedThisConnection", "{}");
|
||||||
$this->SetBuffer("PendingInvocations", "{}");
|
$this->SetBuffer("PendingInvocations", "{}");
|
||||||
$this->SetBuffer("LastCommandedCurrents", "{}");
|
|
||||||
$this->SetValue("SubscriptionCount", 0);
|
$this->SetValue("SubscriptionCount", 0);
|
||||||
$this->SetConnected(false);
|
$this->SetConnected(false);
|
||||||
|
|
||||||
@@ -553,11 +552,6 @@ class EaseeGateway extends IPSModule
|
|||||||
return ["success" => false, "error" => "Strom muss zwischen 0 und 32 A liegen"];
|
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;
|
$requestedAmps = $amps;
|
||||||
if ($amps > 0 && $amps < 6) {
|
if ($amps > 0 && $amps < 6) {
|
||||||
$amps = 6;
|
$amps = 6;
|
||||||
@@ -569,60 +563,16 @@ class EaseeGateway extends IPSModule
|
|||||||
"serialNumber" => $serialNumber,
|
"serialNumber" => $serialNumber,
|
||||||
"requestedAmps" => $requestedAmps,
|
"requestedAmps" => $requestedAmps,
|
||||||
"effectiveAmps" => $amps,
|
"effectiveAmps" => $amps,
|
||||||
"previousAmps" => $previousAmps,
|
|
||||||
]),
|
]),
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
|
||||||
if ($amps <= 0) {
|
return $this->AuthorizedApiRequest(
|
||||||
// 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(
|
|
||||||
"POST",
|
"POST",
|
||||||
"/api/chargers/" . rawurlencode($serialNumber) .
|
"/api/chargers/" . rawurlencode($serialNumber) .
|
||||||
"/commands/set_dynamic_charger_current",
|
"/commands/set_dynamic_charger_current",
|
||||||
json_encode(["amps" => $amps, "minutes" => 0])
|
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
|
private function AuthorizedApiRequest(string $method, string $path, string $body): array
|
||||||
|
|||||||
Reference in New Issue
Block a user