UI verbindet sich trotz offenem Port nicht mit Backend

Hallo zusammen,

ich bekomme bei einer frischen Installation partout die Verbindung zwischen UI und Backend nicht zum laufen.
Zunächst die generellen Informationen:
System: Ubuntu (18 LTS)
Edge: prebuilt .jar (2024.2.0)
Backend: prebuilt .jar (2024.2.0)
Ui: Aktueller main branch
Node: 18.9.1
Angular: 15.2.9

Nach dem Setup nach Getting Started Guide
laufen backend und edge fehlerlos und verbinden sich.
Nur die UI möchte sich nicht verbinden. Ich verwende zum starten

ng serve -o -c openems-backend-dev

Ich habe zunächst Probleme beim backend port oder der Verbindungs URL vermutet.
Das Backend meldet aber

[Ui.Websocket] Starting websocket server [port=8082]
Feb 29 18:55:43 dev2 java[3363219]: 2024-02-29T18:55:43,436 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] [monitor] Connections: 0, Pool: 0/10, Pending: 0, Completed: 0, Active: 0
Feb 29 18:55:43 dev2 java[3363219]: 2024-02-29T18:55:43,436 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Edge.Websocket] [monitor] Connections: 1, Pool: 10/10, Pending: 0, Completed: 9809, Active: 0

Und ich kann mich lokal per wscat problemlos mit dem Websocket Port verbinden.
In der UI wird einfach nichts angezeigt (kein Login, siehe Bild). In der Konsole sieht es in der Fehlermeldung aber nach der richtigen Verbindungs URL aus.

Da ich keine UI Logs gefunden habe, gehen mir langsam die Ideen aus.
Ich habe nach diesem Thread noch versucht, auf die develop Version der UI zu wechseln, was aber keine Besserung gebracht hat. Probehalber habe ich alles neugestartet - ohne Effekt.

Bei netstat sieht soweit auch alles ok aus:

Ich freue mich über Tipps :slight_smile:

Ich weise hier einfach mal vorsichthalber darauf hin, dass im Falle einer Kommerziellen Nutzung von OpenEMS:

  1. OpenEMS Edge und Backend: Wenn du OpenEMS Edge und das Backend nutzt, beachte, dass diese unter der Eclipse Public License version 2.0 (EPL-2.0) stehen. Dies bedeutet, dass du die Software modifizieren und verteilen kannst, solange du die Änderungen unter denselben Bedingungen weitergibst und alle Urheberrechts- sowie Lizenzhinweise beibehältst. Stelle sicher, dass du eine Kopie der EPL-2.0 Lizenz beifügst, wenn du die Software oder abgeleitete Werke verteilst.
  2. OpenEMS UI: Die Benutzeroberfläche von OpenEMS ist unter der GNU Affero General Public License version 3 (AGPL-3.0) lizenziert. Diese Lizenz erfordert, dass du jeden Quellcode, den du modifizierst oder erweiterst, sowie abgeleitete Werke unter derselben Lizenz zur Verfügung stellst. Besonders wichtig ist hierbei, dass, wenn du die modifizierte Software über ein Netzwerk (GitHub) anbietest, du ebenfalls den modifizierten Quellcode zugänglich machen musst.

Ist mir nur aufgefallen wegen dem Link:

Grüße !

Bezüglich deines Problems - laufen die beiden sachen auf dem gleichen Gerät?

1 Like

Hi,

Vielen Dank für die Antwort.
Ich habe mich ausgiebig über die Lizenzen (und Implikationen daraus) informiert :blush:

Edge, Backend und UI laufen auf demselben Server.
Ich greife per Port Forwarding auf die UI zu.
Um das als Fehlerquelle auszuschließen, habe ich die UI ohne Port Forwarding gestartet, da sie sich ja trotzdem mit dem Backend verbinden sollte. Hat leider auch nicht geklappt.

Leider muss ich grundsätzlich sagen, dass ich bis dato nur den Fall hatte, dass beides auf einem Gerät, ohne sämtliche Port-Forwarding Optionen.

Diese Meldung:

bedeutet nur, dass kein User auf die UI zugegriffen hat (natürlich in deinem Fall logisch).

Das wird in diese Richtung gehen denke ich. Versuch doch mal bitte Port 8085.

Trag hier auch mal ein:

    url: "ws://" + 127.0.0.1 + ":8085",

statt:

    url: "ws://" + location.hostname + ":8085",

was passiert denn, wenn du die adresse im browser aufrufst:

localhost:8085
localhost:8082

so sehen meine funktionierende Backend Logs aus:

java[634890]: 2024-02-29T20:46:08,769 [thread-1] INFO  [.debugcycle.DebugCycleExecutor] [Ui.Websocket] [monitor] Connections: 2, Pool: 10/10, Pending: 0, Completed: 54, Active: 0

Die Connections stellen hier die User, die aktuell drauf zugreifen dar (Websocket connections).

2 Likes

Ich konnte das Problem letztendlich beben, indem ich einen anständigen nginx server eingerichtet habe.
Dementsprechend war das Problem das Port-Forwarding mit den Websockets. Bei den Konfigurationsseiten (:8080 und :8079) funktioniert das problemlos.
Danke für die Tipps @Sn0w3y :slight_smile:

2 Likes