nach verzögerter Auslösung Alarm zurück setzen

Begonnen von Muschelpuster, 19 November 2017, 15:25:50

Vorheriges Thema - Nächstes Thema

Muschelpuster

Moin zusammen,

Ich habe da seit einiger Zeit recht erfolgreich eine Lösung laufen, die ich aufbohren möchte. Seit dem Tod meines Vaters lebt meine Mutter alleine. Eigentlich wollte ich ihr einen Hausnotruf anschaffen, aber sie schafft bzw. will ja nicht einmal ihr schnurloses Telefon bei sich haben um Hilfe zu rufen, wenn ihr etwas passiert. Von daher wird sie den Notrufsender auch nicht mitnehmen und ich habe überlegt, wie ich einen Status bekomme. Zuerst wollte ich einen Bewegungsmelder auf dem Flur abfragen, aber dann kam mir der bessere Gedanke: Natürlich schaut sie täglich TV und ihr Smart-TV hängt im WLAN. Also kann ich doch diesen mit dem Presence-Modul überwachen. Und das Ganze via VPN ohne zusätzliche Hardware. Allerdings muss ich auch den Ein-Zustand überwachen - auch da kann ja auch was passieren. Also kam ich zu folgendem DOIF:
define di_M_TV_Alarm DOIF ([pres_M_Panasonic_TV:presence] eq "absent") (set telegramBot message @xxxxxxxxx Alarm TV-Ueberwachung  - Status aus)\
DOELSEIF\
([pres_M_Panasonic_TV:presence] eq "present") (set telegramBot message @xxxxxxxxx Alarm TV-Ueberwachung - Status ein)
attr di_M_TV_Alarm alias TV-Alarm
attr di_M_TV_Alarm devStateIcon disabl.*:general_aus:enable initi.*|cmd.*:general_an:disable .*rro.*:icoTool
attr di_M_TV_Alarm do always
attr di_M_TV_Alarm wait 50000:50000:5:5
Die Verzögerung war ursprünglich höher und ich habe mich jetzt so langsam an einen praktikablen Wert heran getastet. Aber natürlich kommt es nun zu 'Fehlalarmen', weil meine Mutter sich nicht an meinen Zeitplan hält  ;)
Daher möchte ich nun noch eine Reset-Meldung absetzen, wenn der Status sich nach dem Absenden eines Alarms wieder ändert. Daher hatte ich 2 zusätzliche Bedingungen eingebaut:DOELSEIF
([pres_M_Panasonic_TV:presence] eq "present" and
[di_M_TV_Alarm:state] eq "cmd_1") (set telegramBot message @xxxxxxxxx Alarm TV-Ueberwachung - Reset ein)
DOELSEIF
([pres_M_Panasonic_TV:presence] eq "absent" and
[di_M_TV_Alarm:state] eq "cmd_2") (set telegramBot message @xxxxxxxxx Alarm TV-Ueberwachung - Reset aus)
Doch die greifen leider nicht. Weil bei Statusänderung das wait für cmd_1&2 die restlichen Bedingungen ausbremst?

überwachende Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF

Brockmann

Liegt vielleicht einfach an der Reihenfolge der Bedingungen. Die werden von oben nach unten geprüft.
Du musst also erst die spezielleren Bedingungen setzen, und danach die allgemeineren.

Die allgemeineren sind ja immer wahr, wenn die spezielleren auch wahr sind.
Wenn die allgemeineren vor den spezielleren stehen, kommt das DOIF gar nicht erst zu den spezielleren.

Also statt
DOIF ([pres_M_Panasonic_TV:presence] eq "absent")...
DOELSEIF ([pres_M_Panasonic_TV:presence] eq "absent" and [di_M_TV_Alarm:state] eq "cmd_2")...


besser
DOIF ([pres_M_Panasonic_TV:presence] eq "absent" and [di_M_TV_Alarm:state] eq "cmd_2")...
DOELSEIF ([pres_M_Panasonic_TV:presence] eq "absent")...


(mit entsprechend angepassten "cmd_x")

Muschelpuster

#2
Hey Danke,

Manche Dinge sind wohl einfach zu einfach  ;)

Ich habe das jetzt mal mit dem State 'initialized' getestet, weil ich den ja nach Anpassungen habe. Allerdings musste ich dazu noch das DOIF reinitialisieren, da es im Wait auf cmd_2 hing (also disable/enable). Dann hat es funktioniert, jedoch hatte ich danach keinen Wert mehr unter wait_timer. Klar, dazu muss erst wieder irgendein Event triggern. Nun habe ich noch etwas getestet, indem ich das DOIF auf cmd_3/4 gesetzt habe, sieht gut aus, irgendwann nach der Resetmeldung geht der wait_timer irgendwann (neues Event vom Presence?) auf cmd3/4.
Ich werde das mal nach der ersten Reset-Meldung im Echtbetrieb beobachten.

abwartende Grüße
Niels
fhem @ ZBOX mit 1,6MHz Celeron, 4GB RAM & 120GB SSD mit Debian Bullseye # MiLight # Homematic via CCU3 # W&T WebIO # Rademacher DuoFern # ESPeasy # logdb@mysql # configdb@mysql # Shelly @ MQTT2 # go-eCharger mit PV-Überschussladung via DOIF