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