HowTo connect preBuuild UI with local Edge?

For debugging/reviewing I’m running a local edge out of Eclipse. Controller API Websocket is enabled and configured with port 8085:

nmap shows me that port 8085 is open.

I downloaded the pre-build UI from October and September and run them with a simple http-Server python3 -m http.server 8082. If I open localhost:8082 in the web browser the UI stays for quite a while in loading state and finally outputs a message, that local access is currently not possible, I shall retry in 10 minutes.

What did I do wrong?

Hey,

der Grund, warum es bei dir mit dem simplen python -m http.server nicht funktioniert, ist, dass dieser nur statische Dateien ausliefert und keine WebSocket-Verbindungen unterstützt. Genau die braucht das OpenEMS-UI aber, um mit deinem lokal laufenden Edge zu sprechen – sonst bleibt es ewig im Ladezustand und zeigt schließlich „local access currently not possible“.

So geht’s richtig:

1. Edge richtig starten:

Stelle sicher, dass der Controller API WebSocket im Edge aktiviert ist (Standard: Port 8085). Wenn nmap zeigt, dass der Port offen ist, passt das schon mal.

2. UI nicht mit Python-Server starten:

Starte das UI nicht als statische Seite, sondern direkt mit Angular – z. B. so:

npm install

ng serve -c openems-edge-dev

Dann läuft es unter http://localhost:4200 und kann korrekt per ws://localhost:8085 mit deinem Edge sprechen.

3. Alternativ mit Proxy:

Wenn du unbedingt ein fertiges, vorgebaute UI nutzen willst, brauchst du einen Webserver wie NGINX oder Apache, der auch WebSocket-Upgrades weiterleitet. Ein einfacher Python-HTTP-Server reicht hier nicht aus.

Dann sollte die Verbindung zwischen UI und lokalem Edge problemlos funktionieren.

Viele Grüße

Hannes

1 Like

Folgende Schritte waren es letztendlich bei mir:

  1. install node.js
  2. cd into openems/ui
  3. npm install
  4. npm install -g @angular/cli
  5. ng serve -c openems-edge-dev

ja, wäre auch hier so beschrieben

Hallo,

bei mir liegt eine ähnliche Situation wie bei sjjh vor. Habe das Controller API WebSocket im Edge aktiviert mit Port 8085. Scheinbar ist der Port aber nicht offen:

Ausgabe nmap:

Starting Nmap 7.95 ( ``https://nmap.org`` ) at 2025-10-23 10:59 CEST
Note: Host seems down. If it is really up, but blocking our ping probes, try -Pn
Nmap done: 1 IP address (0 hosts up) scanned in 3.02 seconds

Woran kann es liegen, dass der Port nicht geöffnet wird?

Schöne Grüße

Georg

Dann scheint es ein anderes Problem zu sein als bei mir. :slight_smile:

Was sagt das Log vom Edge?
Läuft Edge (und UI) bei dir auch local aus Eclipse heraus, oder wie sieht das deployment aus?

Hatte nmap mit falscher IP-Adresse aufgerufen. Port 8085 ist doch offen.

Hier mein Setting:

OS: Ubuntu 24.04.3 LTS

Java: openjdk version “21.0.8” 2025-07-15

Getting Started Schritte 2 - 5 durchgeführt: Simulation läuft und Werte werden in Eclipse-Console ausgegeben.

Dann zum Starten des UI die o.g. Schritte ausgeführt: (node.js hatte ich schon vorher installiert)

  1. cd into openems/ui

  2. npm install

  3. npm install -g @angular/cli

  4. ng serve -c openems-edge-dev

Beim Aufruf von http://localhost:4200 dann folgendes Verhalten:
ca. 10s (mit “rotierender Animation”)

Wird geladen …

danach:

Lokalzugriff derzeit nicht möglich

Sollte das OpenEMS-Gerät neugestartet worden sein, warten Sie bitte einen Moment, bis der Neustart abgeschlossen wurde. undefinedundefinedundefinedundefinedundefined

Probieren Sie bitte in 10 Minuten den Browser neu zu laden.

In der Browser-Konsole finden sich u.a. folgende Fehlermeldungen:

Firefox kann keine Verbindung zu dem Server unter ws://localhost:4200/backend aufbauen. rxjs_webSocket.js:109:62

Websocket connection couldnt be established in 10s chunk-S2I6IBPG.js:10985:15

Könnte das einen Hinweis auf die Problemursache liefern?

Du servest edge und willst Backend aufrufen?

Was ist denn dein Plan? Use Case?

Ich will Backend nicht aufrufen und weiß nicht, wo oder wie dieser Aufruf von Backend geschieht. Vielleicht kannst du mir einen Hinweis geben, wo dieser Aufruf erfolgt. (Sorry, ist mein erster Versuch mit OpenEMS)

Mein Use Case: Bin Privatanwender und ich will das Zusammenspiel der Komponenten meines Energiesystems (Fronius WR, Ohmpilot, WB, Lambda Wärmepumpe) optimieren. Insbesondere die Nutzung der WP bei PV-Überschuss funktioniert nicht gut, die WPe wird meistens zu früh abgeschaltet, obwohl noch PV-Strom verfügbar wäre, um in den Heizungs-Puffer zu speichern.

Ich habe jetzt die Quelle für den Aufruf von backend gefunden:

In der Datei ../openems/ui/src/themes/openems/environments/edge-dev.ts findet sich:

url: ${getWebsocketScheme()}://${location.host}/backend,

Wenn ich backend lösche oder durch edge ersetze, bekomme ich beim Aufruf von http://localhost:4200 nur noch eine weiße Seite (ohne “Wird geladen …”) und in der Browser-Konsole die Meldungen

Firefox kann keine Verbindung zu dem Server unter ws://localhost:4200/ aufbauen.

oder

Firefox kann keine Verbindung zu dem Server unter ws://localhost:4200/edge aufbauen.

Wenn ich aber folgende Definition eingebe:

url: ${getWebsocketScheme()}://${location.hostname}:8085,

funktioniert der Aufruf von http://localhost:4200 und ich bekomme das UI angezeigt.