Per EXEC Mittelwerte aus InfluxDB holen...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Horschie
Beiträge: 21
Registriert: 4. Aug 2019 16:27
Answers: 0

Per EXEC Mittelwerte aus InfluxDB holen...

Beitrag von Horschie »

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

Benutzeravatar
udo1toni
Beiträge: 15264
Registriert: 11. Apr 2018 18:05
Answers: 245
Wohnort: Darmstadt

Re: Per EXEC Mittelwerte aus InfluxDB holen...

Beitrag von udo1toni »

Warum? Wenn Du die Daten mit influxdb persistierst, solltest Du den Mittelwert auch einfach über die Persistence auslesen können

Code: Alles auswählen

Wetter_THD_CurTemp.averageSince(now.minusMinutes(15),"influxdb")
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

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)
erhalten, das vereinfacht es, den Wert auf (z.B.) eine Nachkommastelle zu begrenzen.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten