ReadingsVal liefert immer default wert

Begonnen von Phill93, 11 Februar 2017, 14:28:58

Vorheriges Thema - Nächstes Thema

Phill93

Hallo,

hab hier ein kleines Problem ich verwende "ReadingsVal" im Attribut "stateFormat" nur liefert es mit hier immer den Default Wert.

Hier der Raw des Geräts:
defmod dy_hz_bastelkeller dummy
attr dy_hz_bastelkeller alias Bastelkeller
attr dy_hz_bastelkeller group Heizung
attr dy_hz_bastelkeller icon sani_heating
attr dy_hz_bastelkeller room Bastelkeller
attr dy_hz_bastelkeller setList state:slider,6,0.5,30,1
attr dy_hz_bastelkeller stateFormat {sprintf("T: %.1f °C <br> H: %.1f %%", ReadingsVal("dy_hz_bastelkeller", "measured-temp",0), ReadingsVal("dy_hz_bastelkeller", "humidity",0))}
attr dy_hz_bastelkeller webCmd state

setstate dy_hz_bastelkeller T: 0.0 °C <br> H: 0.0 %
setstate dy_hz_bastelkeller 2017-02-11 14:26:51 desired-temp: 20.0
setstate dy_hz_bastelkeller 2017-02-11 14:26:41 humidity: 31
setstate dy_hz_bastelkeller 2017-02-11 14:26:51 measured-temp: 20.3
setstate dy_hz_bastelkeller 2017-02-11 14:26:51 state 20.0
setstate dy_hz_bastelkeller 2017-02-11 12:35:51 temperature: 20.4


Finde den Fehler nicht. Was mache ich falsch?

Gruß
Phill93

Thorsten Pferdekaemper

Hi,
gib mal ein list statt ein raw.
Gruß,
   Thorsten
FUIP

Phill93

Hallo Thorsten,

was meinst du mit list?

Gruß
Phill93

betateilchen

Funktioniert bei mir einwandfrei.


defmod dy_hz_bastelkeller dummy
attr dy_hz_bastelkeller stateFormat {sprintf("T: %.1f °C <br> H: %.1f %%", ReadingsVal("dy_hz_bastelkeller", "measured-temp",0), ReadingsVal("dy_hz_bastelkeller", "humidity",0))}

setstate dy_hz_bastelkeller T: 20.3 °C <br> H: 31.0 %
setstate dy_hz_bastelkeller 2017-02-11 14:37:10 humidity 31
setstate dy_hz_bastelkeller 2017-02-11 14:37:29 measured-temp 20.3


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Zitat von: Phill93 am 11 Februar 2017, 14:34:41was meinst du mit list?
Im Kommandofeld "list dy_hz_bastelkeller" eingeben.
Gruß,
   Thorsten
FUIP

Phill93

Hallo,

Entschuldigung das ich erst so spät schreibe.

Hier das list:

Internals:
   NAME       dy_hz_bastelkeller
   NR         39
   STATE      T: 0.0 °C <br> H: 0.0 %
   TYPE       dummy
   Readings:
     2017-02-11 15:20:32   desired-temp:   26.5
     2017-02-11 15:19:47   humidity:       31
     2017-02-11 15:19:57   measured-temp:  20.2
     2017-02-11 20:50:05   state           22.0
     2017-02-11 12:35:51   temperature:    20.4
Attributes:
   alias      Bastelkeller
   group      Heizung
   icon       sani_heating
   room       Bastelkeller
   setList    state:slider,6,0.5,30,1
   stateFormat {sprintf("T: %.1f °C <br> H: %.1f %%", ReadingsVal("dy_hz_bastelkeller", "measured-temp",0), ReadingsVal("dy_hz_bastelkeller", "humidity",0))}
   webCmd     state


Phill93

Benni

Es müsste aber doch eigentlich folgendes funktionieren:


attr dy_hz_bastelkeller stateFormat T: measured-temp °C H: humidity %

onkeloki

hallo habe ein ähnliches problem: deswegen mal hier als Antowrt und nicht als neues topic..

ich habe zwei Temperatursensoren die jeweils vor und Rücklauf meiner Heizung liefern. 
nun habe ich ein einen weiteren dummy erstellt um die Differenz von vor und Rücklauf an zu zeigen:

define dif.vl.rl dummy
attr dif.vl.rl stateFormat {ReadingsVal("HEIZUNG_B","temperature",0)-ReadingsVal("HEIZUNG_A","temperature",0)}


das device dif.vl.rl zeigt nun auch die richtige Differenz an..
doch die anzeige updatet nicht. (zeigt also nicht den aktuellen wert) sondern immer die differenz die bestand als stateFormat konfiguriert wurde.

kannst du mir sagen was ich machen muss dass sich die state anzeige von dif.vl.rl updated.. sobald sich etwas an HEIZUNG_A oder HEIZUNG_B ändert?
stehe da gerade auf dem Schlauch

Thorsten Pferdekaemper

Zitat von: Phill93 am 15 Februar 2017, 18:22:19Hier das list:
Also da verstehe ich jetzt auch nicht, was da falsch laufen könnte. Ersetze vielleicht mal das %.1f durch %s. Außerdem: Mal verbose hochsetzen und nachsehen, was so im Log steht.
Bennis Vorschlag hat auch was für sich.
Gruß,
   Thorsten
FUIP

Thorsten Pferdekaemper

Zitat von: onkeloki am 16 Februar 2017, 09:58:29
hallo habe ein ähnliches problem: deswegen mal hier als Antowrt und nicht als neues topic..
Nein, das ist ein anderes Problem. stateFormat wird nur ausgewertet, wenn sich bei dem Device etwas ändert, in dem stateFormat definiert ist. Also Du müsstest z.B. per notify die beiden Readings in den Dummy übertragen und dann kannst Du mit stateFormat. ...oder direkt im notify die Differenz berechnen und das in den Dummy setzen.
Gruß,
   Thorsten
FUIP

onkeloki

Zitat von: Thorsten Pferdekaemper am 16 Februar 2017, 10:35:11
Nein, das ist ein anderes Problem. stateFormat wird nur ausgewertet, wenn sich bei dem Device etwas ändert, in dem stateFormat definiert ist. Also Du müsstest z.B. per notify die beiden Readings in den Dummy übertragen und dann kannst Du mit stateFormat. ...oder direkt im notify die Differenz berechnen und das in den Dummy setzen.
Gruß,
   Thorsten

danke... war mir nicht sicher ob man dem dummy auch beibringen kann das der sich automatisch updated...
ich define mir ein notify ;) das habe ich schon mal gemach da weiß ich wenigstens was passiert.. thx