NEWS
Zeitskala anpassen
-
Ein Anfänger benötigt Hilfe.
Ich habe mithilfe von YouTube folgendes Diagramm gebastelt:
Ich möchte in der unteren Kurvendarstellung die heutigen Daten von 0 Uhr - 24 Uhr anzeigen lassen. Bzw. noch lieber nur von 7 bis 21 Uhr.
Der aktuelle Flux Ausdruck dafür lautet:
from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 2m, fn: mean, timeSrc:"_start") |> yield(name: "last")Vermutlich muss ich bei "range" was ändern, nur was?
Kann ich dann mit Steuertasten jeweils einen Tag zurückspringen? -
Ein Anfänger benötigt Hilfe.
Ich habe mithilfe von YouTube folgendes Diagramm gebastelt:
Ich möchte in der unteren Kurvendarstellung die heutigen Daten von 0 Uhr - 24 Uhr anzeigen lassen. Bzw. noch lieber nur von 7 bis 21 Uhr.
Der aktuelle Flux Ausdruck dafür lautet:
from(bucket: "iobroker") |> range(start: -24h) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power") |> filter(fn: (r) => r["_field"] == "value") |> aggregateWindow(every: 2m, fn: mean, timeSrc:"_start") |> yield(name: "last")Vermutlich muss ich bei "range" was ändern, nur was?
Kann ich dann mit Steuertasten jeweils einen Tag zurückspringen?Vermutlich muss ich bei "range" was ändern, nur was?
probier mal
from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => date.hour(t: r._time) >= 7 and date.hour(t: r._time) <= 21 ) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21") -
Vermutlich muss ich bei "range" was ändern, nur was?
probier mal
from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => date.hour(t: r._time) >= 7 and date.hour(t: r._time) <= 21 ) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21")Vermutlich muss ich bei "range" was ändern, nur was?
probier mal
from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => date.hour(t: r._time) >= 7 and date.hour(t: r._time) <= 21 ) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21")Danke für deine Mühe.
Leider kam nur folgende Fehlermeldung:invalid: error @9:5-9:9: undefined identifier date error @9:36-9:40: undefined identifier date -
Vermutlich muss ich bei "range" was ändern, nur was?
probier mal
from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => date.hour(t: r._time) >= 7 and date.hour(t: r._time) <= 21 ) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21")Danke für deine Mühe.
Leider kam nur folgende Fehlermeldung:invalid: error @9:5-9:9: undefined identifier date error @9:36-9:40: undefined identifier dateLeider kam nur folgende Fehlermeldung:
das sagt die KI
Lösung: date importieren Füge ganz oben in deinem Query diese Zeile ein: import "date" Dann funktioniert dein Filter: import "date" from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> filter(fn: (r) => date.hour(t: r._time) >= 7 and date.hour(t: r._time) <= 21 ) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21") ⚠️ Falls es trotzdem nicht geht Dann nutzt du vermutlich eine ältere InfluxDB-Version (oder eingeschränkte Umgebung). Alternative ohne date (robuster) from(bucket: "iobroker") |> range(start: today()) |> filter(fn: (r) => r["_measurement"] == "alias.0.PV-Leistung" or r["_measurement"] == "shelly.0.shelly0110dimg3#8cbfeaa4c68c#1.Light0.Power" ) |> filter(fn: (r) => r["_field"] == "value") |> map(fn: (r) => ({ r with hour: int(v: uint(v: r._time) / 3600000000000 % 24) })) |> filter(fn: (r) => r.hour >= 7 and r.hour <= 21) |> aggregateWindow(every: 2m, fn: mean, timeSrc: "_start") |> yield(name: "today_7_21") 👉 Das berechnet die Stunde direkt aus dem Timestamp (funktioniert immer). -
Meine InfluxDB Version ist die v.2.8.0 und sollte halbwegs aktuell sein.
Mit dem ersten Script kommt das hier raus:
Das Diagramm beginnt immer noch Gestern um 14 Uhr, die Daten werden aber erst ab 9:00 Uhr angezeigt.
Beim zweiten Script kam eine Fehlermeldung:
invalid: error @8:62-8:75: expected uint but found int -
Also in influxdb kannst du es hiermit mal probieren:
from(bucket: "iobroker")
|> range(start: today())
|> filter(fn: (r) => r["_measurement"] == "Senec_INV_Power")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: 1h, fn: mean, createEmpty: false)
|> hourSelection(start: 7, stop: 15)Da wird das Diagramm auch auf die ausgewählte TimeRange begrenzt.
In Grafana geht das meines Wissens nicht. Da kannst du die Abfrage auch so einfügen, siehts das Diagramm aber für den ganzen Tag (also von 00:00-24:00).
Für Grafana müsstes du die TimeRange in der Influxdb Abfrage explizit festlegen, das auch nur der Bereich angezeigt wird, das funktioniert aber nicht dynamisch für jeden Tag. (wenn es dennoch gehen sollte möge mich einer korrigieren).Du könntest dir mit einer KI deiner Wahl ein Script für ein Apache ECHART erstellen lassen, welches die von dir gewünschten Daten visualisiert, das sollte funktionieren. Anzeigen lassen kannst du das dann mit dem flexchart Adapter.
-
Was noch viel komischer ist, ich kann in Grafana keine älteren Daten sehen.
Ich wollte mir den 2.4.26 von 7-21 Uhr anzeigen lassen.
Ergebnis:
Die Daten sind aber definitiv in der Datenbank.
Der selbe Zeitbereich in der InfluxDB sieht so aus:
Kann ich mit Grafana nicht auf die Daten der kompletten Datenbank zugreifen?
-
Was noch viel komischer ist, ich kann in Grafana keine älteren Daten sehen.
Hast du das Panel in einem bestehendem Dashboard angelegt?
Wenn ja dann passt wahrscheinlich die default TimeRange (oben rechts) vom Dashboard nicht zu deiner influxdb Abfrage TimeRange.
Was ich damit sagen will: Wenn du oben rechts z.B. 'Today' als TimeRange eingestellt hast, und in deiner influxDB Abfrage fragst du Daten von gestern oder vorgestern ab dann meckert Grafana das an.
-
Was noch viel komischer ist, ich kann in Grafana keine älteren Daten sehen.
Hast du das Panel in einem bestehendem Dashboard angelegt?
Wenn ja dann passt wahrscheinlich die default TimeRange (oben rechts) vom Dashboard nicht zu deiner influxdb Abfrage TimeRange.
Was ich damit sagen will: Wenn du oben rechts z.B. 'Today' als TimeRange eingestellt hast, und in deiner influxDB Abfrage fragst du Daten von gestern oder vorgestern ab dann meckert Grafana das an.
Was ich damit sagen will: Wenn du oben rechts z.B. 'Today' als TimeRange eingestellt hast, und in deiner influxDB Abfrage fragst du Daten von gestern oder vorgestern ab dann meckert Grafana das an.
Oh.
Dann habe ich wohl was falsch verstanden. Ich dachte die Tasten oben rechts, also
erlauben ein beliebiges Navigieren durch die Datenbank.
Dabei gilt das also nur innerhalb der Flux-Abfrage.Das ist ja blöd

Gibt es eigentlich vergleichbare Programme, um ähnlich schöne Diagramme zu erstellen, die etwas Benutzerfreundlicher für Anfänger sind?
-
Grafana ist da schon gut geeignet, wenn man ein paar Dinge beachtet, wie z.B. das mit der TimeRange.
Ich hab bei mir z.B. mehrere Dashboards, die alle eine unterschiedliche 'Default TimeRange' haben, damit ich nicht jedesmal über die Query Option die relative TimeRange und Timeshift einstellen muß.
Dashboards z.B. für 'Today' oder 'last 2 Days' oder 'last Month' usw.Feineinstellungen deiner influxdb Abfrage kannst du auch unten über der Query mit dem Punkt 'QueryOption' machen, dort kannst du deine relative TimeRange und ein Timeshift expilizit für ein Panel unabhängig vom Dashboard machen
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