NEWS
ioBroker – Grafana Tagesverlauf – keine Variablen in Query
-
Hallo zusammen,
ich bin neu in der ioBroker Welt. Zuvor habe ich meinen Stromzähler mit einer kleinen PV-Anlage mit dem Programm Volkszähler ausgelesen und dargestellt. Würde mich selber dennoch als Anfänger mit Grundkenntnissen beschreiben.
Ich habe den ioBroker, Influxdb 2 und Grafana installiert. Soweit läuft alles und ich kann die Diagramme aus Grafana auch in der VIS darstellen. Soweit so gut, dachte jetzt habe ich alles.
… Aber …. dann wollte ich den Tagesverlauf des Strombezugs darstellen. (KWh / z.B. Tag)Nach langem hin und her schaffe ich es nicht. Den „normalen“ Verlauf bekomme ich hin. (Siehe Anhang)
Ich habe im Internet viel gefunden, habe aber nicht die nötigen Einstellmöglichkeiten in Grafana. Unter „Query“ fehlen mir die nötigen Filter/Variablen.
Ich habe die Vermutung, dass ich "einfach" in den Einstellungen eine Einstellung nicht gemacht habe oder einfach fehlt, finde es aber nicht ... kann mir jemand einen Tipp geben was ich ändern muss, damit es geht?
Was mir in Detail aufgefallen ist, dass mir der kleine Stift fehlt, mit den man (so glaube ich) die Filter/Variablen überhaupt anzeigen kann
-
@peter-1 Tagesverlauf:
|> aggregateWindow(every: 1d, fn: last, createEmpty: true)
-
@ftd Hi, danke für den Tipp
Ich habe die Zeile von dir eingefügt bzw. meine abgeändert.
Ich erhalte jetzt die Werte gebündelt, aber noch nicht das Delta von Tag zu Tag.
Hätte noch einer einen zweiten Hinweis -
@peter-1 Ah.... du möchtest wissen, wieviel kwh du pro Tag verbraucht hast?
Ok, dein Smartmeter liefert mal 2,5kw, mal 1,8, mal 2,9, mal 0,9 etc.
D.h. du musst jeweils die Differenzen bilden, diese aufsummieren und pro Tag zusammenfassen:
|> difference(nonNegative: true, columns: ["_value"]) |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
-
@ftd Hi, danke für den weiteren Tipp, aber klappt leider nicht so richtig.
Ich glaube es wurde auch etwas falsch beschreiben bzw. nicht genau genug von mir erklärt. Ich lese sowohl den aktuellen Bezug (also Netzbezug oder Einspeisung in W aus) als auch die Zählerstände in KWh (Bezug und separat die Einspeisung)
Ich glaube es wurde so verstanden, dass ich vorhabe immer den IST-Bezug zu „sammeln“ und dann den Verbrauch zu errechnen. (Also SUMME in KW mit Hilfe der Zeit auf den Verbrauch in KWh zu kommen. Denke das würde ggf. auch mehr oder weniger gehen, aber nicht nötig.
Ich erhalte vom Zähler (sicher und genau) den Zählerstand in KWh, den nur leider wie den Zählerstand in Watt alle paar Sekunden.
Für mich als absoluter Anfänger, also „einfach“ … Max. Wert zum Tages ende und dann das Delta zum Tag davor...Dafür soll es ja fertige Filter/Einstellungen geben, aber die habe ich ja leider nicht. Das habe ich in meinen ersten Beitrag verscuht zu beschreiben.
Würde das auch über den „Quellcode“ ohne Filter machen, schaffe es aber nicht …Es gibt für mich zwei mögliche Wege, die ich alleine nicht schaffe.
- Die Filter die es gibt „finden/ einschalten“.
- Den „Quellcode“ händisch eintrage.
Ich hoffe es ist etwas verständlicher und mit kann einen helfen.
-
@peter-1 said in ioBroker – Grafana Tagesverlauf – keine Variablen in Query:
Ich hoffe es ist etwas verständlicher und mit kann einen helfen.
Ja.
- Die Filter die es gibt „finden/ einschalten“.
Du nutzt Influx v2. Die Filter zum zusammenklicken (InfluxQL) gibt es dort nicht mehr. Die neue Syntax heisst Flux.
- Den „Quellcode“ händisch eintrage.
Ja, musst du machen.
Alternative 1: Auf Influx v1.x zurück.
Zeig mal deine Datenpunkte in ioBroker, welche du visualisieren möchtest.... den Query bekommen wir hin. Ist kein Hexenwerk.
Alternative 2: Den Query in der InfluxGUI zusammenklicken und via Copy/Paste nach Grafana kopieren.
-
@ftd Deine Antworten bringen mich (und ggf. auch andere Anfänger) ein ganzes Stück weiter.
Mir war nicht bewusst, dass es in Influx V2 es die Filter nicht mehr gibt. Aufhören etwas zu suchen was es nicht mehr gibt hilft schon mal Somit kann ich für mich diesen Weg abhaken.
Auch auf eine alte Version von Influx zurückzuwechseln würde ich nicht machen wollen, wenn es noch einen anderen Weg gibt. Somit kann ich für mich auch diese Lösung abhaken.
Die Datenpunkte aus dem ioBroker, welche ich visualisieren möchte, kann ich erst morgen zusenden, da ich unterwegs bin.
Werde die Zeit nutzen mich tiefer mit der Syntax vom Query in Influx bzw. Grafana auseinandersetzten, damit ich die Tipps auch verstehen kann -
Guten Morgen.
Ich versuche mal die ioBroker Datenpunkte zu beschreiben, die ich visualisieren möchte.
[Ich hoffe ich habe die Frage richtig verstanden ]Ganz allgemein in Kurzform das gesamte Vorhaben. (VIS da ich mehr anzeigen will als ein Diagramm, und weil ich dachte Grafana wäre das Tool um Diagramme zu machen)
ioBroker (Smartmeter) - - > InfluxDB 2 - - > Grafana - - > ioBriker (VIS)
So wie von ftd beschreiben hat, höre ich auf die Lösung in Grafana zu suchen, sondern in InfluxDB 2
Aus dem ioBroker herraus speicher ich folgende Werte in der Datenbank InfluxDB2
Einer der drei Werte. (Zählerstand)
Der Wert wird gespeichert und kann mir den Verauf im ioBroker ansehen
Jetzt der wechsel nach InfluxDB
und auf den Schalter "SCRIPT EDITOR" gedrückt.
Und dann könne ich leider nicht weiter. Hier bräuchte ich dann Hilfe.
ftd, ich hoffe das konnte deine Rückfrage beantworten
-
zum Anzeigen der Tageswerte der kWh die Differenz berechnen lassen.
|> aggregateWindow(every: 1d, fn: last, timeSrc: "_start") |> difference()
-
@peter-1 Grafana
Rechts oben "Bar chart"
X-Achse => Time
Query:
from(bucket: "iobroker") |> range(start: -30d, stop: now()) |> filter(fn: (r) => r["_measurement"] == "1-0:1_8_0__255") |> filter(fn: (r) => r["from"] == "system.adapter.smartmeter.0") |> aggregateWindow(every: 1d, fn: last, createEmpty: false) |> difference(nonNegative: false, columns: ["_value"])
Dann solltest du Bars haben, welche den täglichen Verbrauch anzeigen.
Gehe ich richtig in der Annahme, dass 1-0:2_8__255 der Tageszähler ist?
Wenn ja, kannst du auch den nehmen.... aber dann ohne Differenzen, sondern nur den letzten Wert auslesen.
from(bucket: "iobroker") |> range(start: -30d, stop: now()) |> filter(fn: (r) => r["_measurement"] == "1-0:2_8__255") |> filter(fn: (r) => r["from"] == "system.adapter.smartmeter.0") |> aggregateWindow(every: 1d, fn: last, createEmpty: false)
-
Hallo zusammen,
leider bin ich erst jetzt wieder zuhause und konnte dazu eure Tipps umsetzten. Aber nur mit mehr oder weniger Erfolg ...
Nach dem guten alten "try and error" habe ich es hin bekommen
Nochmal danke an der Stelle. Muss aber gestehen, habe das Ergebnis nicht kapiert sondern akzeptiert.Aber das Problem ist bei mir gelöst, und für den Fall das noch jemand das gleich Problem hat hier meine Query in Grafana (Ob der "gut" ist kann ich nicht sagen)
from(bucket: "ioBroker")
|> range(start: -7d, stop: now())
|> filter(fn: (r) => r["_measurement"] == "smartmeter.0.1-0:1_8_0__255.value")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: 1d, fn: last, timeSrc: "_start")
|> difference()
|> yield(name: "mean")
@ftd , leider habe ich bei deinem Vorschlag eine Fehlermeldung bekommen.
" Bar charts requires a string or time field "
@SpacerX , leider habe ich auch bei deinem Vorschlag eine Fehlermeldung bekommen
" No data "
An der Stelle noch eine kleine Frage von mir.
Wie kann ich das Datum Format einstellen? Von MM/JJ + Uhrzeit hh:mm hinzu nur MM/JJ ohne Uhrzeit ? -
@peter-1 sagte in ioBroker – Grafana Tagesverlauf – keine Variablen in Query:
Wie kann ich das Datum Format einstellen?
Dazu musst Du ein Override erstellen:
Bei Standard options > Unit gibst Du folgendes ein und bestätigst mit Enter:
time:MM.YY.
-
@djmarc75Hat funktioniert, Danke.
-
Für 1 bis 30 Dashboards ja.... wenn ihr 375 Dashboards habt, macht ihr das nicht mehr in den Overrides...
grafana.ini
[date_formats] full_date = DD.MM.YYYY interval_day = DD.MM. interval_hour = DD.MM. HH:mm interval_minute = HH:mm interval_month = MM-YYYY interval_second = HH:mm:ss interval_year = YYYY
Ist beliebig anpassbar und kombinierbar.
-
@ftd Super Hinweis