Hauptmenü

at Neustart möglich?

Begonnen von ingo46, 02 Dezember 2022, 18:10:05

Vorheriges Thema - Nächstes Thema

ingo46

Hallo,

mit
define n_al1 notify BW1:off define warn.delay at +00:10:00 set AlarmdFlag off
wird eine Warnstufe zurückgesetzt.

Meine Frage: Ist es möglich durch ein anderes Ereignis noch während des Ablaufs von "warn.delay" dieses neu zu starten? - d.h. wenn dieses Ereignis nach Minute 5 eintrifft, wird "AlarmFlag" erst nach Minute 15 auf "off" gesetzt. 

Ingo

bartman121

mit defmod kannst du dein warn.delay-at jederzeit modifizieren.

Defmod würde es aber auch anlegen falls es nicht existiert. Im Zweifelsfall vorher prüfen...

Grüße

roedert

Was hast du genau vor? Ist das nicht besser ein Fall für einen Watchdog?

ingo46

Hallo,

danke für eure Antworten.

Von einem vorherigen Projekt ist in jedem dem Raum ein Bewegungsmelder installiert. Jetzt der Plan: Wenn ich das Haus betrete, so bemerkt das Bewegungsmelder "BW1" und setzt für 10 Minuten "AlarmFlag" auf "on". Ich gehe jetzt z.B. in die Küche. Dort ist BW2. Das Signal soll jetzt die Zeit für "AlarmFlag" wieder auf 10 Minuten setzen, usw... Insgesammt gibt es 6 Bewegungsmelder.

Mit:
define warn.delay notify <motion> defmod mdOff at +00:10 set AlarmdFlag off
würde das für einen Bewegungsmelder funktionieren.

Das Problem ist, das verschiedene Bewegungsmelder die Zeit zurücksetzen sollen.

In C++ würde ich einen Zähler nehmen, der per Interrupt gesteuert wird - aber in Perl gibt es (?) keinen Interrupt.

roedert

#4
Meine Lösung wäre:

Step 1: Ein notify welches bei Bewegung irgendeines Melders Alarmflag auf "on" setzt
define alarm_on_nfy notify <Regex Bewegung irgendeines BWs> set AlarmFlag on

Step 2: Ein Watchdog der 10min nach dem letzen Auslösen irgendeines BWs das Alarmflag zurücksetzt
define alarm_off_wd watchdog <Regex für Bewegung irgendeines BWs> 00:10:00 SAME set AlarmFlag off
attr alarm_off_wd autoRestart 1


Genau mit diesem Konstrukt läuft bei mir die Lichtsteuerung im Flur der 4 Bewegungsmelder hat weil er so verwinkelt ist.

binford6000

define bwm.n notify BW(1|2|3|4|5|6):state:.motion set AlarmdFlag on-for-timer 600
AlarmdFlag mit attr useSetExtensions erweitern. Event an deine BWMs anpassen.
Der on-for-timer wird dann jeweils wieder auf 10 Minuten gestezt.

VG Sebastian

roedert

#6
Zitat von: binford6000 am 03 Dezember 2022, 10:29:37
Der on-for-timer wird dann jeweils wieder auf 10 Minuten gestezt.

Stimmt, die interne Funktion "on-for-timer" nutzen ist noch einfacher wenn es das AlarmFlag-device unterstützt.

binford6000

Zitatwenn es das AlarmFlag-device unterstützt.
Das habe ich dem AlarmdFlag-(dummy?!)-device mangels Informationen jetzt mal unterstellt ;D

ingo46

Hallo,

ich habe "die Sache" gerade getestet. Mein "Testsieger":

Zitat von: binford6000 am 03 Dezember 2022, 10:29:37
define bwm.n notify BW(1|2|3|4|5|6):state:.motion set AlarmdFlag on-for-timer 600
AlarmdFlag mit attr useSetExtensions erweitern.

...es läuft! Nur ohne eure Hilfe wäre ich nicht zu dieser Lösung gekommen.

Bei mir steht nur angepasst:
define n_aFlag notify BEW.(AZ|EZ|FU|KU|SZ|WZ):state:on|on-old.* set AlarmFlag on-for-timer 600

LG Ingo