Ich wollte die Daten, die der ioBroker in der influxDB anlegt, in Node-RED auslesen und dachte mir in meiner Einfalt, dass das "mal so eben" geht. Leider gibt es da ein paar Fallstricke - und anscheinend fand ich nicht die richtigen Suchbegriffe, um hier oder bei Google die Lösung zu finden.
Ich bin einigermaßen vertraut mit SQL, aber bei influx ist die Philosphie komplett anders und ich stehe immer wieder mal auf dem Schlauch. Vielleicht kann ich hier mit einem kleinen Beitrag anderen eine lange Suche ersparen
Das Video hätte mir geholfen, aber ich fand es erst später: "Prescient Devices Inc." erklärt es bei YouTube in aller Kürze.
Worauf dort nicht eingegangen wird und was mir viel Kopfzerbrechen bereitet hat, ist die Angabe der Influx-Version. Ich habe hier eine V 1.8.3, also dachte ich mir, dass ich bei der Konfiguration der influx-Nodes eben [1.8-flux] auswählen muss. Leider wird danach eine einfache Query mit SELECT unmöglich, man muss dann "flux sprechen", eine mir völlig unverständliche Variante zur Abfrage.
Kurzum: unbedingt [1.x] auswählen:
Damit kann man dann wirklich einfache Abfragen machen wie z.B.
SELECT * FROM test
Wenn man auf die völlig abwegige Idee kommt, den letzten, also aktuellsten Eintrag auszulesen, macht man das so:
SELECT * FROM test ORDER BY DESC LIMIT 1
(Leider gibt es kein LAST oder ähnliches)
Ich habe hier ein paar Beispiele zum Rumspielen angelegt, so sieht das aus:
Im ersten Inject-Node setze ich als Value mit JSONata einen Zufallswert 0-10, das "measurement" lege ich auch hier fest und nicht im influxdb-out-Node.
Der Name der Database ist bei mir iobroker, das wird in bei der Konfiguration der DB eingetragen (s.o.).
Das Auslesen der Daten ist in der mittleren Zeile "dumm", es werden einfach alle ("*") Einträge ausgelesen, das Ergebnis ist ein Array von Objects.
In der unteren Zeile ist das intelligent, es wird nur der letzte Eintrag geholt und dann im payload (dem Ergebnis der Query), das erste Objekt und darin das Field "value" abgefragt ("msg.payload[0].value"), damit bekomme ich den Wert, den ich oben reingesteckt habe.
"value" ist der Standardname, der für dumm eingestellte payloads von influx gewählt wird. Wer andere fields möchte, findet Beispiele im o.g. Video.
Viel Erfolg!
P.S.: Vor dem Installieren des angehängten Flows, muss noch in der Palette "node-red-contrib-influxdb" installiert werden, oder passiert das automatisch??