NEWS
Grafana Werte addieren pro Tag
-
Ich logge die Nutzungsdauer meiner gesamten Geräte, z.B. die beiden Lightstripes in der Küche.
Nun habe ich das mal getestet und so wie es im Moment ist stellt er mir die Wert einzeln dar.
Meine 2 querys sehen so aus:
from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Laufzeit_LS_Kuehlschrank") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Laufzeit_LS_Wand") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: v.windowPeriod, fn: mean, createEmpty: false) |> yield(name: "mean")
Er soll mir also die Werte ab 00:01 Uhr bis 23:59:59 addieren und in dem Fall als 2 Balken darstellen. Einmal Lighstripes Wand und einmal Lightstripes Kühlschrank.
Ich hoffe, ich habe mich verständlich ausgedrückt. Kann mir jemand sagen, wie ich das hinbekomme?
-
Ich bastel auch gerade mit Grafana rum. Ich kann dir diesen Code zum anpassen geben:
import "timezone"
option location = timezone.location(name: "Europe/Berlin")from(bucket: "Datenbank")
|> range(start: -10d)
|> filter(fn: (r) => r["_measurement"] == "Datenpunkt")
|> filter(fn: (r) => r["_field"] == "value")
|> difference ()
|> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")bei Range Start die Tage / Stunden usw. eingeben
bei every: deine Auswertezeit eingeben (die Summe des Zeitraumes wird angezeigt)
Ich habe ein Balkendiagramm mit 10 Tagen a 24h,
Beim aktuellen Tag wird immer das angezeigt, was bisher aufgelaufen istVielleicht hilft es. Ich habe meine Sachen auch nur von diversen Youtube Videos...
Grüße Wiesel
-
@wiesel-1 sagte in Grafana Werte addieren pro Tag:
import "timezone"
option location = timezone.location(name: "Europe/Berlin")Ja, danke der hilft mir weiter. Ich frage mich nur warum ich hier auf einmal Minus Werte angezeigt bekomme:
-
@damrak2022 sagte in Grafana Werte addieren pro Tag:
Ja, danke der hilft mir weiter. Ich frage mich nur warum ich hier auf einmal Minus Werte angezeigt bekomme:
Nutzungsdauern lassen sich ja auf verschiedene Weise loggen. Ohne die Quelldaten zu kennen, lässt sich kaum ein zielführender Tipp geben. Ich gehe aber davon aus, dass "difference()" hier überhaupt keinen Sinn ergibt. Was soll damit erreicht werden?
-
@marc-berg Ja das kann sein. Mir liegen die Daten als Minuten vor. Diese sollen in Grafana pro Tag addiert werden, sodass ich mir einen Rückblick der letzten 10 Tage anschauen kann.
-
@damrak2022 sagte in Grafana Werte addieren pro Tag:
@marc-berg Ja das kann sein. Mir liegen die Daten als Minuten vor. Diese sollen in Grafana pro Tag addiert werden, sodass ich mir einen Rückblick der letzten 10 Tage anschauen kann.
Ja, dann muss das difference() raus. Dann wird allerdings 10 Tage ab JETZT zurück gerechnet und du erhältst keine "tagesscharfe" Antwort.
-
@marc-berg okay, lässt sich das realisieren das ich in der x Achse die letzten 7 Tage sehe und über jedem
Tag der Balken der Tagesnutzung. Dass müsste doch eigentlich gehen? -
-
@meister-mopper Ja, das gefällt mir gut
-
@marc-berg Ich habe das für mich jetzt erstmal so umgesetzt. Bei unit ist "Minute eingetragen.
Nun suche ich nach einer Möglichkeit die 2.72 hour vernünftig darzustellen.
Einmal gibt es nun keine 2 Stunden 72 Minuten und zum anderen würde ich das "hour" gerne als "Std." anzeigen lassen.import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Laufzeit_LS_Wand") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")
Wie könnte ich das umsetzen?
-
@damrak2022 sagte in Grafana Werte addieren pro Tag:
Wie könnte ich das umsetzen?
Man müsste die Stunden, die jetzt Dezimal dargestellt werden, in Stunden+Minuten umrechnen und eine "custom Unit" in Stunden angeben. Das geht leider nicht per Menü, habe ich jetzt aber nicht parat. Ich persönlich würde die Zeit einfach in Minuten anzeigen und fertig. Nicht ganz so schön, aber effektiv.
-
@marc-berg Ich glaube das mit den Stunden habe ich hinbekommen, indem ich die Unit auf duration umgestellt habe.
Trotzdem versteh ich her einiges nicht. Im Datenpunkt vom Tv sieht das momentan so aus:
Bei Grafana allerdings so:
Die Werte werden in Node Red schon in eine Zahl umgerechnet:
payload/60000
Die Aktualisierung ist auf 1 Minute gestellt bei Grafana.
Mein TV Gerät war heute Morgen mindestens 2 Stunden an.
-
@marc-berg Ich verstehe einfach nicht was Grafana hier rechnet/macht
Es sind 6 Geräte in jeweils einem Query angelegt. Mir werden aber nur 5 Geräte angezeigt.
Bei Standard units ist "minutes" eingetragen.
Mein iMac war heute ganz sicher keine 22 Stunden an. (Das könnte daran liegen, das der Adapter heute gehakt hat und auf "true" geblieben ist, obwohl der iMac aus war).
Woran liegt das. Ich verzweifle langsam
-
@damrak2022 sagte in Grafana Werte addieren pro Tag:
Mein iMac war heute ganz sicher keine 22 Stunden an. (Das könnte daran liegen, das der Adapter heute gehakt hat und auf "true" geblieben ist, obwohl der iMac aus war).
Woran liegt das. Ich verzweifle langsamAber 1300 Minuten sind doch 22 Stunden, was sollte Grafana da anderes anzeigen?
-
@marc-berg Ja, das hat sich zum Glück geklärt.
-
@damrak2022
Wenn Du auf Table View gehst
siehsts Du die Quelldaten. So könnte man herausfinden, ob die Query oder die Darstellung einen Wert unterdrückt.
-
@marc-berg Ja, da habe ich schon geschaut, das sieht alles gut aus. Ich frage mich nur noch warum hier einmal der Balken fast ausgefüllt ist und einmal nicht, obwohl die Werte identisch sind:
Bei overrides habe ich auch nur den Namen angepasst. -
@damrak2022
Puh, schwer zu sagen, das sieht für mich so aus, als ob versehentlich der "Max" Parameter gesetzt ist.
-
@marc-berg Na, das werde ich auch noch rausfinden - Danke erstmal
-
@marc-berg So, jetzt habe ich es hinbekommen und es gibt nur noch eine einzige Frage an der ich mir ie Zähne ausbeiße:
Gibt es eine Möglichkeit, eventuell über den Code im Query die Anzeige der Stunden korrekt darzustellen?Weil 2,92 Std sind ja eigentlich 2 Std. 55 Minuten
Weißt Du wie man das macht?
Der Code sieht bisher so aus:
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Laufzeit_Imac") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 24h, fn: sum, timeSrc: "_start")