DOIF zur Haustürverriegelung mit Homematic Keymatic HM-SEC-KEY-S

Begonnen von neo_28, 05 Mai 2017, 12:53:04

Vorheriges Thema - Nächstes Thema

neo_28

Hallo zusammen,

ich habe seit einigen Wochen ein Problem mit meiner DOIF-Anweisung zur Haustürverriegelung. Das merkwürdige ist, dass sie davor über ein Jahr lang einwandfrei funktioniert hat. :-\

Es handelt sich um folgende Anweisung:

define di_EG.FL_Tuerschloss_Autoverriegelung DOIF
([HM.EG.FL_Tuerschloss:lock] eq "unlocked" and [20:55-07:00]) (set HM.EG.FL_Tuerschloss lock)
DOELSEIF ([Balken] eq "absent" and [HM.EG.FL_Tuerschloss:lock] eq "unlocked") (set HM.EG.FL_Tuerschloss lock) \
DOELSEIF ([Balken] eq "gone" and [HM.EG.FL_Tuerschloss:lock] eq "unlocked") (set HM.EG.FL_Tuerschloss lock)\
DOELSE
attr di_EG.FL_Tuerschloss_Autoverriegelung do always
attr di_EG.FL_Tuerschloss_Autoverriegelung group Türen und Fenster
attr di_EG.FL_Tuerschloss_Autoverriegelung icon security
attr di_EG.FL_Tuerschloss_Autoverriegelung room 0.02_Erdgeschoss,9.02_Steuerung
attr di_EG.FL_Tuerschloss_Autoverriegelung wait 300:300:300


Die Anweisung soll dafür sorgen, dass die Keymatic zwischen 21:00 und 07:00 verriegelt und beim Abwesenheitszustand über das RESIDENTS-Modul (Balken) soll ebenfalls verriegelt werden.

Wie gesagt, dass hat so über ein Jahr wunderbar funktioniert... Seit ein paar Wochen wird zwar um 21:00 verriegelt, wenn jedoch danach zwischen 21:00 und 07:00 Uhr die Tür geöffnet oder entriegelt wurde, wird sie nicht mehr verriegelt.

Das DOIF setzt zwar nach der Zustandsänderung der keymatic auf den wait_timer:cmd_1, dieser wird aber nach kurzer Zeit durch cmd_4 überschrieben.

Wenn ich das DOELSE rausnehme und das Attribut do always setze funktioniert es zwar, aber das Log wird mir dann alle 5 Minuten zugemüllt....

Hat sich in den letzten Wochen dahingehend etwas in dem DOIF-Modul geändert?

Viele Grüße

Neo

Damian

Zitat von: neo_28 am 05 Mai 2017, 12:53:04
Hallo zusammen,

ich habe seit einigen Wochen ein Problem mit meiner DOIF-Anweisung zur Haustürverriegelung. Das merkwürdige ist, dass sie davor über ein Jahr lang einwandfrei funktioniert hat. :-\

Es handelt sich um folgende Anweisung:

define di_EG.FL_Tuerschloss_Autoverriegelung DOIF
([HM.EG.FL_Tuerschloss:lock] eq "unlocked" and [20:55-07:00]) (set HM.EG.FL_Tuerschloss lock)
DOELSEIF ([Balken] eq "absent" and [HM.EG.FL_Tuerschloss:lock] eq "unlocked") (set HM.EG.FL_Tuerschloss lock) \
DOELSEIF ([Balken] eq "gone" and [HM.EG.FL_Tuerschloss:lock] eq "unlocked") (set HM.EG.FL_Tuerschloss lock)\
DOELSE
attr di_EG.FL_Tuerschloss_Autoverriegelung do always
attr di_EG.FL_Tuerschloss_Autoverriegelung group Türen und Fenster
attr di_EG.FL_Tuerschloss_Autoverriegelung icon security
attr di_EG.FL_Tuerschloss_Autoverriegelung room 0.02_Erdgeschoss,9.02_Steuerung
attr di_EG.FL_Tuerschloss_Autoverriegelung wait 300:300:300


Die Anweisung soll dafür sorgen, dass die Keymatic zwischen 21:00 und 07:00 verriegelt und beim Abwesenheitszustand über das RESIDENTS-Modul (Balken) soll ebenfalls verriegelt werden.

Wie gesagt, dass hat so über ein Jahr wunderbar funktioniert... Seit ein paar Wochen wird zwar um 21:00 verriegelt, wenn jedoch danach zwischen 21:00 und 07:00 Uhr die Tür geöffnet oder entriegelt wurde, wird sie nicht mehr verriegelt.

Das DOIF setzt zwar nach der Zustandsänderung der keymatic auf den wait_timer:cmd_1, dieser wird aber nach kurzer Zeit durch cmd_4 überschrieben.

Wenn ich das DOELSE rausnehme und das Attribut do always setze funktioniert es zwar, aber das Log wird mir dann alle 5 Minuten zugemüllt....

Hat sich in den letzten Wochen dahingehend etwas in dem DOIF-Modul geändert?

Viele Grüße

Neo
Möglicherweise hat sich bei den angegebenen Devices etwas geändert. Offenbar gibt es jetzt einen Trigger, der dazu führt, dass die DOIF-Fälle nicht greifen und der DOELSE-Fall zuschlägt.

Das musst du genau durch Event-Auswertung analysieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

alru

Wenn die Tür nach 21:00 manuell geöffnet wird, dann vermute ich mal, dass der Status auf "unlocked (uncertain)" steht. Damit würde der cmd_1 nicht greifen.
Gruß,

Stefan
(Raspi 3B / HM-LGW / HomeMatic / MySensors)

Damian

Zitat von: alru am 05 Mai 2017, 21:26:57
Wenn die Tür nach 21:00 manuell geöffnet wird, dann vermute ich mal, dass der Status auf "unlocked (uncertain)" steht. Damit würde der cmd_1 nicht greifen.

dann musst du einfach statt auf eq "unlocked" auf =~ "unlocked" abfragen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF


Per

Statt auf
[HM.EG.FL_Tuerschloss:lock] eq "unlocked"
auf
["HM.EG.FL_Tuerschloss":lock:"unlocked"]
testen.
Wobei ich mir mit der Position und Anzahl der Anführungszeichen nicht sicher bin.

Damian

Zitat von: Per am 07 Mai 2017, 07:38:36
Statt auf
[HM.EG.FL_Tuerschloss:lock] eq "unlocked"
auf
["HM.EG.FL_Tuerschloss":lock:"unlocked"]
testen.
Wobei ich mir mit der Position und Anzahl der Anführungszeichen nicht sicher bin.

["HM.EG.FL_Tuerschloss:lock: unlocked"]


Der erste Doppelpunkt ist ein Trennzeichen für DOIF (Trennzeichen für Device und Event), das zweite gehört zum Event.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

alru

Ich muss mich mit der Aussage

Zitat von: alru am 05 Mai 2017, 21:26:57
Wenn die Tür nach 21:00 manuell geöffnet wird, dann vermute ich mal, dass der Status auf "unlocked (uncertain)" steht. Damit würde der cmd_1 nicht greifen.

korrigieren. Da in dem DOIF das Reading "lock" abgefragt wird, kommt dort "unlocked (uncertain)" gar nicht vor. Hier steht - so habe ich es zumindest eben noch mal nachgesehen - nur ein "unlocked".
Im Reading "state" dagegen steht das "unlocked (uncertain)".
Gruß,

Stefan
(Raspi 3B / HM-LGW / HomeMatic / MySensors)