Monatswerte in Grafana

Allgemeine Informationen zum Nachbau und zum Forum.
PV-Monitorung / PV Überwachung

Moderator: Ulrich

Benutzeravatar
mdkeil
Beiträge: 107
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Monatswerte in Grafana

Beitrag von mdkeil »

Dieser Lösungsansatz ist mit heute auch durch den Kopf gegangen. Ich schau mal, wie es bei mir zeitlich aussieht, ggfs. kann ich das implementieren.
Fronius Symo 20.0-3-M: 20.13kWp 61x QCell Q.PEAK DUO-G7 330, 13.2kWp S 45°, 6.93kWp (2.97/3.96) in N/S-Aufständerung mit Verschattung

my2cents
Beiträge: 26
Registriert: Do 20. Jan 2022, 14:35
Danksagung erhalten: 4 Mal

Re: Monatswerte in Grafana

Beitrag von my2cents »

Ich hab das nicht zu ende gedacht. Man müsste das tatsächlich täglich laufen lassen, um den aktuellen Monat jeweils korrekt ab zu bilden. Sonst "wächst" der nicht mit sondern aktualisiert sich erst am Ende des Monats.

sirathan
Beiträge: 19
Registriert: Di 12. Okt 2021, 19:31
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Monatswerte in Grafana

Beitrag von sirathan »

Hallo zusammen

Ich kann mal aufzeigen was ich bisher hingekriegt habe. Mein Ziel wäre eigentlich, dass ich 12 Monate darstellen kann mit der jeweiligen Produktion pro Monat. Gleichzeitig hätte ich gerne in einer zweiten Farbe den selben Monat des Vorjahres.

Also: Januar 22, Januar 21, Februar 22, Fabruar 21, etc.
Da ich erst seit Oktober produziere, kann ich noch keine Vergleiche zwischen aktuellem Monat und dem selben Monat im Vorjahr machen.
Zudem sind die Abfragen in Grafana zwar definiert, liefern aber keinen Inhalt, daher werden auch keine Säulen dargestellt. Das ist schade, ich hätte gerne Säulen mit Wert 0 gehabt, krieg ich aber nicht hin. Vielleicht hat ja jemand ein Tip.

Für mein Panel muss ich zwei Variablen führen welche ich jedes Jahr anpassen muss. Mit den in der Statistik_DB liegenden Werten für "DiesesJahr_TS" und "LetztesJahr_TS" kriege ich es nicht hin. Habe also diese beiden als Konstante definiert:
- DiesesJahr
- LetztesJahr

constant.PNG


Der Graf sieht dann so aus (Alle Monate mit Werten, diejenigen ohne Wert werden leider nicht angezeigt)

graf.PNG


Ich habe somit 24 Abfragen (für Jeden Monat im aktuellen und im letzten Jahr) nach diesem Schema, ich verwende die Visualisierung "Bar Gauge".

Code: Alles auswählen

SELECT integral("Leistung",1h) from "PV" where time >= '${DiesesJahr}-01-01' and time < '${DiesesJahr}-02-01' fill(null)

Code: Alles auswählen

SELECT integral("Leistung",1h) from "PV" where time >= '${LetztesJahr}-01-01' and time < 
 '${LetztesJahr}-02-01' fill(null)
Hat jemand einen Tip wie ich auch die Monate welche keine Werte in der DB haben anzeigen kann (Mit Wert 0)?
Hat jemand einen Tip, wie ich mit vordefinierten Variablen arbeiten kann und so nicht jedes Jahr meine Konstanten anpassen muss?

Viele Grüsse

Janniman
Beiträge: 92
Registriert: Mi 13. Okt 2021, 09:52
Hat sich bedankt: 9 Mal
Danksagung erhalten: 2 Mal

Re: Monatswerte in Grafana

Beitrag von Janniman »

Moin.

Schau mal bitte bei viewtopic.php?f=19&t=1223&p=14794&hilit ... ben#p14794, da hatte @Bogeyof beschrieben, wie man Dummy-Werte in die Datenbank schreibt. Das kann ja auch eine "0" sein (null). Oder Du machst daraus einen Miniwert mit der dritten Stelle hinter dem Komma. So sollte es dann funktionieren.

Jan

Benutzeravatar
mdkeil
Beiträge: 107
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Monatswerte in Grafana

Beitrag von mdkeil »

Ich habe nun auch eine für mich gute Möglichkeit gefunden, Monatswerte in Grafana zu visualisieren. Ich nutze dafür die aktuellste Grafana-Version mit dem Time-series-Plugin, Ich habe auch mal kurz auf "Bar Chart" gewechselt und ein Bild eingestellt, wenn man die Werte nicht gestackt im Balken haben möchte. Alle
"Verbräuche" sind bei mir auf der negativen Y-Achse dargestellt, was nun in der Time-series endlich möglich ist.

Ganz trivial ist es natürlich nicht, da auch einige Transformation durchgeführt werden müssen. Darüber hinaus ist für jeden Wert ein seperater Query notwendig, sprich bei 5 Werten/Monat (wie bei mir) wären es 60 Querys.

(Query options: Time shift: 1d/y)
Monatswerte_TimeSeries.png
Monatswerte_BarChart.png
Hier mal für den Monat Januar beispielhaft die Abfragen aufgeführt: Die Queries können bei Euch natürlich varieieren, jenachdem wie eure Daten in der Datenbank verfügbar sind.
- Variable $current_year
Variable.png
Variable.png (4.62 KiB) 912 mal betrachtet
PV-Produktion: (Alias PV_Monat)

Code: Alles auswählen

SELECT last("Wh_Gesamt_Jahr") - first("Wh_Gesamt_Jahr") FROM "Summen" WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' fill(null) tz('Europe/Berlin')
Einspeisung: (Alias Einspeisung_Monat)

Code: Alles auswählen

SELECT sum("helper") FROM (SELECT integral("Einspeisung",1h) AS helper FROM "Meter" WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) WHERE time>='${current_year}-01-01' tz('Europe/Berlin')
Gesamtverbrauch: (Alias Gesamtverbrauch_Monat)

Code: Alles auswählen

SELECT sum("helper") FROM (SELECT integral("Verbrauch",1h) AS helper FROM "Meter" WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) WHERE time>='${current_year}-01-01' tz('Europe/Berlin')
Netzbezug: (Alias Netzbezug_Monat)

Code: Alles auswählen

SELECT sum("helper") FROM (SELECT integral("Bezug",1h) AS helper FROM "Meter" WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) WHERE time>='${current_year}-01-01' tz('Europe/Berlin')
Eigenverbrauch: (Alias Eigenverbrauch_Monat)

Code: Alles auswählen

SELECT sum("helper") FROM (SELECT integral("Verbrauch",1h) - integral("Bezug",1h) AS helper FROM "Meter" WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) WHERE time>='${current_year}-01-01' tz('Europe/Berlin')
Transformationen:
1. Outer Join
1_OuterJoin.png
2-x Add field from calculation (Für jeden Wert separat)
2_Addfield.png
3. Organized fields (Einzelmonate ausblenden (Aliase))
3_Organizefields.png
Man erhällt dann z.B. folgenden Table-View, den man dann beliebig visualisieren kann.
TableView.png
Bei Rückfragen kann ich gerne behilflich sein.
Fronius Symo 20.0-3-M: 20.13kWp 61x QCell Q.PEAK DUO-G7 330, 13.2kWp S 45°, 6.93kWp (2.97/3.96) in N/S-Aufständerung mit Verschattung

Benutzeravatar
mdkeil
Beiträge: 107
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Monatswerte in Grafana

Beitrag von mdkeil »

Ich habe das ganze mal noch ein wenig "optimiert" mit folgenden Voraussetzungen:

1) Die "Leistung" aus dem Measurement "PV" wird als "PVLeistung" zusätzlich in das Measurement "Meter" geschrieben:
Könnte ja @Ulrich ggfs. übernehmen, bzw. könnte man mal eine Überlegung anstellen und ein Measurement "Grafana" erstellen, wo die wichtigsten/beliebtesten Werte enthalten sind ;)

/var/www/html/phpinc/funktionen.inc.php
query_PVLeistung.png
2) Alle vorhandenen Daten ("Leistung" aus "PV") zusätzlich nach "PVLeistung" aus "Meter" kopieren // WARNUNG, Nur machen, wenn man weis, was man tut!

Code: Alles auswählen

influx -execute 'SELECT Leistung AS PVLeistung INTO "Meter" FROM "PV" GROUP by *' -database="solaranzeige" // ggf. -database anpassen
3) Man brauch nun für jeden Monat nur noch einen Query: In meinem Bespiel sind folgende Werte enthalten:
- PV-Produktion
- Einspeisung
- Gesamtverbrauch
- Netzbezug
- Eigenverbrauch

Dies kann man natürlich noch erweitern, solange alle Daten aus einem Measurement kommen.

- Es wird weiterhin die Variable $current_year benötigt
- Format as "Table" auswählen

Bespiel für Januar: (Der Übersichtshalber ein wenig anders formariert)

Code: Alles auswählen

SELECT 
   sum("power") AS "PV-Produktion", 
   sum("einsp") AS "Einspeisung", 
   sum("verbrauch") AS "Gesamtverbrauch", 
   sum("bezug") AS "Netzbezug", 
   sum("verbrauch")-sum("bezug") AS "Eigenverbrauch" 
FROM 
   (SELECT
	integral("PVLeistung",1h) AS power, 
	integral("Einspeisung",1h) AS einsp, 
	integral("Verbrauch",1h) AS verbrauch,  
	integral("Bezug",1h) AS bezug 
   FROM Meter 
   WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) 
WHERE time>='${current_year}-01-01' tz('Europe/Berlin')

Code: Alles auswählen

SELECT sum("power") AS "PV-Produktion", sum("einsp") AS "Einspeisung", sum("verbrauch") AS "Gesamtverbrauch", sum("bezug") AS "Netzbezug", sum("verbrauch")-sum("bezug") AS "Eigenverbrauch" FROM (SELECT integral("PVLeistung",1h) AS power, integral("Einspeisung",1h) AS einsp, integral("Verbrauch",1h) AS verbrauch,  integral("Bezug",1h) AS bezug FROM Meter WHERE time>='${current_year}-01-01' AND time<'${current_year}-02-01' GROUP BY time(1d) ) WHERE time>='${current_year}-01-01' tz('Europe/Berlin')
4) Unter Transform muss nur noch "Merge" ausgewählt werden.

Viel Spass damit und bei Fragen einfach fragen! ;)
Fronius Symo 20.0-3-M: 20.13kWp 61x QCell Q.PEAK DUO-G7 330, 13.2kWp S 45°, 6.93kWp (2.97/3.96) in N/S-Aufständerung mit Verschattung

Benutzeravatar
Ulrich
Administrator
Beiträge: 3567
Registriert: Sa 7. Nov 2015, 10:33
Wohnort: Essen
Hat sich bedankt: 59 Mal
Danksagung erhalten: 290 Mal
Kontaktdaten:

Re: Monatswerte in Grafana

Beitrag von Ulrich »

1) Die "Leistung" aus dem Measurement "PV" wird als "PVLeistung" zusätzlich in das Measurement "Meter" geschrieben:
Könnte ja @Ulrich ggfs. übernehmen
Habe ich im Update übernommen...
--------------------------------------
Ulrich [Admin]

Benutzeravatar
mdkeil
Beiträge: 107
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Monatswerte in Grafana

Beitrag von mdkeil »

sirathan hat geschrieben:
So 13. Feb 2022, 23:15
Konntest du das mit dem Jahr 1970 lösen?
Das ist leider das Verhalten der Integral-Funktion, die als Zeitstempel immer epoch 0 zurückgibt. Eigentlich sollte dies nur passieren, wenn man der Funktion über Where keinen Zeitraum festlegt. Bei der Sum-Funktion ist das zum Glück, wie beschrieben. Schau dir am besten meine Lösung an, da habe ich die Integral-Funktion (Group by time (1d)) mit der Sum-Funktion kombiniert. Die Integral-Funktion liefert also die Tageswerte für einen festgelegten Zeitraum (z.B. Montag) welche anschließend summiert werden..
Fronius Symo 20.0-3-M: 20.13kWp 61x QCell Q.PEAK DUO-G7 330, 13.2kWp S 45°, 6.93kWp (2.97/3.96) in N/S-Aufständerung mit Verschattung

sirathan
Beiträge: 19
Registriert: Di 12. Okt 2021, 19:31
Hat sich bedankt: 1 Mal
Danksagung erhalten: 1 Mal

Re: Monatswerte in Grafana

Beitrag von sirathan »

Vielen Dank @mdkeil. Sehr interessant, grundsätzlich klappt es bei mir auch.
Ich nehme an mit dem Time-Series Plugin meinst du das native Grafana Plugin?

Wie hast du das mit dem Stacking hingekriegt? Und die Verbräuche negativ dargestellt? Das habe ich noch nicht hingekriegt.

Am liebsten hätte ich pro Monat eine Säule mit PV Produktion, daneben gestackt Eigenverbrauch und Einspeisung.
Negativ dargestellt den Gesamtverbrauch und daneben Netzbezug und Eigenverbrauch.

Benutzeravatar
mdkeil
Beiträge: 107
Registriert: So 12. Sep 2021, 20:40
Hat sich bedankt: 4 Mal
Danksagung erhalten: 6 Mal

Re: Monatswerte in Grafana

Beitrag von mdkeil »

sirathan hat geschrieben: Ich nehme an mit dem Time-Series Plugin meinst du das native Grafana Plugin?
Jep, dass was standardmäßig mit bei ist.
Wie hast du das mit dem Stacking hingekriegt? Und die Verbräuche negativ dargestellt? Das habe ich noch nicht hingekriegt.
Wenn Du bei der Visualisierung "Time Series" alles so eingestellt hast, wie ich es beschrieben habe, stackt er automatisch.. das kann man glaube auch nicht verhindern, bzw. in der Visualisierung verhindern.

(1) Format As untem beim Query auf "Table" gestellt?; Unter Transform "Merge" ausgewählt? Anbei mal ein aktueller Screenshot (auf table-view gestellt); sollte eigentlich so oder ähnlich aussehen.
tableview_2.png
(2) bzw. der negativen Darstellung.. Das war mal ein Feature in einer älteren Grafana-Version, was nun in der aktuellsten (8.4.1) wieder implementiert wurde.
negative_override.png
Am liebsten hätte ich pro Monat eine Säule mit PV Produktion, daneben gestackt Eigenverbrauch und Einspeisung.
Negativ dargestellt den Gesamtverbrauch und daneben Netzbezug und Eigenverbrauch.
Was mit der Visialisierung "Bar Chart" mit Anpassungen funktionieren könnte.. Ich selbst habe noch nicht herausgefunden, wie man Stacking und Non-Stacking kombiniert in einer Darstellung.. negative Darstellung geht da glaube nur über den Workaround, die entsprechenden Daten mit (-1) zu multiplizieren.. (MIN, MAX, etc. funktionieren dann aber natürlich nicht mehr)
Fronius Symo 20.0-3-M: 20.13kWp 61x QCell Q.PEAK DUO-G7 330, 13.2kWp S 45°, 6.93kWp (2.97/3.96) in N/S-Aufständerung mit Verschattung

Antworten