Hallo,
ich möchte eine Temperatur überwachen und bei sinkendem Wert einen Befehl ausführen.
Dazu bin ich bei meiner Recherche auf OldValue gestoßen.
Also flugs folgendes umgesetzt:
define KWZ_DOIF1d DOIF ([Kaltwasserzufluss] < OldValue("Kaltwasserzufluss"))(set Wasser_Keller on) DOELSEIF ([Kaltwasserzufluss] > OldValue("Kaltwasserzufluss"))(set Wasser_Keller off)
Funktioniert aber nicht, weil OldValue (das weiß ich nachdem ich dann recherchiert habe) scheinbar nur auf state zugreift und state bei meinem Device
state
Tem: 11.50
liefert, was kein numerischer Wert ist.
Zum Test habe ich mir ein dummy gebaut und das mit einem numerischen Wert befüllt. Dann funktioniert der obige Befehl einwandfrei.
Also habe ich -um einen numerischen Wert zu bekommen- folgendes probiert:
define KWZ_DOIF1d DOIF ([Kaltwasserzufluss:Temperature] < OldValue("Kaltwasserzufluss:Temperature"))(set Wasser_Keller on) DOELSEIF ([Kaltwasserzufluss:Temperature] > OldValue("Kaltwasserzufluss:Temperature"))(set Wasser_Keller off)
Funktioniert aber auch nicht. Zwar ist
Kaltwasserzufluss:Temperature
ein numerischer Wert, aber ein Reading. Und wenn ich alles richtig verstanden habe, kann OldValue nur auf state zugreifen und nicht auf eine Reading.
Nun meine Fragen:
Ist das was ich geschildert habe so korrekt?
Zweite Frage: Wie kann ich -wenn meinen Annahmen korrekt sind- diesen Temperaturvergleich elegant lösen?
Ich könnte mir zwar ein dummy bauen und das mit dem Reading befüllen und das dann mit OldValue vergleichen, aber vielleicht geht es ja einfacher. Für Tipps bin ich dankbar.
Gruß,
Jogi
Als einfachste Möglichkeit fällt mir spontan ein:
userReadings - hier könntest Du ein difference reading anlegen und dann auf einen negativen Wert im DOIF reagieren