Da dieser Thread doch recht lang geworden ist und diese „Alarmanlage“ ohne meine Erklärungen wohl ein wenig komplex ist, werde ich meine einzelnen Werte jetzt nach und nach einmal erklären.
Folgende Variablen werden genutzt:
- ALARMAusgelöst - bool
- ALARMBeweungsmelder - bool
- ALARMFensterKontakt - bool
- ALARMStatus - bool
- ALARMTür - bool
- TürStatus - bool
- FensterStatus - bool
- BewegungsmelderStatus - bool
Eingesetzte Geräte:
- Fensterkontakt: Homematic IP
- Türschloss: Nuki
- Bewegungsmelder: Homematic IP
- Alarmsirene: Homematic IP Rauchmelder
Jetzt zum Flow:
Hier werden die unterschiedlichen Fensterkontakte abgefragt und in einen OR-Knoten gesetzt.
Falls also einer der Kontakte nicht 0 ist, wird ein true gesendet.
Diesen boolschen Wert schreibe ich in die Variable FensterStatus. Gleichzeitig habe ich einen Switchknoten mit ALARMStatus. Dieser sorgt dafür, dass der gesendete Wert nur weitergeleitet wird, wenn ALARMStatus selbst true ist. Der darauf folgende Switch-Knoten gibt nur ein true weiter:
Und zwar in die Variable ALARMFensterKontakt.
Der Grund dahinter ist einfach: Ich möchte nicht, dass wenn ein Alarm ausgelöst wird, diese Variable nochmals auf false gesetzt wird.
Beim Bewegungsmelder verhält es sich genau so:
Wird dieser Aktiv, wird BewegungsmelderStatus auf true gesetzt. Der ALARMStatus-knoten lässt nur was durch, wenn ALARMStatus selbst auf true ist und der Switch-knoten lässt nur das true durch, aber kein false, mit dem die Variable ALARMBewegungsmelder beschrieben wird.
Gleiches nun mit der Tür:
Der DOOR_STATE bei Nuki hat zwei wichtige Werte auf die ich hier schaue:
2 - Door Closed
3 - Door Opened
Die Variable TürSTATUS wird mit true oder false beschrieben, je nachdem wie der Zustand der Tür ist:
Door Closed - TürSTATUS → false
Door Opened - TürSTATUS → true
Entsprechend analog zu den Fensterkontakten und dem Bewegungsmelder der Rest des Flows. (ALARMStatus-Knoten und der Switch-Knoten der nur ein true durchlässt)
Aktivieren der Anlage:
Hier existiert ein Virtueller Schalter ALARM aktivieren
Sobald dieser auf true (also ein) geschaltet wird, filtert der erste Switch knoten genau diesen Zustand und prüft die Variablen: *FensterStatus, BewegungsmelderStatus und TürSTATUS, ob eine dieser Variablen auf true gesetzt ist. Ich möchte ja nicht, dass die Anlage losbimmelt, weil jetzt schon ein Fenster offen ist, oder der Bewegungsmelder ausgelöst wurde oder weil die Tür noch offen ist.
Falls eine dieser Variablen true ist, wird der Schalter ALARM aktivieren wieder auf false gesetzt und eine Nachricht wird via Telegram gesendet, was noch geöffnet ist.
Falls diese Variablen alle auf false gesetzt sind, beginnt ein interval was jede Sekunde einen Tik ausgibt. Nach 20 Tiks wird ALARMstatus auf true gesetzt und ich erhalte ebenfalls ein paar Nachrichten, dass die Anlage nun aktiv ist.
Außerdem wird der Intervalknoten wieder auf false gesetzt.
Dieser Teil sorgt dafür, dass wenn die Anlage ausgeschaltet werden sollte, der Interval-Knoten ebenfalls auf false geschaltet wird.
Alarm deaktivieren
Der Switchknoten vor dem Alarm aktivieren Schalter lässt hier nur ein false durch und sendet ein true was negiert wird und die Variablen:
- ALARMTür
- ALARMstatus
- ALARMFensterKontakt
- ALARMBewegungsmelder
- ALARMAusgelöst
ebenfalls auf false setzt.
Beim Rauchmelder muss man ein wenig mehr vorsehen, da wir ja nicht wissen, ob dieser ausgelöst wurde und auch wenn er ausgelöst wurde, diesen auch ausschalten wollen.
Somit setzt der erste Switch-Knoten eine 1, wenn er ein true erhält und staretet einen interval-Knoten, der dann über einen weiteren Switch-Knoten und nach 5 Tiks eine 0 Sendet und sich selbst, über einen weiteren Switchknoten auf false setzt.
ALARM
Hier wird nun ein verzögerter Alarm ausgelöst:
der OR-Knoten gibt ein true aus, wenn
-
ALARMBewegungsmelder
oder
-
ALARMFensterKontakt
oder
-
ALARMTür
auf true gesetzt werden. Dies startet erneut einen Intervalknoten, und der Switch-Knoten reagiert nach 20 Sekunden mit dem senden einer 2 da dies den Intruision Alarm triggert.
Dieser Wert wird aber nur durchgelassen, wenn ALARMStatus auch true ist und der Rauchmelder bimmelt los. Außerdem wird die Variable ALARMAusgelöst auf true gesetzt.
Wird der Schalter ALARM aktivieren aber auf false gesetzt, so wird auch dieses Interval auf false gesetzt.
ALARM…wie lange?
Der letzte Schritt ist die zeitliche Begrenzung des Alarms.
Wird nämlich die Variable ALARMAusgelöst auf true gesetzt, so triggert dies ein Interval. Der darauffolgende Switchknoten setzt dann den Schalter ALARM aktivieren nach 300 Sekunden auf false und alles verstummt wieder.
Ich hoffe die Erklärung ist ausführlich genug. Die einzelnen Benachrichtigungen habe ich jetzt nicht mit aufgenommen, da sie recht individuell sind.
Bei Fragen: Gerne via PN an mich oder hier in den Thread. Gerne auch Verbesserungsvorschläge.
Gruß
Janusch