Homematic Alarmanlage - Denkblockade

Hi Zusammen,
ich habe vor eine Alarmanlage mit Homematic und IPSymcon zu bauen. Mein Ziel ist es, die Fenster mit Fensterkontakten zu versehen und im Haus Bewegungsmeldet zu haben und ein paar Kleinigkeiten, wie Codeschloss außen und wer weiß was mir noch einfällt.
Meine erste Hürde ist gerade, wie ich im Webfront eigene Buttons (Ein/Aus-Schalter) kreiere. Hintergrund ist, dass ich drei Statis für die Alarmanlage haben möchte:

  • Alarmanlage aus
  • Alarmanlage an - ich bin aber zuhause (schlafend)
  • Alarmanlage an - ich bin nicht im Haus.

Die Idee ist es, das ich via Fernbedienung, via Codeschloss oder direkt im Webfront die Alarmanlage ein oder aus schalten kann. Darauf hin soll der aktuelle Status der Fensterkontakte gespeichert werden (ich lasse auch Nachts gern mal ein Fenster auf) und es soll darauf regiert werden, wenn sich ein Status ändert. Die zwei Probleme, vor denen ich gerade stehe sind:

  • wo speichere ich globale Variablen? Via Textdatei oder kann ich in IPSymcon Variablen deklarieren, die ich für alle Geräte zugänglich machen kann (für das Speichern der Fensterkontakte zu einem bestimmten Zeitpunkt - ändert sich der Status danach, soll es einen Alarm geben, es sei denn, die Alarmanlage ist aus)?

  • Ich muss momentan immer ein Gerät angeben, von dem aus ich Aktionen starte. Beispiel: Ich habe einen Schaltaktor, den ich ein- oder aus schalten kann und von dem aus kann ich den Status der anderen Geräte (Fenstermelder an oder aus) abfragen und ggf. auf eine Aktionen reagieren. Daher die Frage, ob ich losgelöst von einem Gerät einen Button oder whatever als Startpunkt für die Abfrage kreieren kann - ich werde vermutlich ein Ereignis erstellen, das regelmäßig diese Abfragen startet. Mir schwebt eine Seite vor, die drei von diesen Ein/Aus-Schalter in Abhängigkeit zueinander beinhaltet und die darunter liegenden Geräte abfragt und auswertet, um zu entscheiden, ob es ein Alarm gibt oder nicht.

Hat jemand von euch eine Idee? Auch gerne, ob ich mich in meinem Vorgehen völlig in die falsche Richtung verrannt habe und ich mit einer anderen Idee die Homematic Alarmanlage viel einfacher realisieren könnte.

Gruß
Sascha

Ich mach das über Bits. D.h. Du hast eine Integervariable für den Zustan der Fenster. Ein Bit repräsentiert ein Fenster; gesetztes Bit heißt Fenster offen und umgekehrt.

Ich habe sowas in der Art für vergessene Fenster umgesetzt: Wenn der letzte das Haus verlässt und ein Fenster ungeplant noch offen ist, dann gibt es u.a. einen Anruf aufs Handy. Damit im Sommer auch mal ein Fenster gekippt bleiben kann, kann ich IPS den aktuelle Fenster-Zustand als geplant/gewollt mitteilen. Dazu nutze ich eine zusätzliche Variable pro Fenster, um das jeweilige Fenster in der Prüfroutine zu berücksichtigen oder eben nicht. Geht bestimmt schlanker, aber so kann ich leicht über das Variablenprofil im Webfront das entsprechende Fenster mit einem eigenen Icon (roter Rand) versehen, solange es „abgeschaltet“ ist. Trotzdem lasse ich regelmäßig durch IPS den Standardzustand wiederherstellen, sodass dann wieder alle Fenster berücksichtigt werden.

Für die Alarmanlage kannst Du aber auch einfach die Veränderung triggern. Solange ein Fenster offen ist, passiert nix. Erst wenn sich eins öffnet, geht der Alarm los.

Egal wie Du es umsetzt: Ein „intern scharf“ ist mit einigen nicht-technischen Problemen verbunden. :smiley:

Grüße
galleto

@fdhome:
Hi,
was genau meinst du mit Bits? Bits im Sinne von String, Integer, Bits? Oder gibt es noch etwas Anderes was ich gerade nicht kenne?
Gruß
Sascha

@galleto:
Hi,
sowas Ähnliches wollte ich machen aber wie hast du das mit der Variable hin bekomme?
Definiere ich eine BSP:
$Status =„offen“;
ist sie nur innerhalb von den Codezeilen gültig und nicht Global? Wie kriege ich das hin?

Die Problematik mit den Alarmanlage scharf und ich bin Zuhause wird wirklich noch so einiges an Gehirnschmalz erfordern aber da bin ich dran :banghead:
Gruß Sascha

Du legst dir eine Variable im Objektbaum an und der gibst du ein Profil mit den gewünschten Zuständen.

Gruß

Burkhard

Für jedes Fenster - genauer für jede State-Variable - legst Du eine Boolean-Variable an, die Du per Webfront ein- oder ausschaltest. In Deinem Alarmierungsskript prüfst Du, ob für die Alarmursache (= State) der passende Schalter (= entsprechende Boolean) an oder aus ist. Nur wenn der an ist, startet auch der Alarm.

Grüße
galleto

Also ich habe es so gemacht:

Die Variablen der Aktoren liegen ja vor.
Nun habe ich ein Script (meldescript) welches mir eine SMS mit Einbruchalarm sendet.
Diesen habe ich einfach jeweils ein Ereignis hinzugefügt, welches auf die jeweiligen Fensteraktoren getriggert ist.

Für das ein und ausschalten der Alarmanlage brauchst du nur noch ein Script, welches diese Ereignisse entsprechend abschaltet IPS_SetEventActive.

Somit wird bei aktivierter Alarmanlage jegliche änderungen an den Aktoren sofort gemeldet.
Natürlich habe ich diesem Meldescript eine Abfrage hinzugefügt, welches Fenster verändert wurde, um die SMS entsprechend zu befüllen.

Gruß
Frank

@sallydreamer:

hier mal als Beispiel für den Display-Wandtaster von HM, auf dem ich den Status der Fenster visualisiere (zur schnellen Kontrolle). Getriggert wird das Skript von allen Drehgriffkontakten bei Statusänderung.


<?
include ('rolladen.ips.php');

$bf_state_window = 0;
// 00000000 = alle Fenster geschlossen
// 00000001 = Fenster EG geöffnet
// 00000010 = Fenster OG geöffnet
// 00000011 = Fenster EG + OG geöffnet
foreach ($rolladen as $item) {
	if ($item['drehgriff']) {
		$id_drehgriff = IPS_GetObjectIDByIdent('STATE', $item['drehgriff']);
		if (GetValue($id_drehgriff) != 0) {
			switch ($item['location']) {
				case "EG":
	 				$bf_state_window = $bf_state_window | pow(2, 0);
	 			break;
				case "OG":
	 				$bf_state_window = $bf_state_window | pow(2, 1);
	 			break;
			}
		}
	}
}
Sys_GetURLContent('http://x.x.x.x:8181/test.exe?out=dom.GetObject("Fensterstatus").State("'.$bf_state_window.'")');
?>

Das gleiche Prinzip kannst Du ja nutzen, um in einer Variable den Status deiner gesamten Fenster zu speichern.

Gruß
dfhome