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