Monat beim Schreiben in die Datenbank aufnehmen

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

Moderator: Ulrich

Antworten
Janniman
Beiträge: 124
Registriert: Mi 13. Okt 2021, 09:52
Hat sich bedankt: 11 Mal
Danksagung erhalten: 6 Mal

Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von Janniman »

Moin.

Ich ärgere mich immer über die Anzeige bei Grafana.
In den Zeiteinstellungen kann man ja z.B. now/M einen/den Monat auslesen, nur rechnen kann man damit nicht. Das geht nur mit z.B. Tag, Woche und Jahr, aber NICHT mit dem Monat. Klar, das ist der unterschiedlichen Anzahl an Tagen in den Monaten geschuldet, daher verständlich.

Zurzeit sehen die Dashbords bei mir wirklich schön aus, wie ich es mir vorstelle.... nur bleibt das nicht so, wenn es einen Jahreswechsel gibt.
Dann habe ich im Januar anstatt der Balken für jeden gelaufenen der letzten 12 Monate nur einen Balken, die Quartale haben nur einen Balken.

Dazu experimentiere ich mit einem "rotierenden" Dashboard, das immer die letzten 12 Monate (oder Quartale) über einen Jahreswechsel hinweg anzeigen kann, ohne ständig an den Stellschrauben zu drehen. Das funktioniert auch gut, hat aber einen gravierenden Nachteil:
Die Beschriftung der Balken können keine Variablen einbetten/darstellen. Das bedeutet, die Namen als Anzeige sind dann bei mir
"Monat" (aktueller Monat)
"Mon -01"
"Mon -02"
...
"Mon -12"
Da sich ja die Monate rotierend ändern (dieser Monat wäre Sept, in ein paar Tagen ist an dieser Position der aktuelle Monat aber Okt), ist eine hübsche Namenszuordnung nicht machbar. Auch mit den Transformationen komme ich da nicht weiter. Einzig wäre es (eventuell) über einen Filter machbar. Dieser Filter würde anhand eines Timestamps (des ersten Timestamps des Monats z.B.) ermittelt und dann dem Monat zugewiesen. Nur gibt es in keiner Datenbank die Werte Januar bis Dezember (oder besser Jan - Dez).

Nun meine Frage:
Kann man nicht über eine _math oder vergleichbar den jeweiligen Auslesemonaten des Timestamps einen Monat verpassen?
Also was im 01.02. und 28./29.02. liegt, bekommt den Monat Februar?
Dies dann in einer Datenbank wäre der Hammer.

Also vereinfacht: Datensatz vom Auslesezeitpunkt mit Monatsnamen versehen

Ich kann das leider weder in php, noch in Altgriechisch oder bunten Farben programmieren....

Jan

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

Re: Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von Ulrich »

Hallo Jan,

kannst du bitte einmal in das Measurement Statistik schauen. Dort werden solche Angaben jede 10 Minuten geschrieben. Fehlt da noch etwas?
--------------------------------------
Ulrich [Admin]

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

Re: Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von mdkeil »

Ich hätte da einen Workaround..

So sieht beispielsweise bei mir ein Select für den Januar des aktuellen Jahres aus. (wichtig sind die WHERE-Statements)

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", (((sum("verbrauch")-sum("bezug")) * last(ersp) + sum("einsp")*$esv)/1000) AS "Einsparung & Vergütung", (sum("verbrauch")-sum("bezug")) / sum("power") AS "EV-Quote", (sum("verbrauch")-sum("bezug"))/sum("verbrauch") AS "Autarkie" FROM (SELECT integral("PVLeistung",1h) AS power, integral("Einspeisung",1h) AS einsp, integral("Verbrauch",1h) AS verbrauch,  integral("Bezug",1h) AS bezug, last(Ersparnis) AS ersp 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')
Die Variable $current_year ergibt sich aus:

Code: Alles auswählen

SELECT last(Jahr) FROM Statistik
Dementsprechend habe ich für jeden Monat ein separates Select-Query. Wenn man nun noch für jeweils Februar-Dezember des Vorjahres ($current_year-1) ein entsprechendes Select-Query erstellt und unter "Query options" relative time auf 12M stellt, bekommt man immer die letzten 12 Monate angezeigt. Das sollte doch dem entsprechen, was du haben möchtest?
IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro

Janniman
Beiträge: 124
Registriert: Mi 13. Okt 2021, 09:52
Hat sich bedankt: 11 Mal
Danksagung erhalten: 6 Mal

Re: Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von Janniman »

Hallo.

Ich noch einmal zu meinem Problem und deiner Lösung.
Deine Lösung funktioniert scheinbar bei Monaten, dafür herzlichen Dank. Leider sind meine Datenaufzeichnungen mit Solaranzeige nicht so alt, daher kann ich die Funktion nur unter Vorbehalt unterschreiben, da es nur zwei Werte gibt, mit denen ich das testen konnte.

Nun soll ich aber pro Quartal den Ertrag etc. an das Finanzamt senden und dabei funktioniert das ganze nicht mehr. Eine Einschränkung auf zb. 9M (neun Monate) zeigt keine Einschränkung der Bar-Anzahl. Gewünscht wäre die ständige Anzahl von 5 (fünf) Bars, um das Vorjahresquartal noch im Vergleich zu haben.
Screenshot 2022-10-03 at 15-13-08 Birkenmoor-44a - Grafana.png
Hier im Screenshot habe ich zum Test versucht, die Bar-Anzahl auf drei (durch Versatz vielleicht vier) zu senken. Geht nicht, auch nicht mit dem Fokus auf Tage und Jahre.
Meine Versuche, den Zeitraum innerhalb des Query wieder einzuschränken, funktionieren nicht (AND time > 'now() - 1Y' usw.)
Wie schränkt man das hier ein?

Ach... und warum ist kein Alias unter den Bars, sondern Zeiten? Auch das bekomme ich irgendwie nicht weg. Umbenennen bei der Transformation bringt nichts, da kann ich die Bars nicht mal namentlich (alias) auswählen.

Jan

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

Re: Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von mdkeil »

Also ich habe mal Testweise 5 Querys angelegt. 4 für jedes Quartal im aktuellen Jahr und einen Query für das IV.Q aus dem Vorjahr.. Relative Time habe ich auf 12M stehen gelassen. Funktioniert wie erwartet.

Bzgl. der Bezeichnung auf der X-Achse.. das geht mit der "Time Series" Visualisierung nicht anders.. Das muss man ggf. via "Bar Chart" oder anderen Bar-Visualisierungen umsetzen. Da kann ich aber nicht helfen.
IBN: 07/2021
Fronius Symo 20.0-3-M : 13.2kWp S 45° + 3.96 kWp S 15° (Verschattung) &
Fronius Primo 3.0-1 : 2.97 kWp N 15° (Verschattung)
######
Wallbox: 11kW echarge Hardy Barth Cpμ2 Pro

Gerd
Beiträge: 140
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 6 Mal
Danksagung erhalten: 6 Mal

Re: Monat beim Schreiben in die Datenbank aufnehmen

Beitrag von Gerd »

Ich hab es doch schon umgesetzt ….

Schreibt jeden Monat die Zurück gerechneten Werte in eine Datenbank

Eine ähnliche Funktion würde sich auch Quartalsweise anbieten


viewtopic.php?t=2888
Cu Gerd
My Coffee is always #000000!

Antworten