Histogramm in Grafana mit InfluxDB

hallo zusammen,

ich habe folgendes Problem und bekomme es einfach nicht gelöst, ggf könnt Ihr mit ja weiterhelfen.

Und zwar habe ich eine Grafana Dashboard mit den Daten meiner PV-Anlage.
Bis auf eine Anzeige bekomme ich alles so hin wie gewünscht.
Was ich nicht schaffe ist folgendes:
Ich möchte mit die Tageserträge der PV-Anlage in einem HIstogramm anzeigen lassen. Sprich z.B. die Werte des letzten 30 Tage.

Nun hole ich mir aus InfluxDB (V3) den Source-Code (nur mit dem Wert) und kopiere diesen in Grafana.

das sieht dann wie folgt aus:

ich habe gefühlt schon alle Einstellmöglichkeiten durchprobiert und komme aber nicht weiter…
habt Ihr eine Idee woran es liegen könnte?

mfg Morphy

Moin,

ich bin nicht gut in den Dingen, die Gedankengänge anderer nachzuvollziehen, aber mal angefangen damit, dass man von Text keine Bildchen postet, sondern das in Code Tags </> einpackt und hier Postet, kommen wir mal zu den einzelnen Punkten,

  1. das measurement ist schon ein Tageswert ↔ yieldday?
  2. warum aggregierst Du, dann auch noch in 5 sek. schritten, wenn Du einen absoluten letzten Wert nimmst fn: last

Ich würde mir, das eher so zusammen basteln

import "timezone"
option location = timezone.location(name: "Europe/Berlin")

from(bucket: "home_assistant")
  |> range(start: -30d, stop: now())
  |> filter(fn: (r) => r["friendly_name"] == "Außenthermometer [Klima] Temperatur")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["_measurement"] == "°C")
  |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)

Wobei

  • orange, der Zeitraum ist, die letzten 30 Tage -30d
  • grün, die Einschränkung für die Zeitauswahl, dadurch steht das Panel fest auf 30 Tage
  • hellblau, die aggregierten Tageswerte, da kann man spielen und hängt an den Ausgangsdaten

Dann kommt in etwa das dabei raus,

Es hängt natürlich auch von Deinen Ausgangsdaten ab, zu denen Du leider keine Angaben gemacht hast, in meinem Beispiel ist es ein Temperaturfühler außen.

#group,false,false,true,true,false,false,true,true,true,true,true,true
#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,double,string,string,string,string,string,string
#default,mean,,,,,,,,,,,
,result,table,_start,_stop,_time,_value,_field,_measurement,domain,entity_id,friendly_name,source
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T12:36:00Z,14.313333333333336,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T14:32:00Z,14.636923076923077,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T16:28:00Z,13.635882352941174,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T18:24:00Z,10.897000000000002,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T20:20:00Z,8.674545454545454,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-02T22:16:00Z,7.671818181818182,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-03T00:12:00Z,6.868333333333332,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-03T02:08:00Z,5.854666666666668,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-03T04:04:00Z,5.174285714285714,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA
,,0,2024-03-02T10:38:24.087729096Z,2024-03-31T10:38:24.087729096Z,2024-03-03T06:00:00Z,4.33909090909091,value,°C,sensor,aussenthermometer_klima_temperature,Außenthermometer [Klima] Temperatur,HA

VG
Bernd

hallo,

der Wert Yieldday, ist eine Aufsummierung von kWh-Werten des laufenden Tages, die Rohdaten sehen in InfluxDB wie folgt aus:

ich habe meinen Code nun mal an deinen angepasst, bekomme jedoch folgende Meldung in Grafana: “no histogramm found in response”.

hier der angepasste Code:

import "timezone"
option location = timezone.location(name: "Europe/Berlin")

from(bucket: "Monitoring")
|> range(start: -30d, stop: now())
  |> filter(fn: (r) => r["_measurement"] == "mqtt.0.hm1600.116491954071.0.yieldday")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["_measurement"] == "kwh")
  |> aggregateWindow(every: 1d, fn: mean, createEmpty: false)

habe nun noch einmal ein wenig rumprobiert und habe einen Filter von deinem Code weggelassen:

import "timezone"
option location = timezone.location(name: "Europe/Berlin")

from(bucket: "Monitoring")
|> range(start: -30d, stop: now())
|> filter(fn: (r) => r["_measurement"] == "mqtt.0.hm1600.116491954071.0.yieldday")
|> filter(fn: (r) => r["_field"] == "value")
|> aggregateWindow(every: 1d, fn: mean, createEmpty: false)

jetzt sieht das Ergebnis so aus:

Moin,

wenn das ein Aufsummierter wert ist, dann ist last denke ich schon korrekt

|> aggrgateWindow(every: 1d, fn: last, createEmpty: false)

Ich kann da nicht viel zu sagen, hast Du denn historische Daten aus den letzten 30 Tagen?
Hast Du auch bei Query Options was eingegeben?

Also wenn ich das mit den meinen Zähler kWh Totalwerten mache, dann bekomme ich bei dieser Abfrage

import "timezone"
option location = timezone.location(name: "Europe/Berlin")

from(bucket: "home_assistant")
  |> range(start: -30d, stop: now())
  |> filter(fn: (r) => r["_measurement"] == "kWh")
  |> filter(fn: (r) => r["friendly_name"] == "Hichi SMA Zähler SML total_kwh")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["domain"] == "sensor")
  |> filter(fn: (r) => r["entity_id"] == "hichi_sma_zahler_sml_total_kwh")
  |> aggregateWindow(every: 1d, fn: last, createEmpty: false)

Das sieht dann so aus

Wenn ich aber nur die Differenz haben möchte von Tag zu Tag, dann ist die Abfrage

import "timezone"
option location = timezone.location(name: "Europe/Berlin")

from(bucket: "home_assistant")
  |> range(start: -30d, stop: now())
  |> filter(fn: (r) => r["_measurement"] == "kWh")
  |> filter(fn: (r) => r["friendly_name"] == "Hichi SMA Zähler SML total_kwh")
  |> filter(fn: (r) => r["_field"] == "value")
  |> filter(fn: (r) => r["domain"] == "sensor")
  |> filter(fn: (r) => r["entity_id"] == "hichi_sma_zahler_sml_total_kwh")
  |> aggregateWindow(every: 1d, fn: last, createEmpty: false)
  |> difference()

und das Diagramm dazu

VG
Bernd

P.S.: da Du ja sicherlich keine MWh produzierst, ist das mean nicht korrekt, denn es ist dann ja nur der letzte Tageswert richtig, also doch last

hallo,

ja das sind natürlich kWh und keine MWh…

ich habs nun soweit mal hinbekommen, was mir a

aktuell noch fehlt, ich aber ganz gut finde ist die Wertanzeige über den Balken.
Kannst du mir noch sagen, wie sich das einstellen lässt?

Ansonsten schon mal danke für die Hilfe!

mfg morphy

Moin,

das stellst du im rechten Bereich der Bar Chart ein,

VG
Bernd

hallo,
ja den Button habe ich schon gefunden, es passiert aber nichts…

Mfg Moprhy

Moin,

da fällt mir erst einmal nichts zu ein. Da muss ich mal etwas :thinking:
Wenn ich aber so schaue, dann ist das wohl so, dass Du einen Wert mit Einheit als Value hast,
image
Bei mir sieht das ja so aus
image
Vielleicht gehen da nur Zahlen, ohne Einheiten

Wer schreibt den die Daten in die influxDB?
Meine werden nur durch HA geschrieben, und da sind die Values für measurement


Bei Dir ist es ja, aus dem Sprachgebrauch die entity_id.

Also so genau kann ich das nicht sagen, muss da mal schauen, ob ich da was Vergleichbares habe, womit ich probieren kann.

VG
Bernd