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!
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.*::"
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.
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 ...
Hallo StefanJoe,
vielen Dank für den Tipp. Leider hat mir das aber nicht weiter geholfen :(
Gruß
Littlehamster
Hast du mal nachgeschaut ob das Device überhaupt normale readings im FHEM hat ?
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
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 ?
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
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!