Benachrichtigung Alarmanlage Auslöser

Ich habe heute noch eine kleine Optimierung bzw. Zusatz zu meiner Alarmanlage dazu programmiert.

Das ursprüngliche Script, welches ich hierzu abgewandelt habe, bezieht sich eigentlich auf die Rauchmelder um per Push den ausgelösten Rauchmelder als Information zu erhalten. Das Script habe ich wieder einmal im Homematic-Forum gefunden.

Schritt 1: Gewerk anlegen und überprüfen
Für das Script ist es nötig, alle zu prüfenden Fenster / Türkontakte in ein Gewerk zu packen, in meinem Fall Alarmanlage.

Mit folgendem Script (in der CCU -> Programme -> Skript testen), muss das Gewerk überprüft werden, als Ergebnis muss der Gewerkname ausgegeben werden.
Wenn das nicht der Fall ist muss das Gewerk gelöscht werden, die CCU neu starten, Gewerk wieder anlegen, Skript ausführen.
var sec = (dom.GetObject(ID_FUNCTIONS)).Get("Alarmanlage");
WriteLine(sec);

Schritt 2: Kontakte zuordnen
Natürlich müssen dem neuen Gewerk nun auch die Fenster -und Türkontakte zugewiesen werden, die der Alarmanlage zugeordnet sind, ggf. alle verfügbaren Kontakte.
Ich gehe hier aber nun nicht weiter darauf ein, wie das funktioniert 😉

Schritt 3: Systemvariablen
Es gibt eine Pflicht variable, die benötigt wird um später das Benachrichtigungsprogramm zu triggern, in meinem Fall als Variablentyp “Alarm” um das auch in der CCU entsprechend zu signalisieren.

Systemvariable “Alarmanlage ausgelöst” als Alarm

Wenn man das ganze noch per App abrufen möchte oder in der CCU anzeigen lassen möchte, kann man den Auslöser auch noch in eine Zeichenkette ausgeben lassen

Systemvariable “Alarmkontakt” als Zeichenkette

Schritt 4: Alarm-Programm
Nun wird ein neues Programm benötigt, mit dem die Alarm-Variable auf ausgelöst gesetzt wird, als Auslöser werden hier alle Fenster -und Türkontakte definiert.

Klicken zum vergrößern

Unten ist noch ein Script eingebettet, dass wie folgt aussieht:
dom.GetObject('Alarmkontakt').State("");
string list;
list="";

Schritt 5: Benachrichtigungsprogramm
Nun brauch man noch das Programm, welches die Benachrichtigung raushaut auf den Kanälen, die man haben möchte, in meinem Fall ist das pocketControl.

Klicken zum vergrößern

Script zu Erkennung, welcher Kontakt ausgelöst hat:
var sec = (dom.GetObject(ID_FUNCTIONS)).Get("Alarmanlage");
string i;
string list;
list="";
foreach(i,sec.EnumUsedIDs())
{
var item=dom.GetObject(i);
if(item.IsTypeOf(OT_CHANNEL))
{
var dev=dom.GetObject(item.Device());
if( (dev.HssType()=="HmIP-SWDM") || (dev.HssType()=="HM-Sec-SCo") || (dev.HssType()=="HMIP-SWDO") )
{
var state=item.DPByHssDP("STATE");
if(state.Value())
{
list=list+dev.Name();
}
if(state1.Value())
{
list=list+dev.Name();
}
}
}
}
dom.GetObject('Alarmkontakt').State(list);

Script für pocketControl-Push
string PushText = "Die Alarmanlage wurde durch "#list#" ausgelöst!";dom.GetObject('pocketControlPushMessage').State(PushText);

Natürlich kann man hier auch jede andere Benachrichtigungsart verwenden.
Die verschiedenen Arten sind m.M. nach sehr gut in der Anleitung für das ursprüngliche Script beschrieben.
Das Ergebnis sieht dann wie folgt aus:

Alarmanlage mit Homematic und Alexa

Da ich nun alle Fenster und Türen mit Fensterkontakten bzw. Türkontakten ausgestattet habe, kann ich das als Grundlage für den Bau für eine Alarmanlage nutzen.

Zuerst habe ich mir überlegt, wie ich den Alarmsignalton realisieren kann, da kam ich zuerst auf die Rauchmelder, da diese die Option für einen Einbruchsalarm haben.
Da dachte ich mir dann, ist eigentlich doof, da darunter die Batterielaufzeit leidet und die Dinger dafür zu teuer sind.
Die Homematic Alarmsirene ist mir auch zu teuer, da habe ich andere Prioritäten.
Dann kam ich auf die unnütz rumliegende Alexa.
Diese könnte man ja ins Schlafzimmer stellen, Mikrofon deaktivieren und dann hätte man etwas, um den Alarm auszugeben.
Diese Idee hatte mich dann überzeugt.

Nun habe ich das ganze wie folgt realisiert:
Ich habe einen weiteren bottle-Server gestartet, der die Routinen in Alexa ansteuert.
In Alexa habe ich eine Routine angelegt, die einfach nur mehrmals sagt “Alarm! Alarm! Alarm! Die Alarmanlage wurde ausgelöst”
Dann habe ich das mal getestet und die Zeit gemessen, wie lang die Routine brauch, um das Abzuarbeiten, da ich das min. 2 mal ausführen will, ich kam auf etwa 1 Minute 20.


(Bild in Groß)

Nun geht es an das Homematic-Programm, das sieht dann wie folgt aus:


(Bild in Groß)

Was tut das Programm?
Also in erster Linie sind die Fenster und Türkontakte der Auslöser des Programms.
Die Alexa soll als Sirene primär genutzt werden, funktioniert natürlich nur, wenn ich Online bin, deshalb habe ich via CUxD-Ping noch eine Abfrage drin, bin ich Online oder nicht?
Ich pinge hier die 8.8.8.8, denke mal es ist unwahrscheinlich dass dieser DNS-Server von Google mal tot ist .
Wenn also CUxD-Ping-Internet ein ist, soll die Alexa routine "alarmanlage" ausgelöst werden.
Als Backup für den Offline Fall (wie gestern Abend, Danke Vodafone) sollen dann doch die Rauchmelder ausgelöst werden.
Wenn wir abwesend sind, geht eine Push-Benachrichtigung an mein Handy.
Ich denke aber, dass ich mal noch versuche, hier einen Anruf über die Fritz!Box zu triggern, ist noch in Arbeit und wird ein eigener Blogeintrag, wenn das mal geschafft ist.

Ich denke, dass ist eine wunderbare Umsetzung der Alarmanlage.