Hallo zusammen,
wie kann ich am besten eine Aktion triggern, wenn sich der Wert (desired-temp) von meinem Homematic Wandthermostat ändert (nicht updated)?
Derzeit bekomme ich jetzt unabhängig von Wertänderung eine Nachricht. Sehr wahrscheinlich durch die normalen Statusupdates:
defmod WT_WZ_notify_1 notify WT_WZ:desired-temp:..* {\
fhem("set Pushover_Client msg 'Heizung WZ wurde geändert' 'Neuer Wert [WT_WZ_Climate:desired-temp] Grad.'");;\
}
attr WT_WZ_notify_1 room Heizung,Wohnzimmer
Wie kann ich den aufrufenden Wert aus dem notify mit dem derzeitigen desired-temp vergleichen?
Quasi:
if (wert_aus_notify != [WT_WZ_Climate:desired-temp]
{unterschiedliche Werte}
else
{gleiche Werte}
EDIT: Evtl ging es ja auch mit einem DoIf (besser)?
Viele Grüße
Thomas
if ($EVTPART1 != ReadingsVal($NAME,'desired-temp',200)
{unterschiedliche Werte}
else
{gleiche Werte}
Vielen lieben Dank für die sehr schnelle Antwort!!
Grüße
Thomas
Hey,
das klappt doch nicht so wie gedacht. So wie es aussieht habe ich momentan immer den gleichen Wert (Wert aus dem notify und dem aus dem reading).
Ich bräuchte den den Wert ReadingsVal("WT_WZ_Climate","desired-temp",200)) bevor das notify den Wert aktualisiert
WT_WZ_Climate:desired-temp:..* {
if ($EVTPART1 != ReadingsVal("WT_WZ_Climate","desired-temp",200))
{
fhem("set Pushover_Client msg 'Heizung WZ wurde geändert' 'Neuer Wert [WT_WZ_Climate:desired-temp] Grad.'");
}
else {
fhem("set Pushover_Client msg 'Heizung WZ wurde nicht geändert' 'Gleicher Wert [WT_WZ_Climate:desired-temp] Grad.'");
}
}
Das Notify ändert doch den Wert gar nicht.
Aber ich weiß was du meinst.
Setze das Attribut oldReadings mit dem Wert desired-temp und ändere den Funktionsnamen von ReadingsVal nach OldReadingsVal.
es ist doch viel sinnvoller das attr event-on-change-reading im thermostat zu nutzen. dann gibt es nur events bei änderung, wodurch auch das notify deutlich weniger getriggert und abgearbeitet werden muss.
event-on-change würde ich sogar grundsätzlich bei allen devices empfehlen.
@frank:
Das hatte ich schon gesetzt:
Zitatattr WT_WZ_Climate event-on-change-reading .*
Was allerdings komisch ist, ist die Tatsache, daß
- bei einer Wertänderung der else-Zweig
- bei gleichem Wert der if-Zweig
ausgeführt wird.
Hab jetzt die Nachrichtentexte einfach getauscht und jetzt passt es, auch wenn ich es leider nicht verstehe. Vielleicht ist das "!=" nicht korrekt.
Grüße
Thomas
ZitatDas hatte ich schon gesetzt:
dann muss es zusätzlich weitere attribute oder mechanismen bei dir geben, wodurch auch events bei gleiheit generiert werden.