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