[solved] Temperatur aus Logdatei mit Tablet UI darstellen

Begonnen von littlehamster, 03 Januar 2016, 19:48:46

Vorheriges Thema - Nächstes Thema

littlehamster

Hallo zusammen,

in einer Logdatei speicher ich die Temperatur und Luftfeuchtigkeit in mehreren Räumen und möchte diese nun in Thermostat-Widget mit der Tablet UI anzeigen. Obwohl das eigentlich ein Standardfall sein sollte, finde ich kein Beispiel an dem ich mein Szenario nachvollziehen kann.

In meiner FHEM-Config habe ich:

define S1Temperature dummy
define S0Temperature dummy
define S0Humidity dummy
define FileLog_AktuellerVerbrauch FileLog ./log/AktuellerVerbrauch.log S0Temperature|S1Temperature|S0Humidity


Das Logfile enthält z.B.

2016-01-03_19:31:12 S0Humidity sensor0_humidity 57
2016-01-03_19:31:12 S1Temperature sensor1_temperature 19.1
2016-01-03_19:31:12 S1Temperature sensor0_temperature 20.0


Wie bekomme ich jetzt ein Thermostat-Widget, das mir für den Sensor0 die Temperatur im Widget und die Luftfeuchtigkeit als kleine Zahl anzeigt? Testweise habe ich mir ein Label angelegt

<div data-type="label" data-device="S1Temperature"></div>

das natürlich nicht den numerischen Wert sondern den String
Zitatsensor1_temperature 19.1
anzeigt.

Vorab vielen Dank!

StefanJoe

Ich habe das so realisiert:

<div data-type="thermostat"
      data-device="S1Temperature"
      data-get="temperature"
      data-step="0.1"
      class="cell small readonly">
</div>

Es kann sein das du den Zustand von S1Temperature noch verarbeiten muss, dann hilft z.B. ein
      data-get-value="4:S1Temperature.*::"

littlehamster

Hallo StefanJoe,

vielen Dank für deinen Hinweis. Leider hat mich das nicht weiter gebracht. Ich hatte versuchsweise auch schon

data-device="S1Temperature"

versucht. Dafür bekomme ich aber immer den Wert 10 im Thermostat angezeigt. Was sich mir aus der Doku nicht erschließt sind die Optionen "data-get" und "data-get-value".

Wozu braucht man noch data-get? Es ist doch breits klar, dass die Daten aus S1Temperature kommen sollen.
Die Option "data-get-value" verstehe ich so, dass ich dort einen RegEx angeben kann, um die Daten aus S1Temperature (bei mir ein dummy) so zu bearbeiten, dass ich die benötigten Infos bekomme. In S1Temperature steht z.B. "sensor1_temperature 19.0". Ich würde daher erwarten, dass ich hier data-get-value="1:sensor1_temperature.*::" verwenden muss (zweites Feld aus "sensor1_temperature 19.0"). Du schlägst vor die Logzeile zu parsen. Egal ob ich deine oder meine Variante in data-get-value eintrage. Es ändert sich nichts.

StefanJoe

Versuch mal:

<div data-type="thermostat"
      data-device="S1Temperature"
      data-get="sensor1_temperature"
      data-step="0.1"
      data-get-value="1:S1Temperature.*::"
      class="cell small readonly">
</div>
Wobei ich glaube das statt 1: dort eine 2: hinmuss ...

littlehamster

Hallo StefanJoe,

vielen Dank für den Tipp. Leider hat mir das aber nicht weiter geholfen  :(

Gruß
Littlehamster

StefanJoe

Hast du mal nachgeschaut ob das Device überhaupt normale readings im FHEM hat ?

littlehamster

Hallo StefanJoe,

wenn ich auf den betreffenden Sensor in FHEM klick wird mir Folgendes unter Readings angezeigt

state sensor1_temperature 19.1 2016-01-03 21:50:11

StefanJoe

ok, wenn der Dateninhalt unter "state" steht und nicht als Dateninhalt des Readings "temperatur", dann musst vermutlich einiges anpassen.
Ich habe meine Dateninhalte unter Readings als "temperature Wert".

Woher und wie bekommst denn die Werte überhaupt ?

littlehamster

Hallo StefanJoe,

die Werte kommen bei mir von einem Custom-Sensor, der seine Werte in ein Logfile schreibt. Mit einem Script lese ich das Log periodisch und setze über Telnet den Wert. Z.B. durch

set S0Temperature sensor0_temperature ${S0_TEMPERATURE}\r

Nach deinem Hinweis habe ich mir die Dokumentation nochmal angesehen. Ich vermute mal, dass sich mein Problem gelöst hat, wenn ich statt "set" "setreading" benutze.

...so ist das halt wenn man rumpfuscht  ::)

Leider habe ich heute keine Zeit die Änderungen zu probieren, werde das aber zeitnah erledigen.

Nochmals vielen Dank für die Hilfe!

Gruß
LittleHamster

littlehamster

Das Problem war die Anbindung meines Sensors. Statt die Werte mit

set S0Temperature sensor0_temperature ${S0_TEMPERATURE}

hätte ich natürlich

setreading S0Temperature sensor0_temperature ${S0_TEMPERATURE}

verwenden müssen. Seit der Umstellung funktioniert alles wie bereits im Thread beschrieben.

Vielen Dank für die Hilfe!