Go-e (OpenEMS Ready: coming soon)

Eigenschaft Beschreibung
Typ go-eCharger
OpenEMS Ready coming soon
OpenEMS Fähigkeit Leistungsregulierung via REST API
Integriertes Lastmanagment nein
Ladeleistung bis 22kW (32A)
Anzahl der Phasen dreiphasig
Automatische Umschaltung der Phasen nein
Energiezähler ?
Eichrechtskonformität ?
Zugangsschutz RFID
Varianten Ladekabel Typ1, Typ2 (über Adapter)
Sicherheit FI Typ A mit DC Fehlerstromsensor
Kommunikation RS-485, LAN,
Protokoll OCPP 1.5, proprietäre UDP Schnittstelle
Display nein, WebApp
Bidirektionales Laden nein

Hinweis:

  • aktuelle Implementierung im offiziellen Repository ist nicht stabil
  • Patch ist in Vorbereitung

Hallo Christian,

wodurch äußert sich die Instabilität bei der aktuellen Implementierung?
Ich steuere schon seit mehr als einen halben Jahr die Ladestation mit Openems an und abgesehen von sporadischen Verbindungsproblemen läuft das bei mir problemlos.
Die Verbindungsprobleme lagen ausschließlich an der schlechten WLAN-Antenne der Ladestation, welche ehrlich gesagt unterirdisch sind, aber nicht an der Implementierung der Software.
Übersehe ich ein Problem oder ist das aufgrund anderer Randbedingung bei mir schlicht und ergreifend einfach noch nicht aufgetreten?
Da ich an dem Code mitgearbeitet habe, würde ich gerne wissen was hier schief gelaufen ist für die nächste Implentierung.

Gruß
Christian

Hallo Christian,

danke für deine Rückfrage. Um einen gemeinsamen Kontext zu schaffen, bitte ich dich vorab kurz diese Beschreibung dieser Kategorie durchzulesen. Ich versuche dort die Idee hinter dem OpenEMSReady-Unterforum zu erklären.

Bei dem aktuellen goE-Treiber ist aus meiner Sicht daher nichts “schief gelaufen” und es wundert mich nicht, dass das System bei dir gut läuft.
Da wir mit dem Treiber in kommerziellen Produkten arbeiten wollen, stellen wir andere Anforderungen an die Zuverlässigkeit. Das Problem des Treibers versteckt sich im Event-Handling. OpenEMS ruft die Methode handleEvent() aller aktiven Componenten auf welche das EventHandler-Interface implementieren. Damit wird auch der Eventhandler der goE Implementierung aufgerufen, sobald das Bundle aktiviert wird. OpenEMS ruft die Eventhandler streng sequentiell und zyklisch auf. Das ist einer der großen Vorteile von OpenEMS, da dadurch im Allgemeinen die Synchronisierung der Komponenten enorm vereinfacht wird. Erkauft wird dieser Vorteil durch die Konvention, dass alle Komponenten, welche das EventHandler Interface implementieren, niemals die Methode handleEvent() blockieren. Denn wird die Methode von einer Komponente blockiert bleibt mehr oder weniger das ganze OpenEMS-System stehen.

Genau dieses Verhalten haben wir nun in der Methode GoeChargerHomeImpl.java:handleEvent(). Dort wird this.goeapi.getStatus() aufgerufen. Dieser Aufruf wartet so lange bis die Antwort von der Ladesäule gekommen ist. Die Wartezeit fällt im Normalfall nicht auf. Gerade bei z.B. einer WLAN Verbindung zur Ladesäule kann es aber gelegentlich zu Störungen im ein/zweistelligen Sekundenbereich kommen. In dieser Zeit kann OpenEMS nicht auf Veränderungen im Stromnetz reagieren, da andere Controller ebenfalls so lange “einfrieren”.

OpenEMS bietet hierfür eine einfache Lösung. Die blockierende Funktionalität in der handleEvent() Methode kann über einen sogenannten Worker-Thread ausgelagert werden. Das ist die Idee hinter dem Pull Request. Dort gibt es einen neuen WorkerThread GoeChargerWorker. Dieser Worker-Thread wird im bisherigen Eventhandler in der handleEvent() Methode nun in jedem Zyklus angestoßen und kann dann in aller Ruhe die Informationen von der Ladesäule abholen.

Leider habe ich meinen PullRequest falsch eingereicht. Daher ist die Änderung noch nicht im offiziellen Repository integriert. Ich hoffe in den nächsten Tagen etwas Zeit zu finden um den Pull Request zu schließen und einen neuen sauberen PullRequest zu stellen.

1 Like

Hallo Christian,

vielen Dank für die ausführliche und verständliche Beschreibung!
Ich hatte also bisher nur Glück und für den breiten Einsatz ist das so natürlich nicht geeignet.

Viele Grüße
Christian