Fehlende Websocket Verbindung nach "Getting Started"

Hallo zusammen,

ich habe mir OpenEMS Edge, Backend und UI vom Release 2026.8.0 heruntergeladen und gemäß Getting Started :: Open Energy Management System versucht auf einem RPi in Betrieb zu nehmen. Nach ein paar kleinen Anpassungen bei den OpenEMS config Pfaden, laufen Edge und Backend jetzt zumindest und ich kann mittels Apache Felix auch auf die Config zugreifen. Die Ports habe ich alle gemäß Anleitung eröffnet:

  • Edge.Manager 8081
  • Ui.Websocket 8082
  • Controller Api Backend ws://localhost:8081
  • Controller Api Websocket 8085

Ich bekomme gefühlt aber keinerlei Websocket Verbindung hergestellt. Bei der Firewall habe ich all diese Ports geöffnet. Hier die 3 konkreten Probleme, die ich beobachte:

  • Im Log des Backends sehe ich:
    • WARN [Edge.Manager] Error during OnOpen of EdgeManager.WsData [0]
    • INFO [Edge.Manager] Backend.Edge.Client [null] disconnected
  • Im Log des Edges sehe ich:
    • ERROR Disconnected from OpenEMS Backend [ws://localhost:8081]:
    • INFO [ctrlBackend0] Websocket [ws://localhost:8081] closed. Code [1006] Reason []
    • image
  • nginx habe ich minimal nach Beispiel für Port 4200 aufgesetzt ohne Reverse Proxy oder gesonderten Einträgen für websockets. In der UI sehe ich im Browser Debug lediglich, dass auf Port 8075 nichts ankommt. D.h. für mich, dass die UI weiterhin versucht die edge-prod.ts zu nutzen, obwohl sie eigentlich die backend-prod.ts auf Port 8082 nutzen sollte. Das Browserfenster zeigt keinen Login sondern lediglich ein paar HTML Header

Sind diese Fehlermeldungen jmd hier bekannt? Liegt es an fehlenden Rechten des ausführenden Users? Nach meinem Verständnis sollten die Websocket Ports von keiner Firewall blockiert werden und auch nginx sollte mit den Websocket Ports nichts machen.

Vielen Dank vorab für jede Hilfe und jeden Tipp!

Benötigst du wirklich ein Backend?

  • Edge: Enthält die eigentliche EMS Logik, wird normalerweiße auf einem Raspberry installiert. Unterstützt eine lokale Timescale Datenbank und eine lokale UI
  • Backend: Dienst, der die Daten der verbundenen Edge Systeme sammelt und selbst in eine Timescale Datenbank einfügt. Untersützt ebenfalls UI, aber mit einem Benutzer- und Rechtesystem

Normalerweiße sollte es reichen, einfach nur Edge zu starten und in der Apache Felix Konfiguration vom Edge den Websocket für die UI zu starten.

Die UI muss dann natürlich auch Zugriff auf diesen Websocket Port haben.

Wenn du wirklich ein Backend betreiben willst, braucht du zwischen Edge und Backend eine weitere Software: Den BackendEdge. Die Edge-Systeme verbinden sich zu BackendEdge und dieser wiederrum zu Backend. Eine direkte Verbindung wird nicht mehr unterstützt.

Danke für die schnelle Antwort @Howaner !

Seit welchem Release benötigt man denn die BackendEdge Komponente und warum ist sie nicht Teil der neuen Releases?

Was genau meinst du mit “die UI benötigt Zugriff auf die Websocket Ports”? Wie stellt man das denn sicher?

Edge und Backend werden ja mittels Apache Felix konfiguriert, aber wie gelangt diese Info zur UI? Woher weiß die UI auf welchen Ports sie horchen soll?

Danke & Grüße

In diesem Ordner liegen die Konfigurationsdateien der UI: ui\src\themes\openems\environments

Dort ist die url zum UI Websocket angegeben. Die Dateien müssen vor dem Builden angepasst werden. Je nach Buildparameter müsstest du die korrekte Datei bearbeiten

ng build -c “openems,openems-edge-dev” => edge-dev.ts
ng build -c “openems,openems-edge-prod,prod” => edge-prod.ts
ng build -c “openems,openems-backend-dev” => backend-dev.ts
ng build -c “openems,openems-edge-prod,prod” => backend-prod.ts

Die Standardkonfiguration greift direkt über den Port auf den Websocket zu. Du kannst aber auch einen Reverse Proxy nutzen. Dann musst du aber sicherstellen, das Websockets weitergeleitet werden und in der Datei oben den Pfad korrekt einstellen.

Das Problem hatte ich auch. Das lag daran, dass die metadata.json im backend gefehlt hat. Du kannst fürs erste auch ein ‘Metadata.Dummy’ umstellen. Such mal nach dem Blog-Post “Wie ich OpenEMS zum laufen brachte” (kann leider keinen Link einfügen)
Insgesamt ist die Dokumentation schon sehr spartanisch.

Gerne ergänzen. :slight_smile: Immer wenn mir bei meinem Einstieg ein Fehler aufgefallen ist, habe ich probiert die Doku zu korrigieren, bzw. zu ergänzen wenn was gefehlt hat. Geht über den Link “Edit this Page” oben rechts eigentlich recht einfach. Falls es größere/konzeptionelle Themen sind, ist es meiner Erfahrung nach manchmal sinnvoller vorab hier im Forum nachzufragen.

Das Problem ist, dass ich erst angefangen habe mit openems zu experimentiren. Ich habe keine Ahnung von den ganzen details. Jedefalls nicht so viel, dass ich eine Anleitung schreiben könnte. Ich habe versucht herauszufinden, wie das Benutzer, Rollen und Rechtesystem funktioniert. Sehr weit bin ich dort noch nicht gekommen. Wenn hier jemand Tipps oder Beispiele hat, gerne her damit.

Dito

Ich habe auch bloß immer das ergänzt, was ich dann irgendwo recherchiert/ausprobiert hatte, bzw. dann nachdem ich hier im Forum Unterstützung bekommen habe, die Erkenntnisse zusammengefasst in der Anleitung dokumentiert. :slight_smile:

Ist für uns aktuell nicht so besonders interessant, daher habe ich mich damit nie ausführlich beschäftigt und AFAIK wurde da in letzter Zeit auch etwas geändert. Mein aktuelles, sehr rudimentäres, gefährliches Halbwissen ist:

  • Am Edge gibt es die beiden hart kodierten User Gast und Admin. Beim Aufruf der Login-Seite ist das Passwort für den Gast bereits vorausgefüllt. Für Admin ist das Passwort admin.
  • Für eine dediziertere Nutzerverwaltung benötigt es das Backend, sowie einen mit dem Backend verknüpften Identity Provider. Klassisch wurde hier Odoo genutzt, neu ist die Möglichkeit Keycloak zu verwenden(?).