Edge-2-Edge Read-Only

Hi OpenEMS Community,

mein erster Post, ich hoffe, mir kann jemand bei einer Frage weiterhelfen.

Bin seit 2 Wochen stolzer Besitzer eines Fenecon Home und dadurch auf OpenEMS aufmerksam geworden. Würde mit einem OpenEMS gerne ein paar (oder alle?) Daten des FEMS abgreifen und bin als ersten Ansatz mal auf die Edge-2-Edge Komponente gestoßen. Da ich auch eine OpenWBPro und 2 kleine Balkonkraftwerke besitze, bin ich hauptsächlich an deren Integration mit dem FEMS interessiert und würde ggfs. dafür Komponenten entwickeln, wenn das nicht schon jemand gemacht hat. Ich weiß natürlich, dass FEMS ein kommerzielles Produkt ist und ich bei Problemen diesbezüglich auf Fenecon zugehen müsste, aber ich denke, die Frage bezieht sich aktuell eher auf OpenEMS.

Habe bisher OpenEMS Edge und UI anhand des Einsteiger Tutorials zum Laufen gebracht, allerdings gleich mit Docker Compose (lokal auf einem Rechner, kein PI). Bei mir hängt es gerade an der Kommunikation mit dem FEMS mittels Edge-2-Edge. Dazu muss ich sagen, dass die Anleitung klar den Hinweis gibt, dass dafür die “FEMS App Modbus/TCP Schreibzugriff” notwendig ist, welche ich noch nicht besitze, da ich vor dem Invest erstmal schauen wollte, ob die Basis überhaupt tut.

https://github.com/OpenEMS/openems/tree/develop/io.openems.edge.edge2edge

Grund dafür ist, dass in der Konfiguration der Edge-2-Edge Komponente im Apache Felix beim Remote Access-Mode auch READ_ONLY erlaubt ist, was das FEMS ja mitbringt. Reicht das beim FEMS für das Auslesen der Daten trotzdem nicht aus?

Auffällig im Log ist für mich erstmal, dass die FC3ReadHoldingRegisters sehr schnell nur noch Werte der Form ffff ffff ffff … enthalten.

openems-edge | 2023-02-19T20:41:03,338 [9bca10d)] INFO [onent.AbstractOpenemsComponent] [modbus1] Activate Bridge.Modbus.Tcp
openems-edge | 2023-02-19T20:41:03,340 [9bca10d)] INFO [onent.AbstractOpenemsComponent] [ess0] Activate Edge2Edge.Ess
openems-edge | 2023-02-19T20:41:03,974 [_cycle ] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Grid:1407 W Consumption:1407 W] ess0[SoC:UNDEFINED|L:UNDEFINED|Allowed:UNDEFINED;UNDEFINED|Undefined] meter0[1407 W]
openems-edge | 2023-02-19T20:41:04,650 [modbus1 ] INFO [dbus.api.task.AbstractReadTask] [modbus1] FC3ReadHoldingRegisters [1:0/0x0]: 6201
openems-edge | 2023-02-19T20:41:04,970 [_cycle ] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Grid:1432 W Consumption:1432 W] ess0[SoC:UNDEFINED|L:UNDEFINED|Allowed:UNDEFINED;UNDEFINED|Undefined] meter0[1432 W]
openems-edge | 2023-02-19T20:41:05,635 [modbus1 ] INFO [dbus.api.task.AbstractReadTask] [modbus1] FC3ReadHoldingRegisters [1:1/0x1]: 00c7
openems-edge | 2023-02-19T20:41:05,971 [_cycle ] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Grid:1448 W Consumption:1448 W] ess0[SoC:UNDEFINED|L:UNDEFINED|Allowed:UNDEFINED;UNDEFINED|Undefined] meter0[1448 W]
openems-edge | 2023-02-19T20:41:06,629 [modbus1 ] INFO [dbus.api.task.AbstractReadTask] [modbus1] FC3ReadHoldingRegisters [1:200/0xc8]: 5f73 756d 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
openems-edge | 2023-02-19T20:41:06,973 [_cycle ] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Grid:1453 W Consumption:1453 W] ess0[SoC:UNDEFINED|L:UNDEFINED|Allowed:UNDEFINED;UNDEFINED|Undefined] meter0[1453 W]
openems-edge | 2023-02-19T20:41:07,629 [modbus1 ] INFO [dbus.api.task.AbstractReadTask] [modbus1] FC3ReadHoldingRegisters [1:216/0xd8]: 012c
openems-edge | 2023-02-19T20:41:07,976 [_cycle ] INFO [ntroller.debuglog.DebugLogImpl] [ctrlDebugLog0] _sum[State:Ok Grid:1448 W Consumption:1448 W] ess0[SoC:UNDEFINED|L:UNDEFINED|Allowed:UNDEFINED;UNDEFINED|Undefined] meter0[1448 W]
openems-edge | 2023-02-19T20:41:08,630 [modbus1 ] INFO [dbus.api.task.AbstractReadTask] [modbus1] FC3ReadHoldingRegisters [1:500/0x1f4]: ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff ffff

Hoffe Ihr habt einen Tipp, was ich falsch mache.

Gruß,
Jakob

Hallo Jakob,

ich bin mir nicht sicher, ob Du mit einer separaten openEMS-Instanz zum Ziel gelangst.
Die API zum Abfragen der Werte kennst Du? Das wäre mein Ansatz zur Integration von openWB. Ein entsprechendes Modul für openWB gibt es jedenfalls: openWB/fems.py at master · snaptec/openWB · GitHub

Vorschlag: Über die Einbindung Deiner Balkonkraftwerke könnte man ja in einem anderen Forum diskutieren. Hier geht es ja hauptsächlich um openEMS-Themen und nicht um Photovoltaik. :wink:

Hi Jörg,

danke für die Rückmeldung. Die OpenWB hat schon eine Integration vieler Herstellerkomponenten, darunter auch den Fenecon Home. Das Setup ist auch kinderleicht und sämtliche Daten des FEMS für eine ordentliche Regelung der OpenWB kommen dort schon von Haus an.

Mir geht es aber um die andere Richtung. Das FEMS / OpenEMS hat keine Komponente für diesen Typ Ladesäule und kennt die Ladesäule somit nicht. Würde gerne wenigstens die Verbräuche der Ladesäule separat angezeigt bekommen, wie es meinem Verständnis der Fall ist bei Ladesäulen, die es als OpenEMS-Komponente schon gibt z.B. Keba.

Sonst laufen alle Verbräuche unter “Sonstige” auf. Die OpenWB selbst kann natürlich alles unterschiedlich darstellen (Haus, EV-Laden, etc.)

Die Einbindung der Balkonkraftwerke sehe ich eher über bestehende Meter, für die es schon OpenEMS Komponenten gibt. Neben dem Fenecon Home hab ich bspw. auch einen Kostal WR, dessen erzeugte PV Leistung über einen SOCOMEC Zähler im FEMS integriert ist. Nichts anderes soll bei den anderen Anlagen passieren. Das ist aktuell aber erstmal zweitrangig.

Es geht mir aktuell darum herauszufinden, ob es sich lohnt, überhaupt in dieser Richtung weiter zu forschen. Am FEMS kann ich nichts machen, daher die Überlegung, erstmal ein OpenEMS daneben zustellen, alle Daten vom FEMS dort abzugreifen (über Edge-2-Edge) und dort dann evlt. fehlende Komponenten zu entwickeln.

Aber vermutlich hab ich das Konzept noch nicht richtig verstanden :wink:

Gruß,
Jakob

Ich bin noch nicht ganz tief in Edge-2-edge bei openems eingestiegen.
Aber, falls es edge-2-edge geht und du dein FEMS in OpenEMS komplett siehst, sollte das möglich sein.
Wenn ich das richtig sehe, dann müsstest du die OpenWB (die spricht modbus, richtig?) als neue Komponente in OpenEMS anlegen/programmieren.
Dann erscheint sie auch in dem Widget und wenn du alles richtig gemacht hast, kannst du sie darüber auch steuern.
Alternativ kannst du natürlich auch Fenecon in openWB anzeigen. Je nachdem, wer dein “Haupt”-Akteur ist und welche Funktionen du nutzen möchtest, würde ich mich für den einen oder den anderen Weg entscheiden.
Schönen Gruß

Paul