Alarmanlage programmieren

Ich möchte mir mit meinen Fenster Sensoren eine Alarmanlage bauen bzw programmieren.

Folgende Variablen als bool hätte ich schon

  • Anwesenheit
  • Urlaub
  • Nachts
  • Party

Anzahl Fenster offen bei tag
Anzahl Fenster offen bei Nacht (Ohne Schlafzimmer)

Grund Idee ist. Beim scharf schalten wird die Anzahl der offenen Fenster in eine Hilfsvariable geschrieben. Wird ein Fenster geschlossen, sind also weniger offen dann wird der Merker auch auf diese Zahl reduziert.
Wird ein Fenster auf gemacht ist die Anzahl der Fenster größer als die gespeicherte Anzahl. Dann also Alarm geben.

Habe schon mal angefangen ist aber ganz schön trickey. Anwesenheit wird über AKM Modul gemacht. Das ist sehr zuverlässig.

Wie würdet ihr vorgehen? Oder hat schon jemand so was gemacht?

Moin,
bist Du sicher dass Du das willst?
Üblicherweise macht man das so dass davon ausgegangen wird dass alle Fenster zu sind - wird eins geöffnet (wie auch immer) und der Alarm ist scharf dann wird Alarm geschlagen.
Ich glaube ein Szenario bei dem der Alarm scharf ist und trotzdem Fenster offen sein dürfen ist nicht sinnvoll - oder willst Du wenn Dir Nachts plötzlich warm wird und Du ein Fenster öffnen möchtest erst der Alarmanlage bescheid sagen?
Kommt natürlich drauf an ob Du noch Mitbewohner hast, aber ich würde mich da nicht drauf einlassen…

Edit: OK, sehe gerade Du würdest die Schlafzimmer auslassen in der Betrachtung, bei meiner Grundtendenz bleibe ich aber…

An einer Scharfschaltung bei Anwesenheit bin ich auch verzweifelt und habe es erstmal zurückgestellt. Bei Abwesenheit funktioniert mein Ansatz aber problemlos. Mittlerweile sind auch die Kinder mit AKMs versehen und es gibt praktisch keine Fehlalarme mehr. Das ist ja auch einfach: Keiner da = keine Aktivität - sonst Alarm.

Wie gesagt: „intern scharf“ macht mir noch Kopfschmerzen. Letztlich musst Du erlaubte Öffnungen (z.B. Schlafzimmerfenster) definieren, sonst mauerst Du Dich ein und der WAF geht in den Keller. Deshalb überlege ich noch, weitere Sicherheitsstufen zu nutzen, um das halbwegs automatisch abzufangen. Bsp.: Ab Einbruch der Dunkelheit werden abgelegene Fenster überwacht. Wenn das Haus später schläft, sind weitere Fenster und alle Türen tabu.

Aber was ist, wenn Besuch im Haus ist oder jemand später nach Hause kommt… :confused:

Grüße
galleto

Abend!

Also ich hab es wie folgt umgesetzt:
> Wenn niemand zu Hause, dann wird die Alarmanlage scharf geschaltet
> Wenn jemand zu Hause ist, dann kann die Alarmanlage entweder manuell scharf geschaltet werden, oder spästens mit dem „AllOff-InsBettGeh-Skript“ wird die Alarmanlage dann aktiviert.

> Ich schreibe kontinuierlich alle Fenster/Tür/…-Status-Infos in Hilfsvariablen. Ab scharf Schaltung der Alarmanlage dürfen die Fenster noch geschlossen werden (gekippt ist erlaubt - je nach Fenster), aber sobald eine Fenster/Tür geöffnet wird, hat man X Sekunden Zeit lautlos zu bestätigen, macht man das nicht, geht der Alarm los.

Dann noch ein paar „Zusatz-Funktionen“ wie Einstellung bzgl. Alarmierungsart, Dauer bis Alarmauslösung, Sonos-Meldungen zu Alarm-Aktivierung/Deaktivierung (abhängig von der Uhrzeit und von wo aktiviert/deaktiviert wurde), …

Grüße,
Chris

Ganz ehrlich? Ich würde mich in so einem Haushalt nicht wohl fühlen wo ich permanent dran erinnert werde wie schlecht die Welt doch ist und wo ich immer aufpassen muss alles richtig zu machen um nicht eine Fehlauslösung zu riskieren.
Ich habe Draußen ein paar Kameras und bei Bewegung wird´s draußen hell und die Fenster und Türen sind erhöhte Sicherheitsstufe (ein modernes 3-Schicht-Fenster mit Pilzzapfen hebelt man nicht mal eben so auf) aber das muss dann auch reichen zur Abschreckung.

Bei uns wurde in mindestens 4 Häuser im direktem Umkreis (nebenan/gegenüber/…) schon eingebrochen. Bei uns selbst gab es einen Versuch. Also finde ich das so absolut angemessen mit Alarmanlage + Kameras.

Am Anfang hatte wir den Alarm nur lautlos, nach kurzer Eingewöhnung dann „richtig“ aktiviert und bisher nicht einen Fehlalarm/„Selbstauslösung“.

Jeder muss für sich selbst entscheiden welches Maß an Sicherheit er wie haben möchte. Jeder hat seine Gründe für oder gegen etwas. Also sollte man es auch die Leute selbst für sich entscheiden lassen…

Grüße,
Chris

Eben in der Nachbarschaft hört man immer wieder was davon. Bei meinen Eltern wurde es auch schon versucht.

Zum Thema.
Ja das sind die Problem Szenen. Wenn jemand nachts nach hause kommt und der Partner schon schläft…
Oder man die Tür früh morgens öffnet.

Ne zweistufige alarmierung wäre gut. Erst so Warnung und nach 30 sek dann erst laut Alarm.
Ich kann euch ja mal den ersten Versuch schicken.
Wenn Besucher da sind dann ist bald der Party Modus aktiv. Braucht man immer mehr. Da die Leute durch den tts manchmal etwas irritiert sind.

Achso, hatte ich vergessen zu erwähnen, wenn jemand nach Hause kommt und die Tür mit XY öffnet, dann wird automatisch der Alarm kurz abgeschaltet.

Grüße,
Chris

Jo so hab ich das auch gedacht.

Wenn Nacht zu Tag dann wird auch kurz abgeschaltet und die Fenster Summe neu geschrieben. Könnte ja sein dass im Schlafzimmer Fenster offen sind. Die aber nachts nicht kritisch sind. Am Tag dann aber wieder die volle Überwachung wenn keiner da. Dan wären evtl mehr Fenster offen als nachts da diese dort nicht beachtet werden.
Noch eine Situation. Urlaub. Soll immer aktiv sein. Nachts dann auch alle Fenster. Wenn aber der Blumen Gießer Mann kommt (mit ekm) dann aber kein Alarm.

Ja, bitte hier mit reinsetzen. Bin auch am überlegen wie und womit alles, und habe schon eine kleine Version mit manuellem Ein- Ausschalten. Will evt. einen RFID Empfänger mit einbinden oder die AKM.

Ach und nicht zu sehr auf die Nacht setzen, bei bekannten war der Einbruch tagsüber.

Jan

So hier mal der Erste Versuch…
Wie man schon sieht ist das sehr komplex und unübersichtlich. Es funktioniert zwar, aber sehr schwer zu ändern, oder anzupassen.

40826 /[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\aktualisieren]/

<?

$IDAuswahl 		= 52577 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)]*/;
$IDLink01  		= 13878 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\1 Anzahl]*/;
$IDLink02  		= 23993 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\2 Anzahl]*/;
$IDLink03  		= 33470 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\3 Anzahl]*/;
$IDAktuell 		= 35241 /*[!Aktuelle Projekte\Alarmanlage\03 Aktuell Wieviele Fenster offen]*/;
$IDAlarmScharf = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;




// Welcher Status ist aktuell?
$Auswahl = getvalue ($IDAuswahl);
switch ($Auswahl){
	case 1:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink01) ['TargetID']);		break;
	case 2:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink02) ['TargetID']);		break;
	case 3:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink03) ['TargetID']);		break;
}

setvalue ($IDAktuell, $AkutelleAnzahl);

?>

56366 /[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\bei änderung von Tag Nachtwache]/

<?

$IDAuswahl	 	= 52577 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)]*/;
$IDLink01 		= 13878 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\1 Anzahl]*/;
$IDLink02 		= 23993 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\2 Anzahl]*/;
$IDLink03 		= 33470 /*[!Aktuelle Projekte\Alarmanlage\02 Aktuell Welche Art der Überwachung (Tag Nacht Urlaub)\3 Anzahl]*/;
$IDAktuell 		= 35241 /*[!Aktuelle Projekte\Alarmanlage\03 Aktuell Wieviele Fenster offen]*/;
$IDAlarmScharf = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;
$IDSpeicher 	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;

// Welcher Status ist aktuell?
$Auswahl = getvalue ($IDAuswahl);
switch ($Auswahl){
	case 1:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink01) ['TargetID']);		break;
	case 2:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink02) ['TargetID']);		break;
	case 3:		$AkutelleAnzahl = GetValue(IPS_GetLink ($IDLink03) ['TargetID']);		break;
}


setvalue ($IDAktuell, $AkutelleAnzahl);
setvalue ($IDSpeicher, $AkutelleAnzahl);

?>

10260 /[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf\Alarm kurzzeitig ausschalten, wenn Wohnung verlassen (Wohnungstür)]/

<?

$IDWohnungstuerInnen = 39773 /*[Hardware\Homematic\Türschalter\Wohnungstür\STATE]*/;
$IDAlarmScharf = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;


if (getvalue ($IDWohnungstuerInnen) == true){
	if (getvalue ($IDAlarmScharf) == true){
	   setvalue ($IDAlarmScharf, false);
	   IPS_Sleep (20000 /*[Objekt #20000 existiert nicht]*/);
  	   setvalue ($IDAlarmScharf, true);
		}else{}
	}else{
	}


?>

57338 /[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf\Alarm Scharf Schalten wenn Niemand im Haus]/

<?

$IDJemandImHaus = 31334 /*[!Aktuelle Projekte\Alarmanlage\01 Jemand im Haus]*/;
$IDAlarmScharf = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;

$JemandImHaus = getvalue($IDJemandImHaus);

// Wenn jemand im Haus (AKM) dann Alarm Aus, sonst ein
if ($JemandImHaus == true) {
	setvalue ($IDAlarmScharf, false);
	}else{
	setvalue ($IDAlarmScharf, true);
	}


?>

39372 /[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf\wenn Alarm Scharf und Fenster Anzahl geändert]/

<?

$IDAlarmAusloesen 		= 18856 /*[!Aktuelle Projekte\Alarmanlage\06 Alarm ausgelöst]*/;
$IDAlarmScharf          = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;
$IDAnzFensterSpeicher 	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;
$IDAnzFensterAktuell		= 35241 /*[!Aktuelle Projekte\Alarmanlage\03 Aktuell Wieviele Fenster offen]*/;

$AnzFensterAktuell      = getvalue ($IDAnzFensterAktuell);
$StatusAlarmScharf 		= getvalue ($IDAlarmScharf);
$AnzFensterSpeicher 		= getvalue ($IDAnzFensterSpeicher);


// Nur wenn Alarm Scharf
if ($StatusAlarmScharf == true){

// Ein Fenster wurde geschlossen
if ($AnzFensterAktuell < $AnzFensterSpeicher){setvalue ($IDAnzFensterSpeicher, $AnzFensterAktuell);}

// Ein Fenster wurde geöffnet
if ($AnzFensterAktuell > $AnzFensterSpeicher){setvalue ($IDAnzFensterSpeicher, $AnzFensterAktuell);			setvalue ($IDAlarmAusloesen, true);  ips_sleep (5000); 	setvalue ($IDAlarmAusloesen, false);}

}

?>

29733 /[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf\wenn Alarm scharfgeschalten wird Fenster Anzahl übernehmen]/

<?



$IDAlarmAusloesen 		= 18856 /*[!Aktuelle Projekte\Alarmanlage\06 Alarm ausgelöst]*/;
$IDAlarmScharf          = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;
$IDAnzFensterSpeicher 	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;
$IDAnzFensterAktuell		= 35241 /*[!Aktuelle Projekte\Alarmanlage\03 Aktuell Wieviele Fenster offen]*/;

$AnzFensterAktuell      = getvalue ($IDAnzFensterAktuell);
$StatusAlarmScharf 		= getvalue ($IDAlarmScharf);
$AnzFensterSpeicher 		= getvalue ($IDAnzFensterSpeicher);

setvalue ($IDAnzFensterSpeicher, $AnzFensterAktuell);

?>

der zweite Versuch sollte etwas übersichtlicher werden

Anbei mal ein Screenshot.

Dort wollte ich dann mit AND und OR Funktionen die einzelnen Situationen abfragen.
Erste Schritte hier

<?
// IDs
$IDSwitchTag 			= 43174 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Tag]*/;
$IDSwitchUrlaub   	= 35061 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Urlaubsmodus]*/;
$IDSwitchParty    	= 46475 /*[!Aktuelle Projekte\Alarmanlage\01 Party Modus]*/;
$IDSwitchAnwesend 	= 31334 /*[!Aktuelle Projekte\Alarmanlage\01 Jemand Anwesend]*/;

$IDFensterAnzAkt		= 35241 /*[!Aktuelle Projekte\Alarmanlage\03 Aktuell Wieviele Fenster offen]*/;
$IDFensterAnzEin  	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;

$IDFensterAlle       = 19154 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S1 Alle Fenster\Anzahl]*/;
$IDFensterNacht      = 52015 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S3 Nachtwache\Anzahl]*/;
$IDFensterParty      = 0;



$T = Getvalue ($IDSwitchTag);
$U = Getvalue ($IDSwitchUrlaub);
$P = Getvalue ($IDSwitchParty);
$A = Getvalue ($IDSwitchAnwesend);

echo "Urlaub 1   und Anwesend 0:   ".($U and !$A)."
";
echo "Anwesend 1 und Tag 0:   	  ".($A and !$T)."
";
?>

04.JPG

Das sehe ich absolut genauso - ich habe nur meine Meinung in die Runde geworfen. Ich bin halt nur der Meinung dass hier so manches Mal über´s Ziel hinausschiesst weil „es geht“.
Damit gebe ich nun aber auch Ruhe.

Dies müsste jetzt mal ein Ansatz sein, auf den jeder aufbauen kann.

46112 /[!Aktuelle Projekte\Alarmanlage\01 Alarm scharfschalten]/

<?
// IDs
$IDSwitchTag 			= 43174 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Tag]*/;
$IDSwitchUrlaub   	= 35061 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Urlaubsmodus]*/;
$IDSwitchParty    	= 46475 /*[!Aktuelle Projekte\Alarmanlage\01 Party Modus]*/;
$IDSwitchAnwesend 	= 31334 /*[!Aktuelle Projekte\Alarmanlage\01 Jemand Anwesend]*/;

$IDFensterAnzEin  	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;

$IDFensterAlle       = 19154 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S1 Alle Fenster\Anzahl]*/;
$IDFensterNacht      = 52015 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S3 Nachtwache\Anzahl]*/;

$IDAlarmScharf       = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;
$IDAlarmAusgeloest   = 18856 /*[!Aktuelle Projekte\Alarmanlage\06 Alarm ausgelöst]*/;

// Variablen
$Tag 				= Getvalue ($IDSwitchTag);
$Urlaub 			= Getvalue ($IDSwitchUrlaub);
$Party 			= Getvalue ($IDSwitchParty);
$Anwesend 		= Getvalue ($IDSwitchAnwesend);


// Logik
//   Party ------ Ja  ------------------ Alarm OFF
//    | Nein
//   Anwesend --- Ja ----- Tag --- Ja -- Alarm OFF
//    |                     | 
//    |                     -- Nein ---- Alarm ON
//    | Nein
//   Urlaub ----- Ja ------------------- Alarm ON
//    | 
//    ----------- Nein ----------------- Alarm ON


// Kurzzeitig Alarm Ausschalten (Sonst wird Alarm beim Umschalten ausgelöst)
Setvalue ($IDAlarmScharf, false);

// Alarm Scharf
if ($Party == true){
	$Alarm = false;
	}else{
	if ($Anwesend == true){
	   if ($Tag == true){
			$Alarm = false;
			}else{
         $Alarm = true;
			}
		}else{
		if ($Urlaub == true){
			$Alarm = true;
			}else{
			$Alarm = true;
			}
		}
	}


// Welche Fenster
if ($Tag == true){
	$FensterAnzahlSpeicher = getvalue ($IDFensterAlle);
	}else{
	$FensterAnzahlSpeicher = getvalue ($IDFensterNacht);
	}

// Variablen schreiben
Setvalue ($IDAlarmScharf, $Alarm);
setvalue ($IDFensterAnzEin,$FensterAnzahlSpeicher);

?>

39259 /[!Aktuelle Projekte\Alarmanlage\02 Fenster geöffnet]/

<?
// IDs
$IDSwitchTag 			= 43174 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Tag]*/;
$IDSwitchUrlaub   	= 35061 /*[!Aktuelle Projekte\Alarmanlage\01 Alarm Urlaubsmodus]*/;
$IDSwitchParty    	= 46475 /*[!Aktuelle Projekte\Alarmanlage\01 Party Modus]*/;
$IDSwitchAnwesend 	= 31334 /*[!Aktuelle Projekte\Alarmanlage\01 Jemand Anwesend]*/;

$IDFensterAnzEin  	= 42903 /*[!Aktuelle Projekte\Alarmanlage\04 Anzahl Fenster Beim Alarm Einschalten]*/;

$IDFensterAlle       = 19154 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S1 Alle Fenster\Anzahl]*/;
$IDFensterNacht      = 52015 /*[Dienstprogramme\Benachrichtiung\Fenster Check\S3 Nachtwache\Anzahl]*/;

$IDAlarmScharf       = 27778 /*[!Aktuelle Projekte\Alarmanlage\05 Alarmscharf]*/;
$IDAlarmAusgeloest   = 18856 /*[!Aktuelle Projekte\Alarmanlage\06 Alarm ausgelöst]*/;

// Variablen
$Tag 				= Getvalue ($IDSwitchTag);
$Urlaub 			= Getvalue ($IDSwitchUrlaub);
$Party 			= Getvalue ($IDSwitchParty);
$Anwesend 		= Getvalue ($IDSwitchAnwesend);

// Abfrage ob Alarm Scharf
if (getvalue ($IDAlarmScharf) == true ){

// Welche Fenster (TagNacht)
if ($Tag == true){
	$FensterAktuell = getvalue ($IDFensterAlle);
	}else{
	$FensterAktuell = getvalue ($IDFensterNacht);
	}

// Abfrage Fenster Check
if ($FensterAktuell > getvalue ($IDFensterAnzEin)){
	$Ausgeloest = true;
	}else{
   if ($FensterAktuell < getvalue ($IDFensterAnzEin)){
   	$Ausgeloest = false;
		setvalue ($IDFensterAnzEin, $FensterAktuell);
		}else{
   	$Ausgeloest = false;
		}
	}

setvalue ($IDAlarmAusgeloest, $Ausgeloest);

// Nur Kurzzeitig auslösen
if ($Ausgeloest == true){
IPS_Sleep (1000);
setvalue ($IDAlarmAusgeloest, false);

}else{}
}else{}
?>

Nochmal ganz generell zur Alarmanlage (extern scharf): Den Urlaubsmodus verstehe ich hier nicht. Ist es nicht egal, warum keiner da war? Ob nun das Blumenmädel im Urlaub oder die Putze während eines Arbeitstages oder die Kinder nach der Schule… - wer legitimiert ist (AKM oder Code), der löst den Alarm einfach nicht aus. :confused:

Ich habe auch einen Urlaubsschalter, aber der dient nur dazu, das Haus und IPS wesentlich passiver zu betreiben, an der Alarmanlage ändert sich nix. Als Hausstatus gibt es neben „aktiv“, „allein“ und „schlafend“ noch „betreut“, da reagiert das Haus weniger automatisch (das schont die Nerven des Blumenmädels), aber auch hier: Keine Auswirkungen auf die Alarmanlage.

Zum Thema „intern scharf“: Der Ansatz mit dem teilweisen/verzögerten Alarm gefällt mir. Hilft zwar bei Besuchern wenig, aber dann muss wohl wirklich noch ein Party-Modus her. :smiley:

Grüße
galleto