Temperatur vergleichen mit OldValue - nur bei state oder auch anders?

Begonnen von Jogi, 02 Januar 2018, 19:20:36

Vorheriges Thema - Nächstes Thema

Jogi

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

viegener

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

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können