NEWS
Grafana + Influx 2 + Flux + Bar Gauge
-
@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. -
Moin,
ich kenne Dein Bucket nicht, aber kannst Du einmal bitte Folgendes posten?
Natürlich mit Deinen Daten
VG
Bernd -
@dp20eic Diese Eingaben habe ich ja manuell gemacht. Die 2. Säule aus der Datenbank gewonnen. Damit habe ich die Unterschrift. 2. Säule: (mean gegen last getauscht)
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")
Edit: muß jetzt erst mal weg! -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@dp20eic Diese Eingaben habe ich ja manuell gemacht. Die 2. Säule aus der Datenbank gewonnen. Damit habe ich die Unterschrift. 2. Säule: (mean gegen last getauscht)
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")
Moin,
sorry, kann gerade nicht folgen, ich wollte eigentlich im letzten Post von mir nur mal die Ausgangsdaten sehen, denn ich denke, Du versuchst die falsche Spalte umzubenennen.
Wenn Du hier etwas anderes meinst, dann verstehe ich es nicht
VG
Bernd -
@dp20eic ich hatte zuerst nur einen Bar angelegt, zum Testen. Den, wo jetzt "Montag" druntersteht.
Da stand nichts. Erst, als ich den zweiten Bar angelegt hatte, original, wie vom Browser des Influx angelegt, erschien ein Text drunter. Das mit dem Wert hat sich jetzt geklärt. Obwohl sich der Wert Stunden später immer noch auf dem alten Wert befindet. Müßte so wie auf dem rechten Balken sein. Zu dem Zeitpunkt der Erstellung hat es gepasst. -
Moin,
ich versuche jetzt mal mit meinen Worten zu beschreiben.
Aus meiner Sicht ist da ein Fehler, denn ich denke, dass Du ja das Anpassen möchtest
Das solltest Du aber nicht mit rename in der Abfrage machen, sondern in Grafana unter Mapping, in meinem Beispiel würde 0 - 6 stehen, ich ändere das so, dass 0 = Sonntag ist
Deswegen solltest Du Dir ja die Ausgangsdaten in Deinem Bucket anschauen
Original:
Und das bewirkt das Rename
Wenn ich etwas versuche, umzubenennen, dass nicht da ist, passiert da nichts
Mit dem Rename kannst Du nur die Überschriften der Spalten verändern, aber nicht den Inhalt.
Wenn Du z.B.
sonoff.0.DVES_8AA766.SENSOR.SML.total_kwh
in
teletabby
Das kannst Du auf zwei Arten machen, entweder alias beim Schreiben in die Datenbank
Oder
Dann kannst Du das neue Feld
Weekday
als Balken Unterschrift nutzen.So ich hoffe, ich habe jetzt alles richtig verstanden, ansonsten schon mal sorry.
VG
Bernd -
@dp20eic Die Werte (value ) der Datenbankeinträge sollen natürlich erhalten bleiben. Nur die riesig langen Untertitel sollen durch etwas ersetzt werden Mo, di, Mi....
Wenn ich jetzt das mache, passiert folgendes:
Ich will nach dem "value" in dem Datensatz filtern. Das sollte doch der Zahlenwert sein? Wieso wird denn da ein Feldtext draus? -
Moin,
Diese beiden willst Du ändern!
Das musst Du mit dem Mapping in Grafana machen, nicht durch die Flux abfrage. Zeig mal, ob Du da weiter rechts noch etwas eingestellt ist und wenn nicht nötig, lösche mal die zweite Abfrage.
Ich suche gerade mal ein Beispiel wo man das sieht, was ich meine.
VG
Bernd -
@dp20eic
(ohne "rename" , irgend ein alter Wert wird gezeigt, nicht der "last"
EDIT: jetzt wird plötzlich der "last" Wert angezeigt. Auch mit "rename". Aber keine Unterschrift.
-
Moin,
wieso bei Dir die Werte nicht passen kann ich nicht sagen. Ich kloppe mir die Abfrage immer erst in der
influxDB
WEB-UI zusammen und kopiere die dann nach Grafana.also bei mir, ohne
last
Mit
last()
Hier ein Beispiel wie ich einen langen Feldnamen umbenannt habe
-
@dp20eic
Ich danke Dir erst mal. So muß es bei mir auch gehen. Das muß ich auch erst mal sacken lassen. Manchmal löst sich der Knoten über Nacht!
Mit "overide" funktioniert es auch bei mir. Sollte halt eine weniger umfangreiche Lösung sein. Dafür muß es doch Befehle geben. -
@laser sagte in Grafana + Influx 2 + Flux + Bar Gauge:
@dp20eic
Ich danke Dir erst mal. So muß es bei mir auch gehen. Das muß ich auch erst mal sacken lassen. Manchmal löst sich der Knoten über Nacht!Ja, manchmal muss man Abstand haben, um eine neue Sicht zu bekommen
Mit "overide" funktioniert es auch bei mir. Sollte halt eine weniger umfangreiche Lösung sein. Dafür muß es doch Befehle geben.
Ja, dann musst Du aber wie oben gezeigt ein neues Feld einführen, da wo ich mit
set
in der Abfrage gearbeitet habe.|> set(key: "Weekday", value: "Montag")
Da Du aber für jeden Tag ein eigenes
_measurment
hast, muss Du das dann auch für alle Abfragen machen und an die Tage anpassen.VG
Bernd