FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jogi am 02 Januar 2018, 19:20:36

Titel: Temperatur vergleichen mit OldValue - nur bei state oder auch anders?
Beitrag von: Jogi am 02 Januar 2018, 19:20:36
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
Titel: Antw:Temperatur vergleichen mit OldValue - nur bei state oder auch anders?
Beitrag von: viegener am 02 Januar 2018, 19:36:53
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