Flow "Alarmanlage"

So. Ja, ging wesentlich schneller als erwartet…

image

Ich habe mal ein wenig rumgebastelt. Lediglich die Zeitverzögerung für die Scharfschaltung fehlt noch.
Im Grunde habe ich die Schalter durch systemvariablen ersetzt und (ALARMStatus) und ziehe mir noch die Info zum Fensterzustand sowie den Zustand der Bewegungsmelder auch in eine Variable.
Wenn ich die Alarmanlage ausschalte, wird der zustand der Bewegungsmelder und Fensterkontakte ignoriert.
Wenn ich sie jedoch scharf schalten möchte, wird erst geschaut, ob die Fensterkontakte alle geschlossen sind, ansonsten wird hier eine Nachricht ausgegeben. Dann wird geschaut ob der Bewegungsmelder aus ist, falls er noch aktiv ist, wird ebenfalls eine Nachricht ausgegeben. Bei beiden wird der Button auch direkt wieder auf false gesetzt. Erst wenn beide Variable „okey“ sind, wird der ALARMStatus auf true gesetzt und die Anlage scharf geschaltet.

Hier der Flow: ACHTUNG UNTESTED
flows (6).json (11,3 KB)

Okey. ich hatte noch einige Fehler darin. Zum einen habe ich die Falschen Variablen zum Prüfen eingesetzt für das Einschalten der Alarmanlage.
Zum anderen fehlte ja auch schon der entsprechende Timer.

Das habe ich nun korrigiert. Die Alarmanlage wird jetzt nach einschalten in 30s scharf geschaltet. Während dessen kann man sie natürlich deaktivieren und der Timer resettet sich.
Außerdem habe ich die Möglichkeit eingebaut, dass Nachrichten gesetzt werden, wenn die Alarmanlage scharf geschaltet wird.

Wenn ein Alarm geht kann man sich natürlich noch eine Variable setzen, die dann für entsprechende Zustände sorgt wie „Rolläden werden hochgefahren“ oder „Selbstschussanlagen werden initiiert“ oder „Romba startet im RAMBO-Modus“ oder was auch immer. :slight_smile:

Ich habe noch mein Nuki Türschloss implementiert, so dass der Alarm auch losgeht, wenn die Tür geöffnet wird. Hier müsste ich noch tatsächlich ein Intervall einbauen, bevor der Alarm los geht, damit man wenigstens Zeit hat, im Haus den Schalter für die Alarmanlage zu betätigen.

Folgend Screenshots und der Flow. Wie gesagt. ist bisher nur rudimentär getestet.
Gesetzt habe ich alles bisher als Virtuellen Schalter. Natürlich kann man hier virtuelle Schalter, Systemvariablen und auch hardwareschalter lustig kombinieren.

image
image
flows (9).json (18,6 KB)

Und ja, ich hatte ein paar stunden leerlauf in der firma :slight_smile:

1 „Gefällt mir“

Moin Janusch,
excellent, da hast du ja ganze Arbeit geleistet. Vielen Dank :grinning: :+1:
Ich werden später das mal bei mir einbauen und testen.
Sieht aber auf dem ersten Blick sehr gut aus.

Danke

1 „Gefällt mir“

Ach ja:

Das ganze wird ja via virtuellem Taster innerhalb von smartha Home gesteuert.

Sprich: du hast dann in der SmarthaApp auch denn gleichen Taster zur Verfügung.

Man könnte damit auch einfach nur eine Variable schalten, wie in deinem Beispiel, dann hätte man auch die Möglichkeiten einen Hardwareschalter einzusetzen, etc.

Wichtig dabei wäre halt nur, dass wenn man via virtuellem Schalter die Anlage scharf schaltet, sich dein Hardware schalter auch in diesen Zustand befindet und andersrum, damit alles konsistent bleibt und nicht schalter unterschiedliche Zustände haben würden. :slight_smile:

2 „Gefällt mir“

Sensor in die Beschreibung des Auslösers ist natürlich spitze. Da setze ich mich nochmal ran. Bei meinem Anwendungsfall wäre ja lediglich interessant zu wissen, ob der Bewegungsmelder, die Türe oder die Fenster ausgelöst haben. Ich probiere mal aus, was da so geht :slight_smile:

image

Hier noch meine Benachrichtigungen.
Falls jetzt jemand einen Alarm auslöst, bekomme ich abhängigkeit der Variablen gesagt, wo er eingestiegen ist. Keller, Fenster oder Tür. Als letztes habe ich noch eine nachricht, falls keiner dieser Flows greift, aus mir schleierhaften Gründen.

EDIT:
@leika241265 bzgl. Punkt 5:
Stromausfall kannst du nur abfangen, wenn du die CCU und die Smartha und die interkonnektivität an ne USV hängst. Dann werden die Befehle noch abgegeben. Spätestens aber, wenn die USV leer ist, wirst du den alarm nicht mehr abschalten können, deswegen wäre hier ne direktverbindung zwischen Batteriebetriebenen Schalter und Tröten notwendig. Ein Internetausfall sollte lediglich dafür sorgen, dass du keine Nachrichten via SMS oder Telegram erhälst. Die Alarmanlage selbst wird wohl weiterhin funktionieren. (Außer der Nukikram, aber das ist eine andere Geschichte) Sabotageschutz. Wenn ich mich nicht irre, greift der Sabotageschutz bei den Fenstersensoren. Ich müsste aber raten, ob und was hier weitergegeben wird, was man als indikator abgreifen könnte. Somit denke ich mal, dass meine Flows, soweit alle Fälle abgreifen. Die Übrigen sachen (licht setzen, Rollos hochfahren, etc) wären lediglich das I-Tüpfelchen und vergleichsweise einfach zu realisieren, da wir ja eine Variable haben, die bei einem Alarmfall gesetzt wird. Darauf basierend kannst du dann übrige Automationen übersteuern (rollos runter, lichtsteuerung, whatever) und mit gewünschten Werten versehen. :slight_smile:

Hallo zusammen,

bzgl. „Name/Beschreibung des Auslösers“ in der Notification … einfach einen function Knoten an die entspr. Stelle setzen (ich hab jetzt den Ueberblick hier im Thread verloren wo das bei wem ist :joy:) und dort den Namen auslesen:

$name = $hg->getName($message['peerId']);
$message['payload'] = ($name ? $name : $message['peerId']);
return $message;

Wichtig ist halt, dass man alle moeglichen „Ausloeser“ gesammelt vor diesen function Knoten bekommt, damit die peerId im message-Objekt enthalten ist :wink:

– Micha

1 „Gefällt mir“

@mscheffler jap. Das wäre wirklich einfacher. Für meine Verhältnisse würde das reichen.

Derzeit versuche ich noch sowas wie Alexa einzubinden. Da muss ich mich aber noch ein wenig einarbeiten ob das so funktioniert wie ich mir das vorstelle. Außerdem schaue ich nach der lichtsteuerung, dass alle meine zigbee birnen eingeschaltet werden. etc.
OVERENGINEERING GALORE!

Hey @Janusch,

Alexa generell, oder in der Alarmanlage? :thinking:

– Micha

Die Idee wäre, dass wenn die Systemvariable AlarmAusgelöst auf true gesetzt wird, alle echoDots im Haus sowas sagen wie: EINDRINGLINGSALARM!

Oder so. Dafür müsste ich ja via cloudmatic diesen Alexaskill einspielen. Weiter bin ich aber bisher nicht. Für mich sieht dieses Cloudmatic so aus, als ob es befehle annehmen kann, aber keine Befehle an einen Echo absetzt. Allerdings habe ich mich damit nur rudimentär beschäftigt. Bis meine Frau diesen Wunsch äußerte…

Hi @Janusch,

das wuerde nicht mit unserem „normalen“ Skill gehen, da das „nur“ ein „normaler“ SmartHome-Skill ist … dem kann man nicht „sag irgend etwas“ sagen :wink:

Aber es gibt Workarounds mit simplen Custom Skills (IIRC, ich hab die Dame nicht bei mir wohnen, aber ein paar Kollegen haben da mal was gebaut). Oder halt mit TTS & Sonos :grimacing:

– Micha

TTS wär okey. Aber wenn ich noch Sonos daheim anschleppe, wird mich meine Frau im Garten verbuddeln.

Ich habe jetzt den Ansatz über IFTTT was zu basteln. Das müsste eigentlich gehen.

Hallo Allerseits,

also: Ich kam mit IFTTT noch nicht weiter. Aber ich habe die Alarmanlage jetzt soweit getestet und auch eine Verzögerung beim Auslösen eingebaut. Soweit so gut. Tut alles und wird komplett über die Smartha abgebildet.

@leika241265 hast du schon getestet?

1 „Gefällt mir“

Hallo,
nee noch nicht ganz. Ich muste auf das heutige neue Update für mein Betasystem warten.(Lizenz error)
Werde ich aber gleich nachbauen wenn meine Betasystem wieder rennt.

Hallo

hab diese Coole Alarm funktion hier auch mal nachgebaut .

Hab die funktion zur Namensauflösung eingebaut. Leider funktioniert Sie so nicht sobald sie hinter einem oder Konten sitzt zeigt er mir Typerror an.
MfG

So. Ich habe noch ein wenig rumgebastelt.

  1. Ich habe eine Alarmverzögerung implementiert, die jetzt den alarm erst nach 20 Sekunden startet.
  2. Ich habe eine automatische deaktivierung des Einbruchalarms nach 300 Sekunden implementiert, was nun das Bimmeln eines Fehlalarmes nach 5 Minuten beenden wird. Und nach 5 Minuten Bimmeln sollte man auch wach genug sein.

flows (10).json (22,4 KB)

image
image
image
image

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:

image
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:
image
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:
image
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:
image
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ürSTATUSfalse
Door Opened - TürSTATUStrue

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:

image

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.

image

Dieser Teil sorgt dafür, dass wenn die Anlage ausgeschaltet werden sollte, der Interval-Knoten ebenfalls auf false geschaltet wird.

Alarm deaktivieren
image
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
image
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?
image
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. :slight_smile: 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

2 „Gefällt mir“

Hallo Janusch,
alles top. Ich habe es bei mir angepast und in der test umgebung am laufen. Ich bin noch alles am testen.
Ich bin noch am überlegen ob man ein „Reset_motion“ zu allen BW sendet, wenn man die AL abstellt. Sauber cleanup.
Danke

Das wäre hier in meinem Beispiel relativ einfach, da du über ALARMStatus den reset triggern kannst.
Auf der anderen Seite: Wenn die Alarmanlage eh aus ist, kann man das soweit auch ignorieren. :slight_smile:

Hey @abaune,

kannst du mir mal deinen Flow schicken? Dann schau ich gerne mal drueber :wink:

– Micha

flows.json (25,4 KB)