NEWS
Werte aus influxDB auslesen
-
Hallo zusammen,
für eine aktuelle Idee von mir benötige ich eine maximal-Temperatur innerhalb der letzten 10 Minuten. Geloggt wird die Temperatur mit Hilfe einer InfluxDB. Mein Javascript schaut aktuell so aus (beispielhaft jetzt mit der RPI.temp):
`var end = new Date().getTime(); var max = 0; sendTo('influxdb.0', 'getHistory', { id: 'rpi2.0.temperature.soc_temp', options: { start: end - 600000, end: end, aggregate: 'none' // or 'none' to get raw values } }, function (result) { for (var i = 0; i < result.result.length; i++) { console.log(result.result[i].val + ' ' + new Date(result.result[i].ts).toISOString()); if (result.result[i].val > max) { max = result.result[i].val; } } console.log(max) });` Als Ergebnis erhalte ich folgendes: ` ~~[quote]~~14:41:34.323 info javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:31:30.218Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:32:30.671Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:33:31.091Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:34:31.561Z 14:41:34.324 info javascript.0 script.js.Skript_1: 48.31 2019-01-30T13:35:31.970Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:36:32.417Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:37:32.821Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:38:33.149Z 14:41:34.324 info javascript.0 script.js.Skript_1: 47.24 2019-01-30T13:39:33.455Z 14:41:34.325 info javascript.0 script.js.Skript_1: 47.77 2019-01-30T13:40:33.862Z 14:41:34.325 info javascript.0 script.js.Skript_1: 48.31 ` ` Soweit passt das eigentlich, nur verstehe ich nicht wieso der Wert von 13:31:30 in meinem "result" enthalten ist?! Die Abfrage war ja um 14:41:34 für die letzten 10min. Da sollte doch 13:31:30 nicht dabei sein, oder?[/i][/i][/i][/i] -
Das <u>könnte</u> an "47.77 2019-01-30T13:31:30.218Z" liegen. "Z" steht für Zulu, oder genauer gesagt für Zeitzone UTC +/-0. Nur sind wir UTC +1
Deine ganzen Werte sind nämlich um eine Stunde verschoben. Musst du also beim Schreiben in die InfluxDB berücksichtigen (falls dort falsch), oder beim Script berücksichtigen.
-
Stell den influxdb adapter mal auf debug, und schicke dann getHistory … dann solltest DU im Log sehen was er genau tut. Mach mal.
Die Vermutung ist das das Absicht ist weil zur Grafischen Darstellung immer ein Wert kurz vor dem ersten sinnvoll ist weil sonst die Darstellung blöd ist 8weil sie mitten im Graphen anfängt).
bedeutet für dich: Ignoriere einfach den ersten Wert
-
Ja das ist es. getHistory nimmt immer noch einen Wert vor und nach dem definierten Zeitraum hinzu.
Indem ich dann einfach erst bei i = 1 anfange passt das für mich aber.
Nun habe ich aber noch ein anderes Problem: Habe den Code jetzt in eine Blockly-Funktion mit Rückgabewert gepackt und dafür ans Ende folgendes noch hinzugefügt:
return max;Jedoch ist dieser Rückgabewert immer 0, obwohl eine Zeile darüber (jedoch steht das noch innerhalb der sendTo-Anweisung)````
console.log(max); -
ok, das hab ich verstanden. Aber mein Hauptscript ist mit Blockly erstellt, und damit weiß ich nicht wirklich wie ich dieses Workaround hinbekommen soll?! Oder gibt es z.B. eine Möglichkeit innerhalb des "Javascript-Funktions"-Block eine "Blockly-Variable" zu verändern?
-
ok, das hab ich verstanden. Aber mein Hauptscript ist mit Blockly erstellt, und damit weiß ich nicht wirklich wie ich dieses Workaround hinbekommen soll?! Oder gibt es z.B. eine Möglichkeit innerhalb des "Javascript-Funktions"-Block eine "Blockly-Variable" zu verändern?