Hallo,
ich brauche bspw die Mittelwerte der aktuellen Temperatur in den letzten 15 Minuten.
Diesen bekommne ich per EXEC-Binding
influx -database 'openhab_db' -execute "SELECT MEAN(*) FROM Wetter_THD_CurTemp WHERE time > now()-15m AND time < now()"
funktioniert auch soweit einwandfrei.
Das Ergebnis ist wie folgt:
name: Wetter_THD_CurTemp
time mean_value
---- ----------
1600204265433182577 21.450000000000003
Aber wie bekomme ich jetzt den Temperaturwert in ein Item.
Ich muss dafür entweder die Ausgabe umformatieren oder mit substringbetween etc.
den Text zerlegen. Letzteres habe ich versucht, will aber nicht so recht.
Kann mir jmd helfen oder hat vzgw .eine effizientere Idee?
Viele Grüße
Christoph
Per EXEC Mittelwerte aus InfluxDB holen...
-
- Beiträge: 21
- Registriert: 4. Aug 2019 16:27
- udo1toni
- Beiträge: 15264
- Registriert: 11. Apr 2018 18:05
- Wohnort: Darmstadt
Re: Per EXEC Mittelwerte aus InfluxDB holen...
Warum? Wenn Du die Daten mit influxdb persistierst, solltest Du den Mittelwert auch einfach über die Persistence auslesen können
Das exec Binding liefert die Ausgabe des gesendeten Befehls zurück. Die einfachste Methoe, die mir dazu einfällt, ist mit Experimenten verbunden. Ist die ausgegebene Anwort tatsächlich die exakte Ausgabe (also identisch auf Binärebene)? Dann könntest Du mit
den letzten Teilstring erhalten (also 21.450000000000003) (wobei Item das String Item ist, welches mit dem Exec Output Channel verlinkt ist.
Es kann aber sein, dass in Wirklichkeit weitere Leerzeichen in der Ausgabe enthalten sind (das wäre dann der experimentelle Teil)
Einen Zahlenwert kannst Du ansclhießend mit einem
erhalten, das vereinfacht es, den Wert auf (z.B.) eine Nachkommastelle zu begrenzen.
Code: Alles auswählen
Wetter_THD_CurTemp.averageSince(now.minusMinutes(15),"influxdb")
Code: Alles auswählen
Item.state.toString.split("_").get(4)
den letzten Teilstring erhalten (also 21.450000000000003) (wobei Item das String Item ist, welches mit dem Exec Output Channel verlinkt ist.
Es kann aber sein, dass in Wirklichkeit weitere Leerzeichen in der Ausgabe enthalten sind (das wäre dann der experimentelle Teil)
Einen Zahlenwert kannst Du ansclhießend mit einem
Code: Alles auswählen
Float::parseFloat(theString)
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet