NEWS
Verständnisproblem zu benötigten Datenpunkt Grafana
-
@damrak2022
Hi als bspfrom(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "stromtotal") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, fn: sum,createEmpty: true)
bei query option
Relative time now/M
ist für Monat z.b ( jeder Tag )
-
@skarpain Ich danke Dir, das sollte mir weiterhelfen.
-
Tageswerte der letzten 7 Tage:
import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "ioBroker") |> range(start: -7d, stop: now() ) |> filter(fn: (r) => r["_measurement"] == "Vb_Kuehlschrank") |> filter(fn: (r) => r["from"] == "system.adapter.javascript.0") |> aggregateWindow(every: 1d, fn: last, timeSrc: "_start") |> difference()
Werte der letzten 4 Wochen:
import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "ioBroker") |> range(start: -1mo, stop: now()) |> filter(fn: (r) => r["_measurement"] == "Vb_Stromzaehler") |> filter(fn: (r) => r["from"] == "system.adapter.javascript.0") |> aggregateWindow(every: 1w, offset: -3d, fn: last) |> difference()
Noch Verbrauch über das Jahr mit Werten aus dem Downsampling und der aktuelle Monat aus dem aktuell geschriebenen Daten:
<A> import "date" import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "Stromverbrauch") |> range(start: -1y, stop: date.truncate(t: now(), unit: 1mo)) |> filter(fn: (r) => r["_measurement"] == "Stromzaehler") |> aggregateWindow(every: 1mo , fn: last, timeSrc: "_start" ,createEmpty: true ) |> difference() <B> import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "ioBroker") |> range(start: -1mo, stop: now()) |> filter(fn: (r) => r["_measurement"] == "Vb_Stromzaehler") |> filter(fn: (r) => r["from"] == "system.adapter.javascript.0") |> aggregateWindow(every: 1mo , fn: last, timeSrc: "_start") |> difference()
MfG Ralf
-
@spacerx Hier sind noch ein paar Fragen aufgetaucht. Zuerst ml mein Problem:
Wenn ich die query options leer lasse sind alle Geräte da, speziell "FeFoTV".
Sobald ich aber bei relative Time "now/d" eintrage, ist der Wert von FeFoTV verschwunden - siehe hier:
Das kann ich mir überhaupt nicht erklären. Habe das Panel auch schon mehrfach gelöscht und neu angelegt. Der Fehler bleibt. -
@damrak2022
servus mach doch mal add new panel
dannimport "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "FeFoTV_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1mo, fn: sum,createEmpty: false)
und bei relative Time "now/y"
-
@skarpain Dieses Problem hat sich irgendwie von alleine erledigt. Trotzdem möchte ich Dir hier gerne mal meine Panels posten, und würde mich freuen, wenn Du mal einen Blick darauf wirfst, da ich mir nicht ganz sicher bin, ob das alles korrekt ist.
Board für heute:
Board für diese Woche:
Board für diesen Monat
Ich logge den Gesamtverbrauch erst seit dem 20.02.2023. Aber warum sind die Werte bei "Stromverbrauch heute" und "Stromverbrauch diese Woche" identisch? Ich sehe den Fehler nicht.
-
@damrak2022
hi für woche habe ich so gemacht|> aggregateWindow(every: 7d, fn: sum,createEmpty: false)
bei Relative time
now/y
gibt viele varianten wie man es sich anzeigen lassen kann -
@skarpain Ja, das habe ich auch, aber nochmal die Frage: Warum sind meine Werte von "heute" und "dieser Woche" identisch. Das kann ja irgendwie nicht stimmen und die Screenshots habe ich Dir oben gepostet. Hast Du dazu eine Idee?
-
@damrak2022 in Grafana beginnt die Woche am Donnerstag. Das müsst ihr berücksichtigen. Wie in meinem Query zur Berechnung des Verbrauches über die Woche.
-
@spacerx In beiden Panels steht bei mir unter dataview nur das heutige Datum drin. Aber meine Codes, bzw. relative Time sind doch unterschiedlich. Deswegen kapiere ich das nicht. Das mit dem Offset habe ich gelesen, sollte aber zumindest für den "Stromverbrauch heute" irrelevant sein.
-
@spacerx geändert
-
@spacerx In beiden Panels steht bei mir unter tableview nur das heutige Datum drin. Aber meine Codes, bzw. relative Time sind doch unterschiedlich. Deswegen kapiere ich das nicht. Das mit dem Offset habe ich gelesen, sollte aber zumindest für den "Stromverbrauch heute" irrelevant sein.
-
@skarpain So, ich versuche das nochmal haarklein darzustellen.
Das ist das Board vom "Stromverbrauch heute"
In den query options ist nichts eingetragen
Der Code sieht so aus:import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Drucker_gesamt" or r["_measurement"] == "FeFoTV_gesamt" or r["_measurement"] == "Imac_gesamt" or r["_measurement"] == "Kühlschrank_gesamt" or r["_measurement"] == "Router_gesamt" or r["_measurement"] == "Ventilator_gesamt" or r["_measurement"] == "Smart_Kettle_Pro_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 24h, fn: sum,createEmpty: true)
Das ist das Board vom "Stromverbrauch diese Woche".
In den query options ist bei relative Time now/w eingetragen
Der Code sieht so aus:import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Drucker_gesamt" or r["_measurement"] == "FeFoTV_gesamt" or r["_measurement"] == "Imac_gesamt" or r["_measurement"] == "Kühlschrank_gesamt" or r["_measurement"] == "Router_gesamt" or r["_measurement"] == "Ventilator_gesamt" or r["_measurement"] == "Smart_Kettle_Pro_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, fn: sum,createEmpty: true)
Das ist das Board vom "Stromverbrauch dieser Monat".
In den query options ist bei relative Time now/M eingetragen
Der Code hier sieht so aus:import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Drucker_gesamt" or r["_measurement"] == "FeFoTV_gesamt" or r["_measurement"] == "Imac_gesamt" or r["_measurement"] == "Kühlschrank_gesamt" or r["_measurement"] == "Router_gesamt" or r["_measurement"] == "Ventilator_gesamt" or r["_measurement"] == "Smart_Kettle_Pro_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1mo, fn: sum,createEmpty: true)
Das ist die Ansicht mit den obergenannten Einstellungen:
Wen ich nun bei bei "Stromverbrauch heute" in den query options bei relative Time now/d eintrage verändert sich die Ansicht und es sieht so aus:
Die Table View bei "Stromverbrauch diese Woche ist korrekt.
Die Table view bei "Stromverbrauch dieser Monat ist falsch:
Hier muss ich, glaube ich noch den Offset eintragen, da Grafana ja immer ab Donnerstag rechnet: Gut das bekomme ich hin.
Aber warum kann ich bei "Stromverbrauch heute" bei relative Time nicht now/d eintragen?
-
@damrak2022 ist now/d nicht heute 0:00. Uhr?
Noch eine Frage. Warum macht ihr beim aggregierten immer ein fn:sum? Wenn ich von _start und _ stop die difference habe habe ich das was ich will oder doch nicht.? -
@spacerx Wenn ich das richtig verstanden habe müsste doch now/d heute ab 00:00 Uhr bis jetzt bedeuten.
Zu dem anderen kann ich Dir nur sagen das ich das aus den Videos von Eddy habe, da ich noch nicht so fit bin, schon mal garnicht bei Code. -
@damrak2022 lass das mit den Optionen mal weg und versuche meine Query mal. Ich kann dir im Moment nicht sehr behilflich sein komm nicht an meinen Rechner weil ich im Krankenhaus verweile.
-
@spacerx Okay, dann zuerst mal gute Besserung. Du meinst die query options weglassen
-
Kannst auch mal auf den Youtube Channel EddyD's SmartHome schauen, er hat gute Videos zu dem Thema.
-
@andre-r Danke, aufgrund dessen habe ich das alles gemacht. Aber wie gesagt, so ein paar Dinge irritieren mich, oder ich habe einen Fehler drin:
-
@spacerx Ich verstehe es einfach nicht und so langsam weiß ich auch nicht was ich noch versuchen kann.
So sieht die Anzeige für heute und diese Woche aus:
Das ist der Code für den Stromverbrauch heute:
import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Drucker_gesamt" or r["_measurement"] == "FeFoTV_gesamt" or r["_measurement"] == "Imac_gesamt" or r["_measurement"] == "Kühlschrank_gesamt" or r["_measurement"] == "Router_gesamt" or r["_measurement"] == "Ventilator_gesamt" or r["_measurement"] == "Smart_Kettle_Pro_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 24h, fn: sum,createEmpty: true)
Die query options sind leer
Das ist der Code für den "Stromverbrauch diese Woche":
import "timezone" // import wegen der Berechnung um 02:00:00 option location = timezone.location(name: "Europe/Berlin") from(bucket: "DBANDY1") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "Drucker_gesamt" or r["_measurement"] == "FeFoTV_gesamt" or r["_measurement"] == "Imac_gesamt" or r["_measurement"] == "Kühlschrank_gesamt" or r["_measurement"] == "Router_gesamt" or r["_measurement"] == "Ventilator_gesamt" or r["_measurement"] == "Smart_Kettle_Pro_gesamt") |> filter(fn: (r) => r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, offset: -3d, fn: sum,createEmpty: true)
In den query options steht now/w drin.
Ich verstehe nicht warum ich hier eine identische Anzeige bekomme?
Nehme ich bei Stromverbrauch heute das "difference()" raus bekomme ich diese Anzeige
Smart Ketle Pro über 700 kWh - ist ja irre