NEWS
Grafana Stromauswertung Wochen und Monatsverbrauch
-
Hallo zusammen.
Ich würde mit gerne auch ein Grafana Dashboard bauen und habe dazu schon viele Anleitungen gelesen.
Sehr gut finde ich die Anleitung von EddyD's SmartHome.Leider rechnet er bei mir irgendwie nie das Datum korrekt und auch der Verbrauch kann nicht stimmen:
import "timezone" option location = timezone.location(name: "Europe/Berlin") data = from(bucket: "iobroker") |> range(start: -30d ) |> filter(fn: (r) => r["_measurement"] == "Strom-SH-Wolf-Heizung") |> filter(fn: (r) => r["_field"] == "value") min = data |> min () |> set(key:"_field", value: "data") max = data |> max () |> set(key:"_field", value: "data") union(tables: [min, max]) |> difference()
Wenn ich -30d einstelle, müsste er doch von heute 30 Tage zurück gehen.
Im Table View zeigt er mir an: 2023-01-20 06:31:19bei -20d = 2023-01-20 06:31:19
bei -10d = 2023-01-27 06:28:17
bei -5d = 2023-01-30 06:25:01Was mache ich falsch?
lg
Bit -
Bei mir Stromkosten pro Woche
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "iobroker") |> range(start: -1w) |> filter(fn: (r) => r["_measurement"] == "smartmeter.0.1-0:1_8_0__255.value" and r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start") |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42}))
Pro Monat:
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "smartmeter.0.1-0:1_8_0__255.value" and r["_field"] == "value") |> difference() |> aggregateWindow(every: 1mo, fn: sum, timeSrc: "_start") |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42}))
-
@Meister Mopper
danke, ich habe den Fehler gefunden.
ich schreibe vom shelly nur den aktuellen "watt" Wert weg und das kann nicht aggregiert werden.
ich muss den "total" Wert wegschrieben ... -
Ich versuche auch gerade Wochen und Monatswerte meiner PV Erzeugung zu ermitteln. Ich habe einen Wechselrichter der mir den aktuellen Tagesertrag ausgibt den schreibe ich alle 30 Sekunden nach Influx. Ich habe keine Probleme die Tages oder auch den Ertrag von Gestern dazustellen aber wenn ich Wochenwerte ausgeben will scheitere ich. Mein Problem ist hier das ich eben nicht nur eine Wert pro Tag habe sondern alle 30 Sekunden den jeweils erhöhten Wert. Wie kann ich den jeweils höchsten Tageswert über eine Woche oder einen Monat aufsummieren?
Hier mein aktuelle Querry:
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "edomi") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r._measurement == "Außen.Balkon.Balkonsolar.TagesErtrag_aktuell" ) |> aggregateWindow(every: 1w, fn: last, offset: 4d, timeSrc: "_start") |> yield(name: "last")
-
@sargon33 sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:
Wie kann ich den jeweils höchsten Tageswert über eine Woche oder einen Monat aufsummieren?
Ins Unreine gesprochen: Du musst zuerst die maximalen Tageswerte ermitteln:
|> aggregateWindow((every: 1d,fn:max,timeSrc: "_start",createEmpty:false))
und danach nochmals die Summe aller Tageswerte berechnen:
|> aggregateWindow((every: 1w,fn:sum,timeSrc: "_start",createEmpty:false))
Der Range muss muss natürlich entsprechend des Auswertezeitraumes angepasst werden.
-
Hat super funktioniert Danke!
-
Ich wollte die Monatsauswertung in mein Dashboard einfügen bekomme aber eine Fehlermeldung.
Habe leider weig Plan von Grafana.
Was will das Grafana von mir ??? Kann mir bitte jemand helfen?MfG innug
Inspect: Panel Title
1 queries with total query time of 0 ms
Data
Stats
JSON
Error
Query
error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1
Object
message:"InfluxDB Error: error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
data:Object
error:"error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
message:"error parsing query: found import, expected SELECT, DELETE, SHOW, CREATE, DROP, EXPLAIN, GRANT, REVOKE, ALTER, SET, KILL at line 1, char 1"
config:Object
method:"GET"
url:"api/datasources/proxy/uid/SLLck8kRk/query"
params:Object
data:null
precision:"ms"
inspect:Object
paramSerializer:serializeParams(e){…}
headers:Object
retry:0
hideFromInspector:false -
@innug sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:
Ich wollte die Monatsauswertung in mein Dashboard einfügen bekomme aber eine Fehlermeldung.
Habe leider weig Plan von Grafana.
Was will das Grafana von mir ??? Kann mir bitte jemand helfen?Du hast eine InfluxDB 1.x, die mit der "Sprache" InfluxQL angesprochen werden möchte. Die Queries in diesem Thread sind allerding in Flux formuliert, was die Standardsprache einer InfluxDB 2.x ist.
-
@marc-berg said in Grafana Stromauswertung Wochen und Monatsverbrauch:
Du hast eine InfluxDB 1.x, die mit der "Sprache" InfluxQL angesprochen werden möchte. Die Queries in diesem Thread sind allerding in Flux formuliert, was die Standardsprache einer InfluxDB 2.x ist.
Aha gut zu wissen. Gibt es so eine Auswertung auch noch für die InfluxDB 1.x ?
Oder kann man das irgedwie umprogrammieren? Kann mir da jemand helfen?
Fragen über Fragen ...MfG innug
-
Du kannst "Flux" auch in DB Version 1.x aktivieren und nutzen. Funktioniert problemlos.
https://docs.influxdata.com/influxdb/v1.7/flux/installation/
Falls es dir vielleicht weiterhilft, installiere die doch den "Sourceanalytix Adapter" im Iob.
Ich logge da ebenfalls nur die Watt Werte und SA macht daraus Tages-, Wochen-, Monats- und Jahreswerte. Diese wandern dann in die InfluxDB und werden durch Grafana optisch einwandfrei dargestellt.z.B hier bereits in der VIS über ein iframe
-
@rumpeltec said in Grafana Stromauswertung Wochen und Monatsverbrauch:
Du kannst "Flux" auch in DB Version 1.x aktivieren und nutzen. Funktioniert problemlos.
https://docs.influxdata.com/influxdb/v1.7/flux/installation/
Falls es dir vielleicht weiterhilft, installiere die doch den "Sourceanalytix Adapter" im Iob.
Ich logge da ebenfalls nur die Watt Werte und SA macht daraus Tages-, Wochen-, Monats- und Jahreswerte. Diese wandern dann in die InfluxDB und werden durch Grafana optisch einwandfrei dargestellt.z.B hier bereits in der VIS über ein iframe
Also ich habe keinen Zugriff auf influxdb.conf. Keine Ahnung wie ich da dran kommen soll. IOBroker läuft ja im Docker bei mir.
Und den Sourceanalytix Adapter finde ich auch nicht.
Kann man nicht irgendwie diese 2.x Abfrage umschreiben das sie mit 1.x funktioniert?
Gibt es da vielleicht einen Converter für?MfG innug
-
@meister-mopper
Servus
Wäre es eventuell möglich die Overrides und die Einstellungen dazu einzublenden bwz. hier zu posten?
Irgendwie bekomme ich das leider nicht so hin, warum auch immer
Das wäre echt super.Dann hätte ich eine grundsätzliche Frage zum loggen der Datenpunkte.
Ist es sinnvoller DP zu loggen, die momentan erzeugt werden(zB. momentan produzierte PV Leistung) oder die Tagesendsumme des DP?
So wie ich das verstehe macht das für Grafana einen Unterschied.
Oder liege ich da falsch. -
@nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:
Wäre es eventuell möglich die Overrides und die Einstellungen dazu einzublenden bwz. hier zu posten?
Das würde aufgrund der Masse an Bildern den Rahmen des Forums sprengen. Die Lösung wird hier gezeigt.
@nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:
Ist es sinnvoller DP zu loggen, die momentan erzeugt werden(zB. momentan produzierte PV Leistung) oder die Tagesendsumme des DP?
Ich nutze beides PV => Tageswert und Hauslast => Differenzwert eines hoch zählenden Datenpunktes.
Man kann beides je nach gusto nutzen.
-
@meister-mopper
Das nehme ich zur Hilfe, allerdings komme ich nicht ganz klar damit, dass es so aussieht wie bei Dir.Das heißt also wenn ich einen hoch zählenden Datenpunkt nehme muss ich dann erst die Summe der Woche und danach die Summe des Monat bilden, den sonst bekomme ich nie richtige Werte ist das Richtig?
-
@nwh sagte in Grafana Stromauswertung Wochen und Monatsverbrauch:
Das heißt also wenn ich einen hoch zählenden Datenpunkt nehme muss ich dann erst die Summe der Woche und danach die Summe des Monat bilden, den sonst bekomme ich nie richtige Werte ist das Richtig?
Da braucht es keine Summen, hier der tägliche Wert eines hochzählenden Datenpunktes
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "0_userdata.0.Energie.PV.Tagesverbrauch" and r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, fn: sum, timeSrc: "_start")
Da kannst du natürlich auch den Wert eines Monats anzeigen lassen.
-
@meister-mopper
Ginge das auch mit dem DP der PV der den gerade aktuellen produzierten Wert angibt?Wenn ich zB. die Regenmenge logge welchen Punkt nehme ich da am besten.
Regenmenge heute oder Regenmenge Gesamt.Was mir noch nicht ganz klar ist der unterschied von "last" uns "sum" da kommen beim gleich DP unterschiedliche Werte heraus.
-
Last meint den letzten Wert des Tages, wogegen sum die Tagessumme meint.
-
@meister-mopper und ich kann mir beiden Werten lat und sum eine Wochen- und Monatsberechnung machen? Da kommen aber je andere Werte heraus. WEnn ich dein Beispiel nehme wäre ds "sum" wenn ich hier 1mo schreibe ist das dann der gleiche Wert wie wenn hier stehen würde last?
-
@Meister-Mopper
So habe ich es jetzt geschafft.
DP ist aktuelle Power der Steckdose.
Ich zeige die 5 Monate mit dem höchsten Verbrauch an.Das Datum und die Kosten schaffe ich nicht so darzustellen wie du es gemacht hast.
Bei den Kosten steht bei mir ein "k" dahinter keine Ahnung woher od. warum.
Was ich noch gerne hätte unten TOTAL zu ergänzen.Das wäre der Code dazu.
import "timezone" option location = timezone.location(name: "Europe/Berlin") from(bucket: "iobroker") |> range(start: v.timeRangeStart, stop: v.timeRangeStop) |> filter(fn: (r) => r["_measurement"] == "StromWM" and r["_field"] == "value") |> difference() |> aggregateWindow(every: 1d, fn:max, timeSrc: "_start", createEmpty:false) |> aggregateWindow(every: 1w, fn:sum, timeSrc: "_start", createEmpty:false) |> aggregateWindow(every: 1mo, fn:sum, timeSrc: "_start", createEmpty:false) |> map(fn: (r) => ({r with _cost: float(v: r._value) * 0.42})) |> top(n: 5, columns: ["_value"])
Kannst du mir hier even. noch helfen?
-
Darstellungen werden in overrides geändert. Musst mal dort gucken.