Alarmanlage

Hallo miteinander,

seit geraumer Zeit schwebt mir eine Idee zu einer automatischen Alarmanlage (schaltet sich selbst ein (auch bei Anwesenheit) und in definierten Situationen auch aus) im Kopf.
Ich nutze derzeit in nahezu jedem Raum Bewegungsmelder, an den Aussenoefnungen Kontakte und die Anwesenheitstracker.

So laesst sich zum Beispiel ueber die Anwesenheit die Anlage automatisch ein und ausschalten oder
waehrend der Nachtruhe ueber nicht vorhandene Bewegungen.
Da wir im OG schlafen kann zBsp. die Anlage fuer das OG deaktiviert werden (Nachts auf die Toilette gehen) und die ganze Anlage deaktiviert werden wenn jemand vom OG das Treppenhaus betritt.

Da ich gerade die verschiedenen Situationen zusammenstelle und mir Gedanken um die Scripte mache stelle ich hier mal die Frage, ist eine aehnliche Loesung bereits irgendwo im Einsatz, wie habt Ihr das geloest und welche Erfahrungen bestehen?

Herzlichen Dank, Stromer

Ich habe das ähnlich gelöst und meine professionelle Alarm Anlage mit IPS/Homematic verknüpft.

Ich setze auch Bewegungsmelder und Türkontakte ein.
Die Schlafzimmer Lösung ist auch vollautomatisch.

Die folgenden Punkte musste ich beachten :

1.) Die Bewegungsmelder haben einen Nachlauf von ca. 5 Min. Deshalb wird das Scharfschalten um diese Zeitspanne verzögert um Fehlalarme zu vermeiden.

2.) Die Sicherheitsfirma benötigt einen Anruf mit einem Ton Frequenz Code um den Status der Anlage sowie bestimmte Alarmfälle zu erkennen. Hier sage ich meiner professionellen Anlage über Schalter Zustände das Sie „nach Hause telefonieren“ soll.

3.) Das Anwesenheitsmodul deckt mein Grundstück nicht richtig ab und „Pingt“ nicht häufig genug um zeitnah beim nachhause kommen Anwesenheit zu signalisieren. Ich nutze es daher nicht.

4.) Ich verschicke im Alarmfall automatisch SMS und E-Mails mit den Details (was hat wo Ausgelöst) inklusive Bilder von den Überwachungs Kameras. Dazu schalte ich bei Dunkelheit alle Außenlichter ein, warte ein paar Sekunden, kopiere die Bilder und verschicke sie dann

5.) Mit eingebunden sind Alarm Meldungen für Gas, Feuer/Rauch, Eis und Wasser

6.) Um durch die Bewegungsmelder keine E-Mail/SMS Lawinen auszulösen habe ich Nachrichten Budgets pro Zeiteinheit definiert.

In Zukunft will ich meine Sonos Anlage mit einbinden um im Alarm Fall gezielt Ansagen machen zu können (Hat schon mal funktioniert aber irgendwas geht im Moment schief)

Im Moment ist nur meine professionelle Anlage umfänglich mit Sabotageschutz und Batterie Betrieb bei Stromausfall ausgestattet. Das muss ich irgendwann auch mal für IPS (Die Homematic hat das ja schon) installieren.

Bei Einbruch stelle ich mir vor irgendwann einmal (nach Vorwarnung) Sirenen in den betroffenen Räumen im Haus auszulösen.

Hallo Bestex,

Danke für Deine Ideen. Ich wünschte ich wäre soweit :slight_smile: aber der Weg ist ja bekanntlich auch ein Ziel.

An alle,

mit dem beigefügten Script möchte ich die Aktivität der Bewegungsmelder abfragen (Hat sich in den letzten 1200 Sekunden was getan) und wenn nicht die Anlage scharf schalten.

Leider ist da irgendwo ein Fehler bei der ZeitAbfrage da anscheinend hier Bewegung gemessen wird, wo keine war. Sprich das Script findet ein Variablenupdate wo keines war. Nicht in der Realität im Raum als Bewegung und auch nicht in der IPS DB.

Habe ich in meiner Idee einen Denkfehler?

Grüße, Stromer

<?

 //Alarmanlage Automatisch Aktivieren
 // das Script prüft alle 5 Minuten ob alle BMIs im Haus min. 20 Min. ohne Aktivität sind und der BMI im Schalfzimmer
 // als letztes aktiv war (fehlt noch) -> dann Auto On mit Anwesenheit
 // deaktivieren wenn BMI OG Flur und BMI EGOG TrHs "gemeinsam" aktiv werden und Alarmanlage nicht scharf ist.
 
 // Auto On ohne Anwesenheit
 // alle BMIs missen min 20 min ohne Aktivität sein, alle Türen geschlossen und Abwesenheit
 
 // Variablen setzen
 // Für Berechnnung
 $zaehler = 0;

// Sonstige Var..
$AlarmanlageStatus = GetValue(12625 /*[41 Sicherheit\Alarmanlage\Alarmanlage Status]*/);

 // 1. Türen
$Haustuer = GetValue(42425 /*[41 Sicherheit\Türkontakte\TFK-868 (Input) 1 Haustür\Haustür]*/ );                          // an ist Tür ZU!!
$Garagentuer = GetValue(51253 /*[41 Sicherheit\Türkontakte\TFK-868 (Input) 2 Garagentür\Garagentür]*/ );                 // an ist Tür ZU!!
$Kuechentuer = GetValue(11005 /*[05 LCN\LCN Binäreingänge\B6B7 Tür Küche\Küchentür geschlossen]*/ );                     // an ist Tür ZU!!
$Schiebetuer = GetValue(12222 /*[05 LCN\LCN Binäreingänge\B6B8 Schiebetür Terasse\Schiebetür geschlossen]*/ );           // an ist Tür ZU!!
$Kuechenfenster = GetValue(38590 /*[05 LCN\LCN Binäreingänge\B6B6 Fensterkontakt Küche\Küchenfenster geschlossen]*/ );   // an ist Tür ZU!!
 
 // 2. Anwesenheit
$Anwesenheit = GetValue(21574 /*[36 Anwesenheit\Anwesenheit]*/ );                                                        // Anwesend ist ein!!

 // 3. BMI's
$BmiGarage = IPS_GetVariable(17700 /*[05 LCN\LCN BMIs\M203 UG Garage BMI4\M203 UG Garage BMI4 Status]*/ );
$BmiUgFlur = IPS_GetVariable(41790 /*[05 LCN\LCN BMIs\M202 UG Flur BMI4\M202 UG Flur BMI4 Status]*/ );
$BmiUgWerken = IPS_GetVariable(19725 /*[05 LCN\LCN BMIs\M202 UG Werken BMI6\M202 UG Werken BMI6 Status]*/ );
$BmiUgHeizung = IPS_GetVariable(52871 /*[05 LCN\LCN BMIs\M202 UG Heizung BMI5\M202 UG Heizung BMI5 Status]*/ );
$BmiUgTuer = IPS_GetVariable(56690 /*[05 LCN\LCN BMIs\M201 UG Kellertür BMI5\M201 UG Kellertür BMI5 Status]*/ );
$BmiThUg = IPS_GetVariable(27206 /*[05 LCN\LCN BMIs\M11 EGUG Treppenhaus BMI5\M11 EGUG Treppenhaus BMI5 Status]*/ );
$BmiThEg = IPS_GetVariable(37108 /*[05 LCN\LCN BMIs\M11 EG Treppenhaus BMI4\M11 EG Treppenhaus BMI4 Status]*/ );
$BmiThEgOg = IPS_GetVariable(12326 /*[05 LCN\LCN BMIs\M110 EGOG Treppenhaus BMI5\M110 EGOG Treppenhaus BMI5 Status]*/ );
$BmiThOg = IPS_GetVariable(11924 /*[05 LCN\LCN BMIs\M110 OG Treppenhaus BMI4\M110 OG Treppenhaus BMI4 Status]*/ );
$BmiEgGarderobe = IPS_GetVariable(21904 /*[05 LCN\LCN BMIs\M30 EG Garderobe BMI5\M30 EG Garderobe BMI5 Status]*/ );
$BmiEgBad = IPS_GetVariable(35852 /*[05 LCN\LCN BMIs\M30 EG WC BMI4\M30 EG WC BMI4 Status]*/ );
$BmiEgKueche = IPS_GetVariable(35883 /*[05 LCN\LCN BMIs\M20 EG Küche BMI4\M20 EG Küche BMI4 Status]*/ );
$BmiEgWz = IPS_GetVariable(17496 /*[05 LCN\LCN BMIs\M42 EG Wohnzimmer BMI4\M42 EG Wohnzimmer BMI4 Status]*/ );
$BmiOgBad = IPS_GetVariable(10847 /*[05 LCN\LCN BMIs\M150 OG Bad BMI4\M150 OG Bad BMI4 Status]*/ );
//$BmiOgSz = IPS_GetVariable(59911 /*[05 LCN\LCN BMIs\M203 OG Schlafzimmer BMI5\M203 OG Schlafzimmer BMI5 Status]*/ );
//$Bmi = GetValue();
$time = microtime(true);
 //echo  "delta t: $delta_t  
";
//echo  "Zähler: $zaehler  
";

$delta_t = time()-($BmiGarage['VariableUpdated']); // Wann war die letzte Veränderung der Variable in Sekunden !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiGarage: $delta_t  
";
$delta_t = time()-($BmiUgFlur['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiUgFlur: $delta_t  
";
$delta_t = time()-($BmiUgWerken['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiUgWerken: $delta_t  
";
$delta_t = time()-($BmiUgHeizung['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiUgHeizung: $delta_t  
";
$delta_t = time()-($BmiUgTuer['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiUgTuer: $delta_t  
";
$delta_t = time()-($BmiThUg['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiThUg: $delta_t  
";
$delta_t = time()-($BmiThEg['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiThEg: $delta_t  
";
$delta_t = time()-($BmiThEgOg['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiThEgOg: $delta_t  
";
//$delta_t = time()-($BmiThOg['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
//If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
//echo  "delta t BmiThOg: $delta_t  
";
$delta_t = time()-($BmiEgGarderobe['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiEgGarderobe: $delta_t  
";
$delta_t = time()-($BmiEgBad['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiEgBad: $delta_t  
";
$delta_t = time()-($BmiEgKueche['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiEgKueche: $delta_t  
";
$delta_t = time()-($BmiEgWz['VariableUpdated']); // Wann war die letzte Veränderung der Variable !!!
If ($delta_t < 1200) { $zaehler = $zaehler + 1; }
echo  "delta t BmiEgWz: $delta_t  
";

echo  "Zähler: 		$zaehler  
";
echo  "Anwesenheit:  $Anwesenheit  
";

// AutoOn und Abwesenheit
If (($zaehler == 0) && ($Anwesenheit == 0)) {SetValueInteger(12625 /*[41 Sicherheit\Alarmanlage\Alarmanlage Status]*/ ,3);}

// AutoOn und Anwesenheit
If (($zaehler == 0) && ($Anwesenheit == 1)) {SetValueInteger(12625 /*[41 Sicherheit\Alarmanlage\Alarmanlage Status]*/ ,2);}

// Bewegung im Haus - Alarmanlage aus
If ($zaehler > 0)  {SetValueInteger(12625 /*[41 Sicherheit\Alarmanlage\Alarmanlage Status]*/ ,1);}

$AlarmanlageStatus = GetValue(12625 /*[41 Sicherheit\Alarmanlage\Alarmanlage Status]*/);
echo  "Alarmanlage Status:  $AlarmanlageStatus  
";
?>
delta t BmiGarage: 46.234999895096   (BMI ist bestimmt 5 Stunden ohne Aktivität - 46 Sek sind falsch
delta t BmiUgFlur: 350.07900047302  
delta t BmiUgWerken: 350.07900047302  
delta t BmiUgHeizung: 350.07900047302  
delta t BmiUgTuer: 350.00000023842  
delta t BmiThUg: 349.95400047302  
delta t BmiThEg: 349.96900057793  
delta t BmiThEgOg: 350.34400033951  
delta t BmiEgGarderobe: 350.01599979401  
delta t BmiEgBad: 350.01599979401  
delta t BmiEgKueche: 349.96900057793  
delta t BmiEgWz: 349.98500013351  
Zähler: 		12  
Anwesenheit:  1  
Alarmanlage Status:  1 

Also mit der Formulierung der Frage hier im Forum kommen schon immer Anstöße für die „eigene“ Fehlersuche.
Mit „VariableChanged“ statt Updated sieht schon alles viel besser aus.

Danke,
Stromer

Da du laut Signatur LCN einsetzt vermute ich auch dort „deinen Denkfehler“.

Wenn du Binäreingänge oder (virtuelle) Relais verwendest, werden immer alle 8 upgedated ;).

Hallo Bestex,

ich versuche gerade das gleiche zu realisieren und würde mich über ein Codesample freuen, da ich dann was abkupfern könnte:D. Könntest Du das posten? Danke,

PocoLoco

Leider ist das ganze nicht monolytisch aufgebaut so das Codesample in diesem Fall DIr nicht viel bringen :frowning: Sry