Fehlende Channel in Influx DB

Hallo zusammen,

Ich habe ein funktionierendes Openems (Backend + Edge ) System mit mehreren Zählern.
Es gibt keinen Netzanschlusszähler daher ist das Setup:

  • Jeder Zähler ist als CONSUMPTION_METERED eingestellt
  • Es gibt einen “Virtual Meter Add”, der alle anderen Zähler als Grid Zähler zusammenfasst.

Nun füge ich im Moment InfluxDB für die Historischen Daten hinzu.
Der Einfachheit halber nutze ich im Moment die gehostete Version (also V2).
Mein Problem ist, dass sämtliche Zählerwerte nicht an InfluxDB übertragen werden (was sie aber sollten, weil die UI ja auch die einzelnen Channels abfragt).
Ich sehe keine Fehlermeldungen oder Ähnliches im OpenEMS Backend Log.

Ich benutze Telegraf lokal, um die (etwas vielen) Felder zu begrenzen, da die gehostete Version nur 200 Spalten unterstützt. Im Moment schließe ich aus:

  fieldexclude = ["_appManager*", "_cycle*", "_meta*", "_host*", "edgewebsocket*", "uiwebsocket*", "_*predictorManager*", "scheduler0"]

Ich wäre über Tipps dankbar, wie ich auch die Zählerwerte reinbekomme oder Ansätze zum debugging.
Nach einer Historien Abfrage bekomme ich den Fehler:

May 29 11:48:13 ems java[23558]: 2024-05-29T11:48:13,608 [socket-7] WARN  [mon.websocket.OnRequestHandler] [Ui.Websocket] JSON-RPC Error "null" for Request {"method":"edgeRpc","params":{"edgeId":"edge0","payload":{"method":"queryHistoricTimeseriesData","params":{"timezone":"Europe/Berlin","fromDate":"2024-05-29","toDate":"2024-05-29","channels":["_sum...

In der InfluxDB kommen sämtliche “_sum/" sowie "meter0/” Werte zuverlässig an.

1 Like

Hallo @2Stuffy,

ich habe leider keine direkte Lösung parat. Der Fehler wird hier geloggt: openems/io.openems.common/src/io/openems/common/websocket/OnRequestHandler.java at develop · OpenEMS/openems · GitHub

Kannst du an der Stelle einen Stacktrace ausgeben mit t.printStackTrace()?

1 Like

Ich kümmere mich um den StackTrace.
Ich gehe aber stark davon aus, dass der Fehler daher kommt, dass channels abgefragt werden die nicht in der InfluxDB gespeichert werden.
Beispiel:
Der virtuelle Zähler (meter0) setzt sich aus den Zählern “tiefgarage” und “büro” zusammen. Die UI sucht nach den Werten für alle 3 Channels. Wenn ich aber manuell schaue, was in der InfluxDB landet, sind dort nur die Werte für den virtuellen “meter0”.

Update: Ich habe meine eigene InfluxDB 1.8 aufgesetzt um den diversen Problemen mit zu vielen Spalten zu umgehen.
Soweit läuft auch alles (inklusive Historie).

Mein vorheriger Fehler war vermutlich, dass ich die Edge Instanz nicht mit der InfluxDB verbunden habe (Ich dachte, alles läuft übers Backend).
Wenn die Edge Instanz mit InfluxDB verbunden ist, werden die Channels der Stromzähler gespeichert (sonst nur _sum). Interessanterweise funktioniert die Aufteilung in der Historie dann auch nur in einer lokalen (mit der Edge Instanz verbundenen) UI. Siehe Fotos.
Ist das so gewollt? :smiley:

Viele Grüße


Hallo @2Stuffy,

Im Prinzip ist es nicht notwendig, dass OpenEMS Edge direkt in die InfluxDB schreibt - das geht auch über OpenEMS Backend. Übers Backend werden aber standardmäßig weniger Daten gesendet, um das Backend bei vielen Tausend verbundenen Edges nicht unnötig zu belasten. Siehe dafür z. B. Controller.Api.Backend.

Dieses Verhalten wird im Wesentlichen über die Konfiguration persistencePriority im Controller gesteuert. Setze diese niedriger, damit mehr Daten geschickt werden.

Gruß,
Stefan

1 Like

Hallo @stefan.feilmeier,

Ich bin mittlerweile dazu gekommen, tiefer in das Problem einzutauchen.
Als Zwischenlösung hat es über die Influx Verbindung per Edge gepasst, aber dass man die Daten nicht detailliert über die UI im Backend bekommt ist auf Dauer ein Problem.

Ich habe die persistencePriority im Controller.Api.Backend testweise auf VERY_LOW gesetzt, die InfluxDB Verbindung in der Edge Instanz gelöscht und alles neugestartet. Seitdem werden die Zählerwerte nicht mehr seperat in Datenbank gespeichert. Interessanterweise sagen die Logs des SendChannelValuesWorker, dass eigentlich alle Daten an das Backend gesendet werden:

[Worker-0] INFO [ackend.SendChannelValuesWorker] [ctrlBackend0] Sending [129 values]: {ac/VoltageL1=235064, ac/VoltageL2=234932, tiefgarage/VoltageL2=234998, tiefgarage/VoltageL3=236383, tiefgarage/VoltageL1=235178, pvInverter0/S103TmpTrns=44.0, ac/VoltageL3=236464, tiefgarage/ReactivePower=-19865, pvInverter0/S103Dcw=10905.0, _sum/ProductionActiveEnergy=23313139, neubau/ReactivePower=-3562, buero/ActiveProductionEnergy=161975678, ac/ActivePower=52, _sum/ConsumptionActiveEnergy=94570368 …

Ich frage mich, wo genau die Werte verloren gehen, in den Backend Einstellungen habe ich nichts analoges zur persistencePriority gefunden.

In dem Bild sieht man noch, wie alle _sum Werte weiterhin ganz normal gespeichert werden, aber die Zählerdaten ab der Änderung nicht mehr ankommen.

Ich bin über jeden Tipp dankbar!

Viele Grüße

Hallo zusammen,

wir haben derzeit ein sehr ähnliches Problem mit zwei Edge-Instanzen, die ihre Daten an ein zentrales Backend übertragen sollen.

In der InfluxDB, die die Daten lokal vom Edge entgegen nimmt, sind die Informationen aller SmartMeter ersichtlich. In die InfluxDB des Backend werden nur die Meta- und Summen-Werte übertragen, obwohl die Persistence (alle drei Optionen) auf VERY_LOW gesetzt ist und auch das Log vermeldet, dass alle Channels übertragen werden (~1200).

@2Stuffy Ergab sich hierzu in der Zwischenzeit noch etwas?

Viele Grüße!

1 Like

Hey @schiegg :slight_smile:

Es wäre schön zu wissen, welche Firma bei euch dahinter steckt und ob Ihr eventuell der Association beitreten wollt.

Grüße

welche Firma bei euch dahinter steckt

Als Partner im Projekt Open Mobility Electric Infrastructure (OMEI) versuchen wir an der Universität Passau eine Datengrundlage aus Versuchsanlagen u.a. zu Schnellladen, Pufferbatterien und bidirektionalem Laden zu generieren und dabei auch künstliche Intelligenz als Controller zu integrieren. Das Backend soll die Daten der Edges dazu zentral speichern und eine API für die anderen Projektpartner bereitstellen.

ob Ihr eventuell der Association beitreten wollt

Der Association ist die Universität meines Wissens schon vor Längerem beigetreten: Universität Passau – OpenEMS :wink:

1 Like

@2Stuffy Intepretiere ich es richtig, dass sich in der Zwischenzeit leider nichts mehr dazu ergeben hat oder ging die Antwort nur unter? :wink:

Ich habe das Problem auch nicht anders gelöst bekommen.

Ich schicke die Daten einfach direkt von der Edge Instanz in eine zentrale InfluxDB.

Die Backend UI zeigt dann leider nur die aggregierten Werte an. Ich habe einfach ein eigenes Grafana Dashboard erstellt.

1 Like

@schiegg gute Nachrichten:
Ich bin auf das Docker Setup umgestiegen.

Mit der Version 2025.8.0 besteht dieses Problem bei mir nicht mehr (siehe Screenshot).

Mein aktuelles Setup:

  • Zwei Siemens PAC 2200 Zähler eingerichtet als “CONSUMPTION_METERED“
  • Ein Virtueller Zähler “VIRTUAL ADD“, der als Netzanschlusszähler herhält

Vielen lieben Dank für das Update @2Stuffy! Das klingt zu schön, um wahr zu sein :grinning_face_with_smiling_eyes:

Dockerisiert haben wir OpenEMS schon vor längerem, als es das out of the box noch nicht gab. Ich hoffe also, dass es nichts direkt damit zu tun hat.

Da ich die Odoo-Synchronisierung gerade so zum Laufen bekommen habe und uns die Version 2025.6.0 einen kleinen Bug in der Batteriekommunikation einbrachte (PR pending), zögere ich gerade ein bisschen. Muss beides (Edge+Backend) auf 2025.8.0 dafür sein? In den Release Notes sehe ich zwar ein paar Updates am Backend, gleichzeitig nichts direkt relevantes. Jemand eine Idee, welcher Code den entscheidenden Durchbruch brachte?

Ich kann leider auch nicht versprechen, dass die neue Version Abhilfe bringt.

Mir ist noch aufgefallen, dass auch in der UI Historie jetzt andere Optionen (“phasengenau“ etc) zur Verfügung stehen (siehe Screenshot). Da allerdings die Werte vorher gar nicht erst in der Datenbank gelandet sind, kann ich mir nicht vorstellen, dass ein Update der UI hilft.

Wenn gar nichts hilft, ist mit der InfluxDB auch sehr schnell ein Grafana Dashboard aufgesetzt für die Historie.

Viele Grüße