NEWS
Grafana mit influxdb2, Messungen addieren
-
Hallo Zusammen,
ich habe eine frisch installierte InfluxDB2 und möchte Daten in Grafana darstellen.
Konkret möchte ich die Leistung meiner 2 PV-Strings addieren. Bisher habe ich folgende Abfrage:from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "modbus.0.inputRegisters.3.30773_DC_Leistung_1" or r["_measurement"] == "modbus.0.inputRegisters.3.30961_DC_Leistung_2") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")Damit klappt auch die Darstellung der jeweiligen Strings. Aber ich möchte diese jetzt als Summenwerte darstellen.
Versucht habe ich mit group() und sum(). Aber ohne Ergebnis.Da bräuchte ich mal einen Tipp, wie ich das lösen könnte.
-
Hallo Zusammen,
ich habe eine frisch installierte InfluxDB2 und möchte Daten in Grafana darstellen.
Konkret möchte ich die Leistung meiner 2 PV-Strings addieren. Bisher habe ich folgende Abfrage:from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "modbus.0.inputRegisters.3.30773_DC_Leistung_1" or r["_measurement"] == "modbus.0.inputRegisters.3.30961_DC_Leistung_2") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")Damit klappt auch die Darstellung der jeweiligen Strings. Aber ich möchte diese jetzt als Summenwerte darstellen.
Versucht habe ich mit group() und sum(). Aber ohne Ergebnis.Da bräuchte ich mal einen Tipp, wie ich das lösen könnte.
@darkness_08 sagte in Grafana mit influxdb2, Messungen addieren:
Konkret möchte ich die Leistung meiner 2 PV-Strings addieren. Bisher habe ich folgende Abfrage:
Auf diese Weise bekommst du drei Spalten: Ausgangswert1, Ausgangswert2 und "Summe"
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "modbus.0.inputRegisters.3.30773_DC_Leistung_1" or r["_measurement"] == "modbus.0.inputRegisters.3.30961_DC_Leistung_2") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> pivot(rowKey: ["_time"], columnKey: ["_measurement"], valueColumn: "_value") |> map(fn: (r) => ({ r with Summe: r["modbus.0.inputRegisters.3.30773_DC_Leistung_1"] + r["modbus.0.inputRegisters.3.30961_DC_Leistung_2"] }))Danach könntest Du die "langen" Spaltennamen z.B. noch umbenennen mit
|> rename(columns: {"modbus.0.inputRegisters.3.30773_DC_Leistung_1": "Leistung1", "modbus.0.inputRegisters.3.30961_DC_Leistung_2": "Leistung2"}) -
@darkness_08 sagte in Grafana mit influxdb2, Messungen addieren:
Konkret möchte ich die Leistung meiner 2 PV-Strings addieren. Bisher habe ich folgende Abfrage:
Auf diese Weise bekommst du drei Spalten: Ausgangswert1, Ausgangswert2 und "Summe"
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "modbus.0.inputRegisters.3.30773_DC_Leistung_1" or r["_measurement"] == "modbus.0.inputRegisters.3.30961_DC_Leistung_2") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> pivot(rowKey: ["_time"], columnKey: ["_measurement"], valueColumn: "_value") |> map(fn: (r) => ({ r with Summe: r["modbus.0.inputRegisters.3.30773_DC_Leistung_1"] + r["modbus.0.inputRegisters.3.30961_DC_Leistung_2"] }))Danach könntest Du die "langen" Spaltennamen z.B. noch umbenennen mit
|> rename(columns: {"modbus.0.inputRegisters.3.30773_DC_Leistung_1": "Leistung1", "modbus.0.inputRegisters.3.30961_DC_Leistung_2": "Leistung2"})@marc-berg
Vielen Dank.
Das hilft mir weiter. Jetzt muss ich mal versuchen zu verstehen, was du da gemacht hast :) -
@marc-berg
Vielen Dank.
Das hilft mir weiter. Jetzt muss ich mal versuchen zu verstehen, was du da gemacht hast :)@darkness_08 sagte in Grafana mit influxdb2, Messungen addieren:
Jetzt muss ich mal versuchen zu verstehen, was du da gemacht hast
Wenn du mehrere Measurements mit "or" verknüpfst, stehen die Ergebnisse zunächst untereinander, also in unterschiedlichen Zeilen. Damit kann man nicht rechnen:
Zeit Meas. Value 03:00:00Z Wert1 11.0 03:00:00Z Wert2 21.0 03:01:00Z Wert1 12.0 03:01:00Z Wert2 22.0Durch die "pivot" Funktion werden die Measurement-Namen als neue Spaltennamen gesetzt und gleiche Zeiten in einer Zeile zusammenfasst:
Zeit Wert1 Wert2 03:00:00Z 11.0 21.0 03:01:00Z 12.0 22.0Mit der Map-Funktion wird nun gerechnet. Durch die Angabe von "r with Summe" werden alle bisherigen Spalten beibehalten und um die Spalte "Summe" ergänzt sowie das Ergebnis der Rechnung eingesetzt:
Zeit Wert1 Wert2 Summe 03:00:00Z 11.0 21.0 32.0 03:01:00Z 12.0 22.0 34.0 -
@darkness_08 sagte in Grafana mit influxdb2, Messungen addieren:
Jetzt muss ich mal versuchen zu verstehen, was du da gemacht hast
Wenn du mehrere Measurements mit "or" verknüpfst, stehen die Ergebnisse zunächst untereinander, also in unterschiedlichen Zeilen. Damit kann man nicht rechnen:
Zeit Meas. Value 03:00:00Z Wert1 11.0 03:00:00Z Wert2 21.0 03:01:00Z Wert1 12.0 03:01:00Z Wert2 22.0Durch die "pivot" Funktion werden die Measurement-Namen als neue Spaltennamen gesetzt und gleiche Zeiten in einer Zeile zusammenfasst:
Zeit Wert1 Wert2 03:00:00Z 11.0 21.0 03:01:00Z 12.0 22.0Mit der Map-Funktion wird nun gerechnet. Durch die Angabe von "r with Summe" werden alle bisherigen Spalten beibehalten und um die Spalte "Summe" ergänzt sowie das Ergebnis der Rechnung eingesetzt:
Zeit Wert1 Wert2 Summe 03:00:00Z 11.0 21.0 32.0 03:01:00Z 12.0 22.0 34.0@marc-berg
Ey, nichts alles verraten
Danke für die Erläuterungen. Ich muss zugeben, das die Flux Documentation etwas zäh ist. Aber auch die Videos von @haus-automatisierung haben mir auch geholfen. Es lichtet sich aber braucht sicherlich noch etwas Zeit.Mein Problem war unter anderm auch, das die Werte mit nterschiedlichen Zeitstempeln gespeichert wurden. Aber jetzt pass es soweit und die ersten Daten werden in Grafana dargestellt.
Vielen Dank nochmals für die Unterstützung
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden