Leider wirft:
select math(difference(*) *0.2794) from (Select last(*) from "TS00128" WHERE time > now() - 2d GROUP BY time(1d) limit 2)
den Fehler:
"InfluxDB Error: undefined function math()"
Ich glaube allmählich, dass der Ansatz hier mittlerweile fast nur noch akademischen Wert hat. Das ist ja nicht wirklich intuitiv. Zudem muss man die Query dafür ja echt manuell editieren und kann nicht mit dem integrierten Query-Builder arbeiten.
In einem eigenständigen Dashboard mit dem über den Picker ausgewählten Begriff "Yesterday" und dem auf "1d" gesetzten Intervall und der über den Querybuilder ausgewählten Math-Option klappt das dann vergleichsweise einfach. Aber eben mit dem Nachteil, dass ich die dynamischen Vergleichszahlen nur über ein separates Dashboard bekomme.
Beste Grüße
Jens
[Frage] [V1.6.0RC6] Nutzung von Variablen in Grafana Parallelinstanz [v7.2.2]
Forumsregeln
- Denke bitte an aussagekräftige Titel und gebe dort auch die [Firmware] an. Wenn ETS, CometVisu, Grafana, Edomi oder eine andere Software beteiligt ist, dann auch immer deren Version
- Bitte mache vollständige Angaben zu Deinem Server, dessen ID und dem Online-Status in Deiner Signatur. Hilfreich ist oft auch die Beschreibung der angeschlossener Hardware sowie die verwendeten Protokolle
- Beschreibe Dein Projekt und Dein Problem bitte vollständig. Achte bitte darauf, dass auf Screenshots die Statusleiste sichtbar ist
- Bitte sei stets freundlich und wohlwollend, bleibe beim Thema und unterschreibe mit deinem Vornamen. Bitte lese alle Regeln, die Du hier findest: https://wiki.timberwolf.io/Forenregeln
-
- Reactions:
- Beiträge: 2680
- Registriert: Sa Sep 15, 2018 10:26 am
- Wohnort: Kerpen
- Hat sich bedankt: 1003 Mal
- Danksagung erhalten: 789 Mal
timberwolf168 | (2600er) | VPN offen | Reboot nach Vereinbarung |
timberwolf1699 | (3500XL) | VPN offen | Reboot jederzeit |
wiregate1250 |
-
- Reactions:
- Beiträge: 4095
- Registriert: So Aug 12, 2018 10:20 am
- Hat sich bedankt: 1424 Mal
- Danksagung erhalten: 1910 Mal
Wie sehen denn dann die Klick SQL aus. Die dann per Hand geschrieben hart codiert, lässt dann ggf auch unterschiedliche Zeitbezüge in einem Dashboard zu.
So ist es aber immer, KlickKlack ist einfach und etwas begrenzt, direkter Eingriff in den Code ermöglicht dann viel mehr. SQL ist schon eine mächtige Sprache aber ja nicht jeder Datenbanktyp unterstützt alle Funktionen oder hat eine gewisse Dialektik / Semantik.
So ist es aber immer, KlickKlack ist einfach und etwas begrenzt, direkter Eingriff in den Code ermöglicht dann viel mehr. SQL ist schon eine mächtige Sprache aber ja nicht jeder Datenbanktyp unterstützt alle Funktionen oder hat eine gewisse Dialektik / Semantik.
Grüße Göran
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
#1 Timberwolf 2600 Velvet Red TWS #225 / VPN aktiv / Reboot OK
#2 Timberwolf 2600 Organic Silver TWS #438 / VPN aktiv / Reboot OK
#PV 43,2 kWh Akku; 3x VE MP2 5000; 6,7 kWp > 18 Panele an 4x HM1500 + 1 HM800 WR; Open-DTU
-
- Reactions:
- Beiträge: 1908
- Registriert: Di Okt 09, 2018 9:26 am
- Hat sich bedankt: 643 Mal
- Danksagung erhalten: 797 Mal
Ich lag wahrscheinlich mit der Vermutung "math" zu benutzen auch falsch, das wäre notwendig bei KlickKlack, aber bei SQL wohl nicht. Also versteh ich auch nicht, warum Dein Weg nicht ging, aber Du könntest noch ausprobieren - wenn Du noch magst - die Multiplikation im ersten Teil, also bei Select last (*) ... einzubringen...
Nur als eine Idee. Aber mir wäre nicht klar, warum das eine Änderung bringen soll.
Nur als eine Idee. Aber mir wäre nicht klar, warum das eine Änderung bringen soll.
VG, Sven - 3500 XL ID:1369 | 3500 L ID:1355, VPN offen, Reboot OK
-
- Reactions:
- Beiträge: 916
- Registriert: So Aug 12, 2018 9:12 am
- Hat sich bedankt: 115 Mal
- Danksagung erhalten: 251 Mal
blaubaerli hat geschrieben: ↑Mi Okt 28, 2020 10:24 pm Leider wirft:
select math(difference(*) *0.2794) from (Select last(*) from "TS00128" WHERE time > now() - 2d GROUP BY time(1d) limit 2)
den Fehler:
Hallo Jens,
select test_sum_Val * 0.2794 from (select difference(*) as test from (Select sum(*) from "TS00018" WHERE time > now() - 2d GROUP BY time(1d) limit 2))
MfG Juri
TWS 2400 ID: 69 + PBM ID: 728 + TP-UART, VPN offen, Reboot erlaubt
-
- Reactions:
- Beiträge: 2680
- Registriert: Sa Sep 15, 2018 10:26 am
- Wohnort: Kerpen
- Hat sich bedankt: 1003 Mal
- Danksagung erhalten: 789 Mal
Hi Juri,
super Ansatz! Für meine Lösung nun adaptiert:
select test_last_Val * 0.2794 from (select difference(*) as test from (Select last(*) from "TS00123" WHERE time > now() - 2d GROUP BY time(1d) limit 2))
Dabei ist in der TS00123 dann als Rohdaten der mit jedem Puls steigende neue Zählerstand.
Aber gestern habe ich dann mit Hilfe des Query-Analysers den nächsten Klopfer gefunden
Hier mal die Dateninfo zu der o.g. Query:
Man achte auf die Uhrzeit. Nun habe ich gestern Nacht so lange rumgezaubert, dass ich um kurz nach Mitternacht die Query aufgerufen habe. Der Effekt: In der Zeitspanne zwischen 00:00 und 01:00 schießt die Abfrage allen ernstes daneben.
Nicht das ich jetzt grundsätzlich zischen 00:00 und 01:00 verlässlich die Info bräuchte wieviel es am Vortag geregnet hat, aber damit hat der Ansatz zumindest diese technische Schwäche. Und so richtig intuitiv.....
Wenn ich mir den Standardweg von Grafana anschaue, dann ist die Basis da ja recht einfach zusammenklickbar. Im Timepicker "Yesterday" und in den "Query options" als "Min intervall" "1d" eingetragen. Dann sieht das mit der im Querybuilder zusammengeklickten Abfrage dann so aus:
Über den Query-Analyser sehe ich dann, was Grafana daraus zaubert:
Also da rechnet sich Grafana konkret die richtigen Zeiten zurecht und geht dann damit an die Influx-DB und bekommt auch (heute früh geprüft) gesichert in der Zeit zwischen 00:00 und 01:00 die korrekten Ergebnisse.
Dazu dann mal folgende Screenshots vom "www.epochconverter.com"
und D.h. Grafana greift da noch korrigierend ein und berücksichtigt Zeitzonen, etc.
Aber wenn ich den Komfort beim Bau der Queries haben will dann kann ich eben die statischen und dynamischen Elemente nicht einfach mischen.
Damit wären wir ja auch wieder beim Basisthema des Threads angekommen... Ich hatte ja ursprünglich die Hoffnung, dass ich mir irgendwie die für die zeitlich Abgrenzung erforderlichen beiden Uhrzeitwerte völlig losgelöst in einer Variablen zusammenbauen kann, also irgendwie in der Art:
Zielvariable1=Today():Formatangabe
Zielvariable2=Today()-1d:Formatangabe
Aber das scheint wohl nicht wirklich zu gehen.
Aber ehrlich, ich bin schon mal sehr zufrieden mit dem erreichten Stand. Ohne eure Hilfe wäre ich ja nie und nimmer soweit gekommen.
Besten Dank
dafür.
Beste Grüße
Jens
super Ansatz! Für meine Lösung nun adaptiert:
select test_last_Val * 0.2794 from (select difference(*) as test from (Select last(*) from "TS00123" WHERE time > now() - 2d GROUP BY time(1d) limit 2))
Dabei ist in der TS00123 dann als Rohdaten der mit jedem Puls steigende neue Zählerstand.
Aber gestern habe ich dann mit Hilfe des Query-Analysers den nächsten Klopfer gefunden

Hier mal die Dateninfo zu der o.g. Query:
Man achte auf die Uhrzeit. Nun habe ich gestern Nacht so lange rumgezaubert, dass ich um kurz nach Mitternacht die Query aufgerufen habe. Der Effekt: In der Zeitspanne zwischen 00:00 und 01:00 schießt die Abfrage allen ernstes daneben.
Nicht das ich jetzt grundsätzlich zischen 00:00 und 01:00 verlässlich die Info bräuchte wieviel es am Vortag geregnet hat, aber damit hat der Ansatz zumindest diese technische Schwäche. Und so richtig intuitiv.....
Wenn ich mir den Standardweg von Grafana anschaue, dann ist die Basis da ja recht einfach zusammenklickbar. Im Timepicker "Yesterday" und in den "Query options" als "Min intervall" "1d" eingetragen. Dann sieht das mit der im Querybuilder zusammengeklickten Abfrage dann so aus:
Über den Query-Analyser sehe ich dann, was Grafana daraus zaubert:
Also da rechnet sich Grafana konkret die richtigen Zeiten zurecht und geht dann damit an die Influx-DB und bekommt auch (heute früh geprüft) gesichert in der Zeit zwischen 00:00 und 01:00 die korrekten Ergebnisse.
Dazu dann mal folgende Screenshots vom "www.epochconverter.com"
und D.h. Grafana greift da noch korrigierend ein und berücksichtigt Zeitzonen, etc.
Aber wenn ich den Komfort beim Bau der Queries haben will dann kann ich eben die statischen und dynamischen Elemente nicht einfach mischen.
Damit wären wir ja auch wieder beim Basisthema des Threads angekommen... Ich hatte ja ursprünglich die Hoffnung, dass ich mir irgendwie die für die zeitlich Abgrenzung erforderlichen beiden Uhrzeitwerte völlig losgelöst in einer Variablen zusammenbauen kann, also irgendwie in der Art:
Zielvariable1=Today():Formatangabe
Zielvariable2=Today()-1d:Formatangabe
Aber das scheint wohl nicht wirklich zu gehen.
Aber ehrlich, ich bin schon mal sehr zufrieden mit dem erreichten Stand. Ohne eure Hilfe wäre ich ja nie und nimmer soweit gekommen.
Besten Dank

Beste Grüße
Jens
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
timberwolf168 | (2600er) | VPN offen | Reboot nach Vereinbarung |
timberwolf1699 | (3500XL) | VPN offen | Reboot jederzeit |
wiregate1250 |
-
- Reactions:
- Beiträge: 916
- Registriert: So Aug 12, 2018 9:12 am
- Hat sich bedankt: 115 Mal
- Danksagung erhalten: 251 Mal
Hallo Jens,blaubaerli hat geschrieben: ↑Do Okt 29, 2020 9:50 pm
Aber gestern habe ich dann mit Hilfe des Query-Analysers den nächsten Klopfer gefunden
29-10-_2020_21-10-13.jpg
Man achte auf die Uhrzeit. Nun habe ich gestern Nacht so lange rumgezaubert, dass ich um kurz nach Mitternacht die Query aufgerufen habe. Der Effekt: In der Zeitspanne zwischen 00:00 und 01:00 schießt die Abfrage allen ernstes daneben.
Nicht das ich jetzt grundsätzlich zischen 00:00 und 01:00 verlässlich die Info bräuchte wieviel es am Vortag geregnet hat, aber damit hat der Ansatz zumindest diese technische Schwäche. Und so richtig intuitiv.....
die beiden SQl-Statements, siehe unten, liefern den gleichen Wert zurück, also sind sie richtig und es liegt nicht an der SQL-Abfrage

hartkodierte Datumsangabe
Select sum(*) from "TS00018" WHERE time >= '2020-10-29T00:00:00Z' AND time < '2020-10-29T23:59:59Z' GROUP BY time(1d)
dynamisch abgeleitete Datumsangabe
select last(*) from (Select sum(*) from "TS00018" WHERE time > now() - 2d GROUP BY time(1d) limit 2)
sondern, das ist nur meine Vermutung, liegt es an der grafanaspezifischen Dashboard-Einstellung "Timezone".
Wahrscheinlich hast du "Default" drin, muss aber "UTC" sein.
Timezone "Default" Timezone "UTC" MfG Juri
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
TWS 2400 ID: 69 + PBM ID: 728 + TP-UART, VPN offen, Reboot erlaubt
-
- Reactions:
- Beiträge: 2680
- Registriert: Sa Sep 15, 2018 10:26 am
- Wohnort: Kerpen
- Hat sich bedankt: 1003 Mal
- Danksagung erhalten: 789 Mal
Hi Juri,
ich sehe schon, du bist da ja echt fitt. Ich komme allerdings frühestens morgen abend zum vernünftigen Test.
Danke schon mal.
Beste Grüße
Jens
ich sehe schon, du bist da ja echt fitt. Ich komme allerdings frühestens morgen abend zum vernünftigen Test.
Danke schon mal.
Beste Grüße
Jens
timberwolf168 | (2600er) | VPN offen | Reboot nach Vereinbarung |
timberwolf1699 | (3500XL) | VPN offen | Reboot jederzeit |
wiregate1250 |