Hallo Florian,
es freut mich, dass du hierher gefunden hast. Wir haben viele Anfragen nach Dienstleistung rund um OpenEMS und aus meiner Sicht zu wenig Dienstleister für dieses Thema. Von daher freue ich mich sehr über dein Interesse.
Zu deinen Fragen:
Was genau kann denn das Backend? Ich habe es hier teils in Zusammenhang mit Odoo gelesen. Der Teil in der Doku zum Backend ist sehr knapp. “Architecture” ist komplett leer, daher:
Generell: Das Backend läuft typischerweise auf einem Server im Internet. Eine Edge läuft auf einer Hardware in einem lokalen LAN mit direktem Kontakt zu PV-Anlagen, Batterien, Ladesäulen, Wärmepumpen usw…
An einem Backend können theoretisch beliebig viele Edges angebunden werden. Die Edges sind über jeweils einen eigenen Websocket mit einem (oder mehreren) Backend verbunden. Websocket bedeutet, dass es eine bidirektionale Verbindung gibt. Eine Edge schickt regelmässig Informationen an ein Backend. Ein Backend kann aber auch Informationen an eine oder viele Edges verschicken.
OpenEMS bietet keine Verwaltung. Die Verwaltung wird über eine Metadata Komponente hinzugefügt. Für Odoo gibt es eine sehr gute Einbindung.
Ein System aus OpenEMS Backend und Odoo und einer Postgres-Datenbank stellt ein vollwertiges System zur Verfügung um Nutzer und Edges zu verwalten und Verknüpfungen zwischen beliebigen Nutzern und Edges zu etablieren.
Der Vollständigkeit wegen sei noch die OpenEMS-UI erwähnt.
Eine OpenEMS-UI kann direkt an eine Edge gebunden werden, sie kann aber auch an das Backend gebunden werden. Praktisch bedeutet es, das ich zu Hause in meiner Installation direkt im lokalen LAN auf mein Gerät zugreifen kann und dort die OpenEMS-UI nutze. Wenn ich unterwegs bin, greife ich auf eine OpenEMS-UI zu, welche im Internet angeboten wird und welche auf das Backend zugreift. Die Informationen werden unterwegs also vom OpenEMS-Backend bereit gestellt, während sie zu Hause von OpenEMS-Edge bereitgestellt werden können.
- Ist das Backend einfach eine Replizierung des Edge?
Die Edges übertragen zyklisch und Event getrieben wichtige Informationen an das Backend, dort werden Sie in eine oder mehrere Datenbanken geschrieben. Viele Daten welche auf der Edge vorhanden sind, sind auch auf dem Backend vorhanden. So gesehen könnte man von einem virtuellen Zwilling sprechen, wenn auch es noch keine entsprechende Objektrepräsentation im Backend gibt.
Die Edge ist verantwortlich für das lokale Energiemanagement. Auf der Edge gibt es ungleich mehr Daten und Informationen, welche aber nicht alle an das Backend übertragen werden.
Dieses kann aber sehr feingranular gesteuert werden
- Bietet das Backend eine Mehrmandantenfähigkeit? D.h. können verschiedene Kunden mit verschiedenen Edges angelegt werden?
OpenEMS kennt verschiedene Nutzertypen (Admin, Installer, Owner, Guest). Verschiedenen Nutzern können versdchiedene Edges zugewiesen werden. Es sind viele Arten der Beziehung umsetzbar: 0-X Nutzer ↔ 0…Y Edges
Für uns ist z.B. tyisch, das 1 Installateur Zugriff auf alle von ihm installierte Kundensysteme bekommt. Er kann aber nicht in die Anlagen anderer Kunden schauen. Und ein Kunde kann typischerweise auch nicht in eine andere Kundenanlage schauen.
- Werden die Zeitreihendaten zwischen Edge und Backend sychronisiert? Gibt es die Möglichkeit zum Downsampling der Daten?
OpenEMS ist auf Skalierung ausgelegt. 1 Backend kann problemlos tausende Edges verwalten. Die Edge überträgt zyklisch eingehende Daten und kann in Grenzen auch Daten nachübertragen. Z.B. wenn der Server im Wartungsfenster offline sein sollte. Darüber hinaus gibt es aber keine Synchronisierung. Downsampling ist in der Form enthalten das Daten, welche sich nicht verändern, nur alle 5 Minuten übertragen werden, während Änderungen in Daten sofort übertragen werden.
- Kann ich auch vom Backend aus Aktionen auf dem Edge anstoßen? z.B. ein Button, der ein Relais ansteuert oder eine Modbus Adresse beschreibt?
OpenEMS verfügt über sehr umfangreiche JSON-RPC Mechanismen in beide Richtungen. Theoretisch kann ein Backend beliebige Änderungen an einer Edge vornehmen. Hier sollten aber vorab umfangreiche Sicherheitsüberlegungen angestellt werden, ob und welche Art von Beeinflussung ein Backend auf einer Edge durchführen darf.
- Kann ich vom Backend aus den Edge monitoren, warten, aktualisieren?
Monitoring und Wartung ja.
Aktualisierung: Alle Mechanismen sind da, aber das Update ist nicht von Haus aus implementiert. Wir nutzen hierzu den Linux Paketmanager und stoßen das Update über die Edge an. Der Weg ist nicht weit.
- Könnte ich remote auf dem Edge z.B. einen neuen Modbus-Teilnehmer anlegen und das UI aktualisieren? Ab wann muss ich kompilieren und neu deployen?
Fernkonfiguration ist möglich. Die UI aktualisiert sich teilweise selbst, falls nicht, muss die UI nach einer Konfigurationsänderung einfach neu geladen werden. Es wird nur die Edge umkonfiguriert. Die UI reagiert dann automatisch auf Änderungen an der Edge.
- Was verbirgt sich denn hinter der Lizensierung, die ich in den Apps (UI) sehe? Kann das eine Art AppStore abbilden, um Features kostenpflichtet freizuschalten?
Genau das ist die Idee. Das geht aber nicht out-of-the-box. Dazu empfehle ich Zeit in Odoo zu investieren.
- Gibt es schon was für Alarme / Notifications via Push?
In Kombination mit Odoo können Benachrichtigungen bei verschiedenen Events versendet werden, z.B. Edge ist offline, oder wenn ein Wechselrichterin Störung gegangen ist. Jede OpenEMS Komponente im Edge hat einen Status (OK, INFO, WARN, FAULT). Wechselt eine Komponenten in einen Status != OK, dann wird der Gesamtstatus entsprechend auch abgeändert. Verändert sich der Gesamtstatus für eine vorgegebene Zeit nicht, so wird ein Mail an einen Nutzer versendet, sofern er sich für die Benachrichtigung angemeldet hat und das Statuslevel erreicht ist, z.B. mindestens WARN.
- Logik / Rules: JsonLogic habe ich gesehen. Gibt es Ansätze im Stil von NodeRed oder einer anderen RuleEngine mit dem Ziel, dass der Anlagenbetreiber selbst einfache Logiken zusammenklicken kann?
Nein, würde ich aktuell auch nicht empfehlen. Die Lernkurve bei OpenEMS ist sehr steil. Zu verstehen, welche Abhängigkeiten es gibt, benötigt Zeit. Ein Anlagenbetreiber wird damit überfordert sein. Auch gibt es innerhalb der Edge kein Modul-Sicherheitskonzept. Eine JsonLogic könnte also zentrale Komponenten unbeabsichtigt stören.
UI
- Ist “UI” in Kombination mit Edge und Backend das gleiche, sowohl vom Aussehen als auch in der Funktion?
Ja, Live Ansicht und Historie sind praktisch identisch.
- UIs/Dashboard anlegen: Ich kenne es von Thingsboard z.B. so, dass Dashboards im Backend angelegt werden können. Die werden dann einem Kunden bzw. einem Edge zugewiesen und über gRPC dahin übertragen.
Wie sieht hier der Workflow bei OpenEMS aus?
- Wie flexibel ist das UI? Kann ich mehrere UIs für den gleichen Kunden und gleichen Edge anlegen, um zu gruppieren? Können UIs an unterschiedliche Benutzerrechte gebunden sein?
Nein, so etwas gibt es bei OpenEMS nicht/noch nicht.
- Kann ich individuelle Charts anlegen, d.h. beliebige Zeitreihendaten in den den gleichen Chart packen, Farben definieren, zweite Y-Achse usw.?
Kann ich Kennzahlen aus Zeitreihen bilden und darstellen, z.B. Energieverbrauch pro Stückzahl?
Kann ich Charts, Tabellen, Buttons selbst anordnen?
Die UI kann frei angepasst werden, muss aber dafür umprogrammiert werden. Die Chart-Mechanismen sind mächtig. Vieles ist möglich.
So grundsätzlich Richtung Grafana oder Thingsboard? Sicher ist das alles irgendwie möglich, aber bis wohin ist das so vorgesehen und kann parametriert werden, und ab wo muss man komplett customizen?
Der Vorteil der UI ist, dass ich nur eine UI für alle Edges brauche. Die UI adaptiert sich selbst an unterschiedlichste Edge-Konfigurationen.
Für einen Nutzer gibt es nichts zu customizen. Konfiguration a la Grafana ist nicht möglich.
Bin unterwegs und der Akku geht zu Neige. Ich hoffe ich konnte dir einen etwas besseren Eindruck von OpenEMS vermitteln.
VG Christian