Doku für Einsteiger

Hallo zusammen,

ich wollte mich mal in openEMS einarbeiten, scheitere aber shcon dabei, das überhaupt einzurichten.
unter Getting Started :: Open Energy Management System habe ich zwar eine Doku gefunden, aber ehrlich gesagt komme ich mit der nicht ganz klar. Zunöchst ist in der Doku vom jdk-11.0.13.8-hotspot die Rede. bei mir installiert er aber jdk-17.0.2.8-hotspot vom in der Doku angegebenen Link. Da scheint die Doku wohl etwas älter zu sein.
Nachdem ich Eclipse nach etlichen Versuchen soweit zum laufen gebracht habe scheiter ich an der Konfiguration des Apache Felix. In der Doku wird angegeben, dass man den über loclahost:8080 aufrufen soll. Der ging bei mir nicht, weshalb ich einen portscanner benutzt habe um herauszufinden wie ich ihn erreichen kann. Ich erreiche ihn über localhost:8079, warum auch immer.
Nun soll man aber laut Doku dort einen Scheduler unter " Scheduler All Alphabetically" konfigurieren. ist ja schön und gut, nur gibt es diesen Punkt bei mir nicht! Hier komme ich also rein ga rnicht mehr weiter. Hat jemand eine Lösung? Gibt es vielleicht irgendwo ein Youtube Video wo dieser doch recht komplizierte Installationsvorgang mal gezeigt wird?

Hallo @ThomasW69,

deiner Problemdarstellung entnehme ich, dass du versucht das OpenEMS Backend zu starten.
Du solltest für das Tutorial aber die EdgeApp.bndrun ausführen. Dann funktioniert auch dein Apache Felix auf Port localhost:8080 und der Scheduler ist verfügbar.

Viele Grüße!
Simon

Danke für den Hinweis. Ich hatte in der Tat das Backend.
Wenn ich die Edge App starte bekomme ich auch die Meldungen, dass noch keine Scheduler laufen, aber der Zugriff auf http://localhost:8080/system/console/configMgr liefert mir

Access Error: 404 – Not Found

Cannot open document for: /system/console/configMgr

Die Meldungen sehen so aus und da sind beim felix auch Fehler drin.

org.ops4j.pax.logging.pax-logging-log4j2 [log4j2] INFO : Initializing Log4j2 using default configuration
org.ops4j.pax.logging.pax-logging-log4j2 [log4j2] INFO : Scanning for classes in '/org/ops4j/pax/logging/log4j2/internal/bridges/' matching criteria annotated with @Plugin
org.ops4j.pax.logging.pax-logging-log4j2 [log4j2] INFO : Log4J2 configured using default configuration.
org.ops4j.pax.logging.pax-logging-log4j2 [org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier] INFO : Logging configuration changed. (Event Admin service unavailable - no notification sent).
io.openems.edge.application [io.openems.edge.application.EdgeApp] INFO : ===========================================
io.openems.edge.application [io.openems.edge.application.EdgeApp] INFO : OpenEMS version [2022.5.0-SNAPSHOT] started
io.openems.edge.application [io.openems.edge.application.EdgeApp] INFO : ===========================================
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_evcsSlowPowerIncreaseFilter] Activate Evcs.SlowPowerIncreaseFilter
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_power] Activate Ess.Power
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_host] Activate Core.Host
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_meta] Activate Core.Meta
org.apache.felix.http.jetty [org.eclipse.jetty.util.log] INFO : Logging initialized @4955ms to org.eclipse.jetty.util.log.Slf4jLog
org.ops4j.pax.logging.pax-logging-log4j2 [log4j2] INFO : Log4J2 configured using configuration from passed properties
org.ops4j.pax.logging.pax-logging-log4j2 [org.ops4j.pax.logging.spi.support.EventAdminConfigurationNotifier] INFO : Sending Event Admin notification (configuration successful) to org/ops4j/pax/logging/Configuration
org.apache.felix.http.jetty [org.eclipse.jetty.server.Server] INFO : jetty-9.4.44.v20210927; built: 2021-09-27T23:02:44.612Z; git: 8da83308eeca865e495e53ef315a249d63ba9332; jvm 17.0.2+8
org.apache.felix.http.jetty [org.eclipse.jetty.server.session] INFO : DefaultSessionIdManager workerName=node0
org.apache.felix.http.jetty [org.eclipse.jetty.server.session] INFO : No SessionScavenger set, using defaults
org.apache.felix.http.jetty [org.eclipse.jetty.server.session] INFO : node0 Scavenging every 660000ms
org.apache.felix.http.jetty [org.eclipse.jetty.server.handler.ContextHandler] INFO : Started o.e.j.s.ServletContextHandler@2feb5482{/,null,AVAILABLE}
org.apache.felix.http.jetty [org.eclipse.jetty.server.Server] INFO : Started @5222ms
org.apache.felix.http.jetty [org.eclipse.jetty.server.session] INFO : node0 Scavenging every 660000ms
2022-04-26T19:49:58,221 [artLevel] ERROR [org.apache.felix.http.jetty   ] Failed to start Connector: ServerConnector@210ea6d6{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080
	at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.startConnector(JettyService.java:619) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.initializeHttp(JettyService.java:449) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:347) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:192) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.start(JettyService.java:115) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyActivator.doStart(JettyActivator.java:66) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.base.internal.AbstractActivator.start(AbstractActivator.java:39) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2335) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) [org.apache.felix.framework-7.0.3.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.net.BindException: Address already in use: bind
	at sun.nio.ch.Net.bind0(Native Method) ~[?:?]
	at sun.nio.ch.Net.bind(Net.java:555) ~[?:?]
	at sun.nio.ch.ServerSocketChannelImpl.netBind(ServerSocketChannelImpl.java:337) ~[?:?]
	at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:294) ~[?:?]
	at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:89) ~[?:?]
	at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	... 17 more
org.apache.felix.http.jetty [org.eclipse.jetty.server.session] INFO : node0 Stopped scavenging
org.apache.felix.http.jetty [org.eclipse.jetty.server.handler.ContextHandler] INFO : Stopped o.e.j.s.ServletContextHandler@2feb5482{/,null,STOPPED}
2022-04-26T19:49:58,268 [artLevel] INFO  [org.apache.felix.http.jetty   ] Stopped Jetty.
2022-04-26T19:49:58,269 [artLevel] ERROR [org.apache.felix.http.jetty   ] Jetty stopped (no connectors available)
2022-04-26T19:49:58,270 [artLevel] ERROR [org.apache.felix.http.jetty   ] Exception while initializing Jetty.
java.lang.NullPointerException: Cannot invoke "org.eclipse.jetty.server.Server.setRequestLog(org.eclipse.jetty.server.RequestLog)" because "this.server" is null
	at org.apache.felix.http.jetty.internal.JettyService.initializeJetty(JettyService.java:392) ~[org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.startJetty(JettyService.java:192) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyService.start(JettyService.java:115) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.jetty.internal.JettyActivator.doStart(JettyActivator.java:66) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.http.base.internal.AbstractActivator.start(AbstractActivator.java:39) [org.apache.felix.http.jetty-4.1.14.jar:?]
	at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.startBundle(Felix.java:2335) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566) [org.apache.felix.framework-7.0.3.jar:?]
	at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:308) [org.apache.felix.framework-7.0.3.jar:?]
	at java.lang.Thread.run(Thread.java:833) [?:?]
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_componentManager] Activate Core.ComponentManager
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_appManager] Activate Core.AppManager
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_predictorManager] Activate Core.PredictorManager
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_sum] Activate Core.Sum
io.openems.edge.common [io.openems.edge.common.component.AbstractOpenemsComponent] INFO : [_cycle] Activate Core.Cycle
2022-04-26T19:49:58,722 [artLevel] INFO  [pax.logging.internal.Activator] Enabling Java Util Logging API support.
2022-04-26T19:49:58,729 [artLevel] INFO  [pax.logging.internal.Activator] Enabling SLF4J API support.
2022-04-26T19:49:58,731 [artLevel] INFO  [pax.logging.internal.Activator] Enabling Apache Commons Logging API support.
2022-04-26T19:49:58,732 [artLevel] INFO  [pax.logging.internal.Activator] Enabling JULI Logger API support.
2022-04-26T19:49:58,735 [artLevel] INFO  [pax.logging.internal.Activator] Enabling Avalon Logger API support.
2022-04-26T19:49:58,739 [artLevel] INFO  [pax.logging.internal.Activator] Enabling JBoss Logging API support.
2022-04-26T19:49:58,793 [artLevel] INFO  [pax.logging.internal.Activator] Enabling Log4J v1 API support.
2022-04-26T19:49:58,799 [artLevel] INFO  [pax.logging.internal.Activator] Enabling Log4J v2 API support.
2022-04-26T19:49:59,643 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] There are no Schedulers configured!
2022-04-26T19:50:00,643 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] There are no Schedulers configured!
2022-04-26T19:50:01,646 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] There are no Schedulers configured!
2022-04-26T19:50:02,650 [re.Cycle] WARN  [ms.edge.core.cycle.CycleWorker] [_cycle] There are no Schedulers configured!

Hallo @ThomasW69,

java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8080

legt nahe, dass ein anderer Prozess auf deinem PC diesen Port bereits benutzt. Das passiert z.B. wenn du die App doppelt startest.
Die Fehlermeldung in deinem Browser sieht nicht so aus, als käme sie von Apache Felix (resp. Jetty).
Wahrscheinlich liefert dein Browser dasselbe Ergebnis - unabhängig davon ob du OSGi gestartet hast oder nicht. Hier läuft ein anderer Webserver.

Du hast zwei Optionen. Entweder du beendest den anderen Webserver (Ich vermute es handelt sich um einen Tomcat o.ä.) und gibst somit den Port frei, oder du verwendest einen anderen Port, indem du in deiner EdgeApp.bndrun hier Änderungen vornimmst:

-runproperties:\
	org.osgi.service.http.port=8080,\

Viele Grüße
Simon

1 Like

Ja da lief in der Tat ein Webserver von NI Labview. Den habe ich inzwischen entfernt. Auf dem PC läuft alles entsprechend der Vorgehensweise in “Gettings Started”. Ich habe inwzischen edge auch auf einem Raspberry Pi4 am laufen, kann aber das Edge UI nicht erzeugen. Da erhalte ich in Visual Studio Code folgende Fehlermeldung:

PS C:\Users\Thomas\git\openems\ui> ng build -c edge
Your global Angular CLI version (13.3.3) is greater than your local version (13.3.1). The local Angular CLI version is used.

To disable this warning use "ng config -g cli.warnings.versionMismatch false".
An unhandled exception occurred: Configuration 'edge' is not set in the workspace.
See "C:\Users\Thomas\AppData\Local\Temp\ng-m2Ixmd\angular-errors.log" for further details.
PS C:\Users\Thomas\git\openems\ui> 

Was muss ich da in den Quellen anpassen, damit das läuft?

Ich glaube da muss nichts in den Quellen angepasst werden.

versuch es mal mit dem Befehl

ng build -c openems-edge-dev

bzw.
ng build -c openems-backend-dev für ein UI das sich mit dem backend verbindet

ng serve -c openems-edge-dev
ng serve -c openems-backend-dev
starten dann auch gleich das den UI-Server

Nutzt Du die Dokumentation unter
https://openems.github.io/openems.io/openems/latest/gettingstarted.html
oder hast Du eine andere?

Gruß,
Christopher

ja ich nutze die unter Getting Started :: Open Energy Management System
Das klappt auf dem PC auch wunderbar mit ng build -c openems-edge-dev
Dann kann ich auch unter localhost wunderbar auf die Demoanwendung zugreifen.

Unter Build OpenEMS UI :: Open Energy Management System gibt es aber einen anderen Befehl um das UI zu erzeugen. Da steht ng build -c edge und das erzeugt oben genannte Felermeldung.

Was ist denn das Ergebnis von

ng build -c openems-edge-dev

bzw.

ng serve -c openems-edge-dev

?

lassen sich beide Compilieren und mit ng serve kann ich auch wunderbar auf dem Lokalen PC arbeiten.

Allerdings bekomme ich auf dem Raspi auf den ich das portiert habe irgendwie keine Verbindung. Also verbinden geht schon über die IP, aber dann habe ich oben ein Wifi Symbol und die Meldung “Verbindung wird aufgebaut…”. Das bleibt dann so. Es muss allerdings ein Raspi Problem sein, und kann nicht an den selbst compilierten Files liegen, denn zwischenzeitlich habe ich mir die fertig compilierten Dateien aus den Assets von Release 2022.5.0 · OpenEMS/openems · GitHub geholt. Auch die zeigen das gleiche Verbindungsproblem.
Ich habe das aber shcon hier Edge + UI Deployment - ein grober Leitfaden - #4 by GOETSCHHOFER gepostet, da ich auch von dort die Anleitung für das aufspielen auf den raspi4 hatte.