
WebCam mit Homematic verbinden
Der Hintergrund dieser Aktion war, dass eine WebCam im Wohnbereich installiert
wurde. Dies war die Folge eines Einbruchs, zukünftig sollen die Langfinger bei
ihren Missetaten beobachtet werden. Entschieden habe ich mich dabei für das
folgende Gerät:

FI8921W von Foscam
Die Verbindung ist bei dieser Kamera sowohl über WLAN als auch LAN möglich. Die
Kamera wird ganz normal ins Heimnetz eingebunden und erhält via DHCP eine feste
IP-Adresse. Die entsprechenden Konfigurationen dafür werden im Web-Interface der
Kamera bzw. des Routers vorgenommen.
Die Kamera lädt nun, sobald sie eine Bewegung erkennt, Bilder auf einen
FTP-Server hoch und ist auch in der Lage, Bilder per Mail abzusetzen. Das ist
prinzipiell gut, führt jedoch dazu, dass ich ständig mit Mails bombardiert
werde, sobald die Kinder durchs Wohnzimmer toben. Hier kommt nun das
Homematic-System ins Spiel.
Wenn alle das Haus verlassen haben, so geht der Status des Hauses auf
“Abwesend”. Die Erkennung dieses Zustands erfolgt über eine
Keymatic. Gleichzeitig damit erhält die Kamera den Befehl, jetzt alle
Bewegungen auszuwerten und entsprechende Alarm-Mails zu generieren. Auch ist
eine Steuerung der Kamera-Position möglich, wenn beispielsweise das Fenster
aufgebrochen wird, so fährt die Kamera in diese Richtung. Das Gleiche gilt für
ein unberechtigtes Öffnen der Haustür.
Wie ist das nun umgesetzt?
Zuerst werden in der Kamera die einzelnen Positionen gespeichert, die die Kamera
anfahren soll. In meinem Beispiel gibt es da “Couch”, “Fenster”, “Kueche”. Die
weiteren Position spielen in diesem Beispiel keine Rolle.

Innerhalb der
CCU habe ich nun auch eine Variable angelegt, die die gleichen Werte
enthält. Diese Variable wird verändert, wenn bestimmte Ereignisse eintreten.

Das folgende Programm reagiert beispielsweise, wenn ein Fenster geöffnet wird
oder die Haustür geöffnet wird. Dazu wurde an der Haustür und den entsprechenden
Fenstern ein
Homematic Tür/Fensterkontakt angebracht. Die Kamera-Position wird auf die
entsprechende Richtung gesetzt. Nach 3 Minuten geht's dann wieder in die
Grundstellung.

Damit ist schon ein wichtiger Schritt vollzogen: Über
das Web-Interface ist die Position der Kamera sichtbar, kann protokolliert
werden etc. Nun geht es darum, die Kamera direkt anzusteuern. Hierzu muss auf
das Web-Interface der Kamera zugegriffen werden. Das ist nur über ein Script
möglich. Ein Beispiel für die Steuerung:
http://IP_der_Kamera/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Couch&usr=USER&pwd=PASSWORT
Der Aufruf im Browser bewirkt, dass sich die
Kamera nun in die Position Couch begibt. Nun muss dieser Aufruf durch die CCU
erfolgen:
string text;
text="http://IP_der_Kamera/cgi-bin/CGIProxy.fcgi?cmd=ptzGotoPresetPoint&name=Couch&usr=USER&pwd=PASSWORT";
dom.GetObject("CUxD.CUX2801001:1.CMD_SETS").State("wget -q -O /dev/null '" #
text # "'");
dom.GetObject("CUxD.CUX2801001:1.CMD_RUNS").State(1);
Da hierzu die System-Funktion System.Exec
aufgerufen werden muss, nutze ich hier den CUx-Daemon. Ist die Kamera, aus
welchen Gründen auch immer, nicht ansprechbar, so schmiert die CCU sonst
komplett ab. Der CUxD löst dieses Problem.
Kurz zur Erläuterung: In der text-Variable wird der Befehl an die Kamera
zusammengebaut. Die IP-Adresse der Kamera, sowie USER und PASSWORT sind dabei
natürlich durch die eigenen Daten zu ersetzen. Die vorletzte Zeile übergibt den
Befehl an das Programm wget, welches (vereinfacht gesagt) einen Internet-Browser
imitiert. In der letzten Zeile wird dann der eigentliche Befehl ausgeführt.
In der gleichen Art und Weise kann die Kamera auch in ihrer Alarmfunktion
gesteuert werden. Der folgende Link schaltet die Bewegungserkennung auf die
mittlere Stufe und sorgt dafür, dass bei Bewegung jede Sekunde ein Bild abgelegt
wird:
text="http://IP_der_Kamera/cgi-bin/CGIProxy.fcgi?";
text = text # "cmd=setMotionDetectConfig&isEnable=1&linkage=12&";
text = text # "snapInterval=1&sensitivity=2&triggerInterval=1&";
text = text # "schedule0=281474976710655&schedule1=281474976710655&";
text = text # "schedule2=281474976710655&schedule3=281474976710655&";
text = text # "schedule4=281474976710655&schedule5=281474976710655&";
text = text # "schedule6=281474976710655&area0=1024&area1=1024&";
text = text # "area2=1024&area3=1024&area4=1024&area5=1024";
text = text # "&area6=1024&area7=1024&area8=1024&area9=1024&";
text = text # "usr=USER&pwd=PASSWORT";
Die einzelnen schedule-Werte geben die Zeiten
innerhalb der Woche an, an welchem die Bewegungserkennung aktiv ist. Die
area-Werte geben den Bereich an, in dem die Kamera auf Bewegung reagiert.
Viel einfacher ist das Abschalten der Bewegungserkennung:
text="http://IP_der_Kamera/cgi-bin/CGIProxy.fcgi?";
text = text # "cmd=setMotionDetectConfig&isEnable=0&";
text = text # "usr=USER&pwd=PASSWORT";
Hierzu habe ich dann ein weiteres Programm erstellt, welches sich an die
(Standard-)Variable Anwesenheit der CCU hängt und dann die Bewegungserkennung
ein- bzw. ausschaltet.
Damit haben wir nun alle Teile beisammen: Die Kamera kann von der CCU in
die einzelnen Positionen gesteuert werden. Die Alarmerkennung wird abgeschaltet,
sobald sich jemand (berechtigterweise) im Haus aufhält. Das Ziel ist erreicht:
Ich bekomme keine ständigen Alarmmeldungen, obwohl gar keine "bösen" Buben im
Haus sind.
Was wird nun für dieses Beispielprojekt alles benötigt?
Kleine Einkaufsliste:
1x CCU 1
oder CCU 2
2x Tür/Fensterkontakt
oder mehrere, je nach Anzahl der Türen, Fenster etc.
1x Keymatic (für Anwesenheitserkennung)
1x IP-Webcam
Bei Fragen zu diesem Projekt wenden Sie sich bitte per Mail an
Michael Moll.
Zurück zur Projekt-Übersicht
Stand: 28.03.2014