DOIF verzögern und nur auslösen, wenn immer noch Bedingung erfüllt ist.

Begonnen von der_da, 29 April 2016, 12:40:34

Vorheriges Thema - Nächstes Thema

der_da

Ich habe folgendes DOIF
([Sensor1] ne "geschlossen" and [Anwesenheit] eq "off") (set Alarmdummy on)
DOELSEIF
([Sensor2] ne "geschlossen" and [Anwesenheit] eq "off") (set Alarmdummy on)
DOELSEIF
([Sensor3] ne "geschlossen" and [Anwesenheit] eq "off") (set Alarmdummy on)

attr wait 90:90:0


Ziel ist es, Alarm auszulösen, wenn keiner anwesend ist und Sensoren ausgelöst werden. Bei Sensor 3 soll der Alarm sofort ausgelöst werden, bei den Sensoren 1 und 2 soll 90 Sekunden gewartet werden, bevor der Alarm ausgelöst wird. Sollte innerhalb der 90 Sekunden die Anwesenheit ihren Status von off auf on ändern, soll KEIN Alarm ausgelöst werden. Leider wird in jedem Fall Alarm ausgelöst (bei Sensor 1 und 2 eben nur um 90 Sekunden verzögert). Habe ich da etwas falsch verstanden. Theoretisch sollte das doch mit DOIF allein machbar sein. Das es das Modul Treshhold gibt, weiß ich, dachte aber verstanden zu haben, das man auch ohne auskäme.

Per

Zitat von: der_da am 29 April 2016, 12:40:34Habe ich da etwas falsch verstanden.
In deinem DOIF-Konstrukt wird das "on" nicht abgefragt, daher wird auch nix zurückgesetzt.

der_da

Ah - OK,

also sowas wie
DOELSEIF
([Anwesenheit] eq "on") (tu gar nix)

Kann ich (tu gar nix) auch weg lassen?

Per

Zweimal "ja".
Wg. gleicher wait-Dauer kannst du Sensor1 und Sensor2 mittels or zusammenfassen.