NEWS
Grafana + Influx 2 + Flux + Bar Gauge
-
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@spacerx
Das geht schon in die Richtung. Bisher ist mir nur gelungen, daß immer z.B. "Montag! in allen Feldern steht.
Die Unterschrift meiner Balken (einzelne Werte aus Sourceanalytix) ist aber kein Datum, sondern ein Objektname.Dieser Name ist aber so lang, daß er beim Auswählen rechts aus dem Bild hinausgeht und nicht sichtbar ist.
mit einem Zufallstreffer hat es 1x geklappt:
ein mögliche Lösung wäre, an deine Queries anzuhängen:
|> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
|> keep(columns: ["_value"]) |> rename(columns: {_value:"Dienstag"})
Damit entfernst du alle anderen Spalten und Grafana bekommt nur den "Kurznamen", also Spaltennamen. Das setzt natürlich voraus, dass die Spalte "_value" existiert und vorher nicht schon umbenannt wurde.
-
@marc-berg sagte in Grafana + Influx 2 + Flux + Bar Gauge:
|> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
Das sieht dann so aus:
Das ist sicher der elegantere Weg. Passt nur noch nicht ganz. -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
Das ist sicher der elegantere Weg. Passt nur noch nicht ganz.
Zeig mal deine Queries. Hast du vielleicht noch Overrides definiert?
-
@marc-berg
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__OpenDTU-Gesamptproduktion__yieldtotal.currentYear.delivered.currentWeek.01_Monday")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")
|> keep(columns: ["_value"])
|> rename(columns: {_value:"Montag"})keine overides
-
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false)
|> yield(name: "mean")das muss weg, wenn ich die Anforderung richtig verstehe:
|> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
und das hier muss in Grafana eingestellt sein:
-
@marc-berg So ist es OK!
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__OpenDTU-Gesamptproduktion__yieldtotal.currentYear.delivered.currentWeek.01_Monday")
|> filter(fn: (r) => r["_field"] == "value")
|> keep(columns: ["_value"])
|> rename(columns: {_value:"Montag"})
Und:
Das ist für mich absolutes Neuland. Da muß ich mich erst einarbeiten.
-
@Marc-Berg
Die Unterschrift wird geändert. Jedoch ändert sich auch der angezeigte Zahlenwert. 1,54 werden angezeigt, 1,97 müssten es sein.
-
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@Marc-Berg
Die Unterschrift wird geändert. Jedoch ändert sich auch der angezeigte Zahlenwert. 1,54 werden angezeigt, 1,97 müssten es sein.Verstehe gerade Null, was du meinst. Außerdem wurden doch oben in deinem Beispiel für Montag vorher und nach den Änderungen jeweils 2.59kWh angezeigt!?
-
@marc-berg Ja, es wird etwas angezeigt. Aber bei genauer Kontrolle, zum Beispiel am Sonntag (aktueller Tag), habe ich den Wert in den Objekten mit dem angezeigten Wert nach der Korrektur der Unterschrift verglichen. Die beiden Werte stimmen nicht überein. Ohne die Korrektur schon. In der Datenbank steht auch der richtige Wert. ( Bildschirmausdruck).
-
@laser
Wenn ich es richtig verstehe, soll doch der Wert, der in diesem Datenpunkt steht:1:1 angezeigt werden, oder? Das wäre dann der letzte Wert, der in die Datenbank geloggt wurde.
Vor diesem Hintergrund ergibt es für mich keinen Sinn, mit einem Mittelwert über die Funktion "aggregateWindow (mean)" zu arbeiten. Stattdessen wirst du mit |> last() den jüngsten Wert erhalten.Vielleicht zeigst du einfach mal den Inhalt des Datenpunkts und die letzten geloggten Werte in der Influxdb. Villeicht lässt es sich das Problem damit besser auflösen.
-
@marc-berg der Sonntag mit den Problemwerten ist ja nun vorbei. Hier der Wert des Objektes (nun "vergangene Woche")
angezeigt wurde das in meinem vorherigen Beitrag gezeigte.
Eine Befehlsrefernz , wo z.B. "mean" und "last" erklärt wird, suche ich noch. Das "mean" könnte der Fehler sein.
Diese Befehlsfolge wurde automatisch erstellt, ich habe da nichts dazu getan.
Aber das kommt ja in der abgewandelten Form in Grafana gar nicht mehr vor?from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday") |> filter(fn: (r) => r["_field"] == "value") |> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
Nur in der Datenbank selber:
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
-
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
Diese Befehlsfolge wurde automatisch erstellt, ich habe da nichts dazu getan.
Genau das ist das Problem. In der Gui der Influxdb wird standardmäßig die "aggregateWindow" Funktion ergänzt. Je nach ausgewählten Zeitraum werden dann z.B. Mittelwerte (mean) berechnet. Wenn du die Zeile entfernst und dafür
|> last()
einfügst, wird der letzte im "Range" Zeitraum selektierte Wert geliefert.
-
@marc-berg so? (scheint den richtigen Wert anzuzeigen)
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
|> keep(columns: ["_value"])
|> rename(columns: {_value:"Montag"}) -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
|> keep(columns: ["_value"])
|> rename(columns: {_value:"Montag"})Moin,
wie @Marc-Berg schon sagte, das
aggregateWindow
brauchst Du nicht, da Du ja nur den letzten Wert vom Tag brauchst.from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday") |> filter(fn: (r) => r["_field"] == "value") |> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"}) |> last ()
VG
Bernd -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
from(bucket: "iobroker")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: v.windowPeriod, fn: last, createEmpty: false)
|> keep(columns: ["_value"])
|> rename(columns: {_value:"Montag"})das geht auch, aber
from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.currentWeek.01_Monday") |> filter(fn: (r) => r["_field"] == "value") |> last() |> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
ist für dein Anwendungsfall die bessere Variante. "aggregateWindow" benutzt du vor allem, wenn du Zeiträume in Kurven darstellen willst, und beispielsweise den Maximal-/Mittel-/Mindest-Wert in einem 5m Minuten Intervall ermitteln möchtest.
In dem hier geplanten Szenario benötigst du ja GENAU EINEN Wert. Und das ist hier mit der "last()" Funktion der letzte/jüngste Wert im "Range".
-
@marc-berg , @dp20eic
Danke! So klappt das. Bin noch auf der Suche nach etwas, wo diese Dinge erklärt werden (Befehlsreferenz o.ä.) -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@marc-berg , @dp20eic
Danke! So klappt das. Bin noch auf der Suche nach etwas, wo diese Dinge erklärt werden (Befehlsreferenz o.ä.)https://docs.influxdata.com/influxdb/v2.7/query-data/get-started/query-influxdb/
?
Und das Youtube Video von @haus-automatisierung für den Einstieg.
-
@marc-berg Werde mich durch die docs.influxdata.com durchkämpfen. Bisher fehlt mir noch der Anfang. Wenn man z.B. nichts von der Existenz "mean" oder "last" weiß, wird es schwierig. Aber sicher nicht unmöglich...
-
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@marc-berg Werde mich durch die docs.influxdata.com durchkämpfen. Bisher fehlt mir noch der Anfang. Wenn man z.B. nichts von der Existenz "mean" oder "last" weiß, wird es schwierig. Aber sicher nicht unmöglich...
Moin,
Du hast in der
influxDB
Web-UI die Möglichkeit jede Funktion, die es gibt, mit einer Kurzbeschreibung anzuschauen.Einfach mal in das Feld z.B.
mean
oderlast
eingeben, dann mit der Maus auf den Befehl und Du bekommst eine Beschreibung und einen Link zur ausführlichen Beschreibung beiinfluxDB
.VG
Bernd -
@dp20eic Ich versuche mich daran...
z.B. das:from(bucket: "iobroker") |> range(start: -2d, stop: -2m) |> filter(fn: (r) => r._measurement == "sourceanalytix.0.alias__0__Panel power V-Ladegerät__PPV.currentYear.delivered.previousWeek.01_Monday") |> filter(fn: (r) => r["_field"] == "value") |> last() |> keep(columns: ["_value"]) |> rename(columns: {_value:"Montag"})
suche ich noch, warum die Unterschrift nicht erscheint (Montag)
Auch ohne "rename" steht da nichts...
Wenn ich noch eine Query / Säule daneben bringe, steht der Text da.