Variablen für Datumswerte

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

Moderator: Ulrich

Antworten
Gerd
Beiträge: 41
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 1 Mal

Variablen für Datumswerte

Beitrag von Gerd »

Hallo,

ich benötige mal eure Hilfe.

Ich möchte weg, von dieser Art der zeitlichen Abgrenzung in den SQL Abfragen

where time >= '2021-01-01T00:00:00Z' and time <= '2021-12-31T00:00:00Z'

Bestimmt gibt es doch eine Möglichkeit Variablen zu definieren, die dann unter Grafana nutzen werden können.

Es wäre doch bestimmt für viele ein Mehrwert, wenn u.a. folgende Variablen zur Verfügung stehen würden.

$Vorjahr, $AktJahr, $Heute, $Gestern, ….
Cu Gerd
My Coffee is always #000000!

Bogeyof
Beiträge: 329
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal

Re: Variablen für Datumswerte

Beitrag von Bogeyof »

Dann such mal im Internet und Du wirst feststellen, dass der Wunsch zwar groß ist, aber keine Lösungsmöglichkeiten angeboten werden.
Nebenbei, Deine Jahresabfrage lässt den 31.12.21 aus, geht also nur bis zum 30.12.21 inklusive.

Ich habe angefangen, mir über eine eigene_werte.php zusätzliche Daten in die Datenbank zu schreiben. Hier sind aktuell TagImMonat, TagImJAhr, Monat, Stunde hinterlegt. Vielleicht sollte ich noch Minuten mit dazu nehmen. Man kann diese dann beim Dashboard als Query-Variable hinterlegen und damit sogar Rechnen und die Zeitabfragen steuern:

Beispiel für Heute:

Code: Alles auswählen

SELECT integral(Gesamtleistung,1h) FROM "PV" WHERE time > now() - 1d GROUP BY time(1d)
Liefert 2 Werte, es wird aber immer der letzte angezeigt und das ist der Wert für Heute
Beispiel für Gestern (bis gleiche Zeit heute, nicht Gesamt Gestern):

Code: Alles auswählen

SELECT integral(Gesamtleistung,1h) FROM "PV" WHERE time > now() - 2d and time < now() - 1d GROUP BY time(1d)
Liefert 2 Werte, es wird aber immer der letzte angezeigt und das ist der Wert für Gestern bis zur aktuellen Tageszeit. Geeignet für einen Vortagesvergleich...
Beispiel für aktuellen Monat:

Code: Alles auswählen

SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE  (time >= now() - ${TagImMonat}d  + 1d - ${Stunde}h)  fill(linear)
Unter der Voraussetzung, dass die eigenen Variablen TagImMonat und Stunde zur Verfügung stehen (habe ich selbst in die Datenbank geschrieben) kann damit eine immer gültige Abfrage für den laufenden Monat geschrieben werden
Vormonat geht so nicht, da die Anzahl der Tage variiert, könnte man lösen, indem man sich auch eine Variable TageVormonat in die Datenbank schreibt.

Code: Alles auswählen

SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE  (time >= now() - ${TagImMonat}d -${TageVormonat}d + 1d - ${Stunde}h) and (time < now() - ${TagImMonat}d + 1d - ${Stunde}h)fill(linear)
Beispiel für aktuelles Jahr:

Code: Alles auswählen

SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE  (time >= now() - ${TagImJahr}d  + 1d - ${Stunde}h)  fill(linear)
Unter der Voraussetzung, dass die eigenen Variablen TagImJahr und Stunde zur Verfügung stehen (habe ich selbst in die Datenbank geschrieben) kann damit eine immer gültige Abfrage für das laufende Jahr geschrieben werden
Vorjahr ist etwas ungenau, aber ohne Schaltjahr sollte es so funktionieren (gesamtes Vorjahr):

Code: Alles auswählen

SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE  (time >= now() - ${TagImJahr}d -365d + 1d - ${Stunde}h) and (time < now() - ${TagImJahr}d + 1d - ${Stunde}h)fill(linear)
Nicht wirklich umsetzbar ist das bisher für Jahrestabellen, welche jeden Monat in einer gemeinsamen Grafik darstellen sollen, siehe meinen Beitrag hier (da hoffe ich noch auf geniale Ideen):
viewtopic.php?p=7092#p7092

Bogeyof
Beiträge: 329
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal

Re: Variablen für Datumswerte

Beitrag von Bogeyof »

Kaum habe ich es geschrieben ist mir noch eine einfache Lösung für die Monatstabellen eingefallen:
Man definiert sich in Grafana im Dashboard eine Variable Jahr (auch als Konstante möglich, dann muss diese halt einmal im Jahr geändert werden) und baut die Abfragen dann wie folgt:

Code: Alles auswählen

SELECT integral("Gesamtleistung",1h) FROM "PV" WHERE time >='20${Jahr}-01-01' and time < '20${Jahr}-02-01' tz('Europe/Berlin') 
Damit kann ich immer denn Monat Januar des Jahres abfragen, auf welchen die Variable Jahr gesetzt ist. Wenn ich auch noch eine Variable mit Vorjahr definiere, dann z.B. problemlos auch ein Vorjahresvergleich möglich.
Damit sind viele Probleme der jährlichen Nacharbeit gelöst...

Gerd
Beiträge: 41
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 1 Mal

Re: Variablen für Datumswerte

Beitrag von Gerd »

Danke @Bogeyof :)

Für deine Ausführungen.
Du hast dir also eine eigene Abfrage geschaffen die dir deine Werte in die Datenbank schreibt. Wie z.b. $TagImMonat, ...

Hut ab :)

Die du dann wohl über die Variablen Funktion im Dashboard ausließt.

Dann sollte es doch auch möglich sein einen solchen String "2021-01-01T00:00:00Z" z.b. als (DatStartAktJahr") oder auch abgeändert als DatEndeAktJahr) in die die DB zu schreiben. Wobei man die Variable (Jahr) vom Raspi bekommen könnte.

Oder stehe ich da auf dem Schlauch?
Cu Gerd
My Coffee is always #000000!

Bogeyof
Beiträge: 329
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal

Re: Variablen für Datumswerte

Beitrag von Bogeyof »

Klar würde das gehen. Aber auf der anderen Seite sind die Selects ja nur einmal zu definieren und dann unabhängig vom aktuellen Jahr. Mit den Variablen TagImJahr, TageMonat, TagImMonat, Monat, Stunde kann man so viele unterschiedliche "unabhängige" Abfragen machen, dass ich den Vorteil eines festen Strings in der Datenbank nicht wirklich sehe. Aber möglich wäre es.
Wie man einfach und vom Update der Solaranzeige unabhängig eigene Werte in die Datenbank schreiben kann habe ich hier beschrieben (und in dem dort verlinkten Thema):
viewtopic.php?p=6839#p6839

Bogeyof
Beiträge: 329
Registriert: Mi 13. Mai 2020, 10:04
Hat sich bedankt: 1 Mal
Danksagung erhalten: 13 Mal

Re: Variablen für Datumswerte

Beitrag von Bogeyof »

Ich denke ich habe eine machbare Lösung gefunden. Evtl. wird sie @Ulrich in den Standard mit übernehmen:
siehe viewtopic.php?p=7141#p7141

Gerd
Beiträge: 41
Registriert: Di 6. Aug 2019, 22:06
Hat sich bedankt: 1 Mal

Re: Variablen für Datumswerte

Beitrag von Gerd »

Bogeyof hat geschrieben:
So 14. Feb 2021, 13:54
Ich denke ich habe eine machbare Lösung gefunden. Evtl. wird sie @Ulrich in den Standard mit übernehmen:
siehe viewtopic.php?p=7141#p7141
danke
Cu Gerd
My Coffee is always #000000!

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

Re: Variablen für Datumswerte

Beitrag von Ulrich »

Mit einem Update stehen jedem die zusätzlichen Werte in dem Statistik Measurement zur Verfügung.
--------------------------------------
Ulrich [Admin]

Antworten