Edge + UI Deployment - ein grober Leitfaden, Raspberry Pi

Guten Morgen & frohes neues Jahr,

Bei dem Versuch openEMS von der Entwicklungsumgebung auf ein Debian-System (bei mir: Raspberry Pi) auszurollen, musste ich sehr viel Zeit in Recherche investieren. Die offizielle Dokumentation dazu ist ja leider nicht vollständig. Aufgrund der Aktivitäten des gesamten Projekts und den damit verbundenen zeitlichen Aufwand alles auch noch zu dokumentieren und in step-by-step Anleitungen zu packen - mehr als verständlich!
Meine Schritte habe ich mir im firmen-eigenen Wiki (sehr grob und häßlich formatiert) notiert. Vielleicht nutzen meine Notizen jemanden…
OpenEMS_Deployment.pdf (138.4 KB)

Gruß
Klinki

4 Likes

Hallo klinki,

vorerst mal vielen herzlichen Dank für deine Mühe und das zur Verfügung stellen deiner Doku OpenEMS_Deployment für Raspberry Pi.
Da ich selbst bis Mai letzten Jahres einen RSPPi3+ im Einsatz hatte und anschließend auf einen INTELNUC mit Proxmox umgestiegen bin, interessiert mich dein Thema sehr.
Habe auf Proxmox schon einiges in einer VM oder LXC am Laufen, z. B. iobroker, influxdb, Grafana etc.
Dies müsste doch mit deiner sehr strukturierten Checkliste auch auf einem LXC umsetzbar sein ?
Möchte gleich vorausschicken, ich bin kein IT-Spezialist (z. B. Linux etc.) , sondern Betriebswirt mit starkem Interesse zur Digitalisierung u. Visualisierung im Bereich Energie u. Energiemanagementsystemen.

Herzlichen Dank im Voraus für deine Info u. Hilfe.

LG

Karl

Hallo Karl,

Ich wiederrum habe noch nicht mit LXC gearbeitet. Der Container müsste eine Java Runtime beinhalten. SSH-Zugriff und die Möglichkeit auf´s Dateisystem zuzugreifen sind ja gegeben…

Dies nur als Gedanke - wie gesagt: noch keine Erfahrungen mit LXC und ich möchte nichts Falsches sagen.

Gruß,
Klinki

Hallo klinki,

vielen Dank für die prompte Rückantwort. :grinning:

Versuche mal als Laie Proxmox mit VM u. LXC kurz zu erklären.
Proxmox ist eine Software mit welcher man auf einer Hardware (z. B. INTELNUC läuft bei mir auf Linux), viele virtuelle Maschinen laufen lassen kann.
Der Unterschied von VM u. LXC ist folgender:
Ein LXC-Linux-Container hat laut meiner Info weniger Overhead und soll von den Ressourcen sparsamer sein.
iobroker läuft auf einer VM=Virtuell Maschine.
Influxdb u. Grafana auf einem LXC.
D. h. ich würde dann mal versuchen einen LXC-Container anzulegen, dauert ca. 2 Min. um anschließend deine Checkliste abzuarbeiten.
Der Vorteil von Proxmox ist hier, wenn der LXC nicht passt, wird er einfach wieder gelöscht und dies wars. :smiley:

Der Container müsste eine Java Runtime beinhalten. SSH-Zugriff und die Möglichkeit auf´s Dateisystem zuzugreifen sind ja gegeben…
SSH-Zugriff ist auf jeden Fall gegeben, damit müsste, wie du anmerkst der Zugriff auf das Dateisystem geben sein.
Wie man Java-Runtime auf den LXC bekommt, weiß ich nicht, müsste aber auch möglich sein.

Meine Frage wäre jetzt noch, wie groß muss den die Diskgröße und der Arbeitsspeicher sein ?
Disk: 4 GB, Speicher: 1 GB ?

Ich habe keine Ahnung was dies für Ressourcen benötigt ?

Danke im Voraus für die Unterstützung.

LG

Karl

Bei mir läuft es auf einem Raspi 3. Auf der grafischen Oberfläche zur Darstellung ein Chromium-Browser. Dieser benötigt aktuell die meisten Ressourcen…

Das System nutzt ca. 8GB auf der Speicherkarte. Ich habe aber ein “volles” grafisches System aufgesetzt. Das geht natürlich auch deutlich schlanker. 1 GB RAM reicht, Disk müsste auch passen.
Es laufen Edge und UI.

Gruß,
Klinki

Ich hab das jetzt auf meinem Raspi 4 so wie in obigem PDF installiert und auch keine Fehlermeldungen erhalten.
Wenn ich allerdings versuche auf die Seite zuzugreifen, dann bleibt er bei mir im Browser mit der Meldung “Verbindung wird aufgebaut” hängen.


Hat jemand irgendwelche hilfreichen Tipps?

Vermutlich stimmen die Ports von UI und Edge nicht überein. Kannst Du in der Felix Oberfläche konfigurieren. Dies ist im Getting Started Guide beschrieben → Port für Websocket.

Ein Blick in die Entwickler-Tools des Firfox (Debugger) kann hier helfen.

Gruß,
Klinki

Muss ich heute abend mal testen, aber läuft auf dem Raspberry nicht nginx, oder bin ich jetzt total durcheinander?

Ein Webserver muss laufen. Im Forum findest Du Konfigurationen für nginx oder Apache.

Ja und den nginx habe ich so wie in den Tutorials zum Deployment auf Port 8085. wenn ich aber in Visual Studio das Edge UI erzeuge und auf den Raspi spiele, dann will sich das auf Port 8075 verbinden. So langsam verliere ich den Überblick bei den ganzen unterschiedlichen Anleitungen, die hier im Forum rumgeistern. kann sich da nicht mal jemand, der Ahnung hat erbarmen und da mal Nägel mit Köpfen machen und eine gescheite Doku erstellen?

Ich kann Deinen Frust gut verstehen. Mein Einstieg war ebenfalls holprig. Aus diesem Grund habe ich den “groben Leitfaden” auch geschrieben. Dem Dokument fehlt komplett der fachliche Hintergrund bzgl. des EMS. Ich kann Dir nur zustimmen und hoffe ebenfalls, dass es mal eine komplette Anleitung geben wird. Nur sind die Grenzen zwischen “muss programmiert werden” und “kann konfiguriert werden” fließend. Ohne in die Programmierung einzusteigen und Module anzupassen hätte ich viele Aufgaben nicht lösen können. Die Lernkurve ist leider sehr steil.

Aber zur Sache: Entweder änderst Du den Port in nginx oder im UI: src/themes\openems/environments und dann entweder edge-dev.ts oder edge-prod.ts. Je nachdem welche Umgebung Du nutzen willst.

Viel Erfolg & bleib dran - es lohnt sich :wink:

Nachtrag: Im fhem-Forum gab es auch mal einen Post: “kann das vielleicht mal jemand im Wiki dokumentieren?!”, Antwort: “Klar, Du”.

Manche Projekte leben nur wenn jeder mit anpackt. Vom Profi bis zum Anfänger (wie ich einer bin). Für das bisschen Leitfaden gab es viel positives Feedback

So, ich hab es hinbekommen. Es lag doch nicht an den Ports. Auf dem Raspberry lief schlicht und ergreifend der Controller API Websocket nicht. :scream:

Ja, vielleicht bin ich bei der ganzen Sache doch etwas zu ungeduldig. Die Installation ist aber in der Tat derart kompliziert, dass man da nicht wirklich sofort durchsteigt. Sowas ist wirklich frustrierend, wenn man sich dann mehrere Tage herum schlägt, ohne zu einem Ergebnis zu kommen.

Ich glaube ich brauch eine Auszeit von OpenEMS ode rich gebe es ganz auf. Nachdem mein Modbus zum Smartmeter aus openEMS nie so richtig funktioniert hat, ich zwar Daten in die InfluxDB schreiben, aber keine Daten aus der InfluxDB lesen konnte und das System immer instabiler wurde, habe ich den Raspi nochmal komplett neu aufgesetzt. Das Ergebnis mit der 2.7.0 war, dass jetzt gar nichts mehr geht! Alle Scripte sind fehlerfei gelaufen nginx läuft. Irgendwas von OpenEMS läuft auch, aber ich weiß nicht was, jedenfalls zeigt er mit im Apache nur sehr wenig an.
Da, wie ich merken musste auch keine Deye Hybridwechselrichter vorhanden sind werde ich wohl auf SolarAssistant wechseln. Das gibt es wenigstens als fetiges Image ohne, dass man da umständlich selbst etliche Entwicklungstools herunter laden und Quellen compilieren muss. Vielleicht schaue ich nächstes Jahr mal wieder hier vorbei in der Hoffnung, dass openEMS einen benutzerfreundlichen Entwicklungsstand erreicht hat.

Hallo zusammen,

Ich habe deine Anleitung @klinki gefolgt. Im 4. Schritt, beim Befehl “systemctl restart openems --no-block; journalctl -lfu openems” scheitert es bei mir.
Ich bekomme diese Fehlermeldung:

Mai 13 11:09:00 raspberrypi5 systemd[1]: openems.service: Scheduled restart job, restart counter is at 193.
Mai 13 11:09:00 raspberrypi5 systemd[1]: Stopped openems.service - OpenEMS.
Mai 13 11:09:00 raspberrypi5 systemd[1]: Starting openems.service - OpenEMS…
Mai 13 11:09:00 raspberrypi5 java[6608]: kein Hauptmanifestattribut, in /usr/lib/openems/openems.jar
Mai 13 11:09:00 raspberrypi5 systemd[1]: openems.service: Main process exited, code=exited, status=1/FAILURE
Mai 13 11:09:00 raspberrypi5 systemd[1]: openems.service: Failed with result ‘exit-code’.
Mai 13 11:09:00 raspberrypi5 systemd[1]: Failed to start openems.service - OpenEMS.

Hat jemand eine Ahnung, woran das liegen könnte?
Zu meiner Hintergrund, ich bin Keine ITler, sonder eine E-Techniker. Meine IT & Linux Kenntnisse sind beschränkt.

P.S: Im 3. Schritt, habe ich die config-Datei nicht unter c:/openems/config finden können.

Vielen Dank im Voraus für eure Mühe.
Jalil

Hi,

das Verzeichnis “/etc/openems.d” ist aber vohanden?
Du kannst den Prozess ja auch ohne systemd von Hand starten:

/usr/bin/java -Dfelix.cm.dir=/etc/openems.d/ -jar /usr/lib/openems/openems.jar

Welche Java-Version hast Du?

Gruß,
klinki

Hallo Klinki,
Danke für die schnelle Rückmeldung.

Ja. Das Verzeichnis “/etc/openems.d” ist vorhanden.

Wenn ich den Befehl hier eingebe, bekomme ich diese Rückmeldung:

jalil@raspberrypi5:~ $ sudo /usr/bin/java -Dfelix.cm.dir=/etc/op
enems.d/ -jar /usr/lib/openems/openems.jar
kein Hauptmanifestattribut, in /usr/lib/openems/openems.jar

Meine Java-Version ist die :
openjdk 17.0.11 2024-04-16
OpenJDK Runtime Environment (build 17.0.11+9-Debian-1deb12u1)
OpenJDK 64-Bit Server VM (build 17.0.11+9-Debian-1deb12u1, mixed mode)

Vielen Dank im Voraus für deine Mühe.

BG
Jalil

Java-Version sollte passen. Hast Du in der Edge-Application mal auf den Resolve-Button gedrückt? gab´s da Fehler?

Es scheint irgendwas beim Build schiefgelaufen zu sein

1 Like

Nutz doch erst mal eine Pre-Compiled Version von OpenEMS :slight_smile:

Hallo Sn0w3y,

Wie kann das machen? :slight_smile:

Hi Klinki,

Wo kann ich den Resolve-Button finden?

LG
Jalil