Hallo zusammen,
ich stelle über ein notify meinen Anwesenheitsstatus auf "anwesend", wenn mein Handy "present" ist.
define Anwesenheit notify Handy:present set HomeStatus on
Unglücklicherweise wird mit diesem notify mein HomeStatus alle 60 Sekunden auf on gestellt, weil das Presence Modul alle 60 Sekunden per lan-ping die Anwesenheit meines Handys prüft. Ich kann also nicht den HomeStatus manuell auf off stellen und in Ruhe das Haus verlassen, weil innerhalb der nächsten 60 Sekunden der HomeStatus vom notify automatisch wieder auf on gestellt wird.
Wie muß der define lauten, damit nur bei einem Event-Wechsel von "absent" nach "present" das notify ausgeführt wird?
Vielen Dank.
Grüße Mave
Wenn es nur um das Handy geht, könntest du event-on-change-reading nutzen, um schon gar keine weiteren events für dasn "Handy"-Device zu generieren.
Ansonsten kann man auch mit einer perl-if-Abfrage im notify nach oldValue prüfen, ob das mit dem $EVENT übereinstimmt, und dann den HomeStatus nur ändern, wenn notwendig.
Ansonsten könnte auch ein watchdog helfen (=>commandref).
Wenn du manuell eingreifen willst (Handy dalassen, "Schalter" umlegen um "abwesend" einzustellen, obwohl das Handy da ist) wäre eh' die Frage, wie das die Automatik mitbekommen soll. Ginge z.B. mit einem reading beim notify (oder einem eigenen Dummy), das (zusätzlich im bzw.) mit if geprüft wird. Oder du kannst das notify für die Zeit deaktivieren, oder, oder, oder...
Gruß, Beta-User
Wie der Vorredner geschrieben hat, im Presence Device das attr event-on-change-reading setzen, also:
attr Handy event-on-change-reading presence,state
Alternativ für dein Notify (dann kommen die Events aber immer noch):
define Anwesenheit notify Handy:present set HomeStatus:FILTER=state!=on on
Super, vielen Dank Euch beiden.