Software
Other
Homematic CCU3
- Zeitgesteuerte Kameraoperationen
- Verwendung der Homematic CCU3 als Alarmserver für unsere Kamera
- Anschließen unserer Kamera an einen Homematic Bewegungsmelder
In diesem Tutorial werden wir die Homematic CCU3 verwenden, um eine INSTAR Full HD-Kamera über die Homematic WebUI zu steuern. Beachten Sie, dass es ein weiteres Tutorial gibt, das Node-RED über das Homematic RedMatic-Plugin verwendet, um im Grunde dasselbe zu tun. Wenn Ihnen Node-RED mehr liegt, finden Sie das RedMatic-Tutorial hier.
Zeitgesteuerte Kameraoperationen
In diesem Abschnitt möchten wir einen Zeitplan erstellen, um zu bestimmten Tageszeiten automatisch CGI-Befehle an unsere Kamera zu senden. Was wir erreichen wollen, ist eine Automatisierung, die die Bewegungserkennung der Kamera aktiviert, nachdem wir an einem Arbeitstag unser Hause verlassen haben, und sie deaktiviert, bevor wir wieder zu Hause ankommen.
Dazu erstellen wir mit CUx-D eine virtuelle Schaltfläche und schreiben in der Homematic-Benutzeroberfläche ein kleines Skript, das diese Schaltfläche auslöst, wenn es Zeit ist, den Alarm ein- / auszuschalten und den entsprechenden Befehl an unsere Kamera zu senden.
Installieren des CUx Daemon
Wir werden den CuX Deamon verwenden, um eine virtuelle Taste zu erstellen, an die wir später unsere programmierte Logik anhängen um Befehle an unsere Kamera senden können.
Wir müssen zuerst die neueste Version von CuxD herunterladen - im Moment ist dies:
Wählen Sie die richtige Version für Ihre CCU - in meinem Fall ist dies die CCU3:
Jetzt können wir CuxD auf unserer Homematic CCU3 installieren. Gehen Sie zu Einstellungen / Systemeinstellungen und klicken Sie auf Zusatzsoftware:
Wählen Sie nun die heruntergeladene Datei aus und klicken Sie auf Installation. Und nach dem Hochladen der Datei auf Starte Installation. Warten Sie einige Minuten und laden Sie die Homematic-Benutzeroberfläche neu, sobald die CCU wieder online ist.
Erstellen einer virtuellen Schaltfläche
Kehren Sie in der Homematic-Benutzeroberfläche zu Settings / System Settings zurück und klicken Sie auf die neue Schaltfläche CUx-Daemon:
Klicken Sie auf Geräte und wählen Sie:
- Gerätetyp: (28) System
- Funktion: Exec
- Seriennummer: einfach bei 1 belassen
- Name: kann leer gelassen werden
- Icon: wählen Sie ein Icon
- Control: Taster
Klicken Sie auf Gerät erzeugen, um Ihre Einstellungen zu speichern:
Wir können den Button aus dem obigen Beispiel ansprechen, indem wir CUX2801001:1
die ID der Schaltfläche mit der angehangenen Seriennummer anrufen - dies war oben die 1
(CUX2801001
repräsentiert den Typ, die Funktion usw., die wir für unsere Schaltfläche ausgewählt haben). Im nächsten Schritt werden wir ein kleines Programm schreiben, das unserer Schaltfläche eine Reihe von Linux-Befehlen zuweist, die jedes Mal ausgeführt werden (EXEC), wenn die Schaltfläche verwendet wird.
Programm erstellen
Wir wollen jetzt ein Programm schreiben, das den Alarmplan unserer Kamera deaktiviert, wenn wir zu Hause sind, und ihn wieder aktivieren, nachdem wir zur Arbeit gegangen sind. Zu diesem Zweck weisen wir der virtuellen Schaltfläche, die wir oben erstellt haben, einen wget
Befehl zu. Dieser Befehl kontaktiert unsere Kamera jedes Mal, wenn die virtuelle Taste ausgelöst wird und verwendet den CGI-Befehl, um den Alarmzeitplan einzuschalten.
Navigieren Sie zum Programmmenü und klicken Sie auf NEU, um das neue Programm zu erstellen:
Wählen Sie Zeitsteuerung für die WENN Bedingung unseres Programms und stellen Sie das Zeitfenster ein, indem Sie nicht zu Hause sind. Im Beispiel wähle ich ein Fenster von 8:30 bis 18:30 Uhr an Werktagen:
Jetzt müssen wir die Aktion schreiben, die ausgelöst werden soll, wenn die DANN Bedingung erfüllt ist. Klicken Sie auf das grüne Kreuz und wählen Sie Script aus dem Dropdown-Menü. Klicken Sie auf die drei Punkte, die daneben angezeigt werden, um Ihr Skript hinzuzufügen:
Dadurch wird der Skript-Editor geöffnet. Kopieren Sie nun den folgenden Skriptblock und fügen Sie ihn in den Editor ein.
Sie müssen den CGI-Befehl entsprechend Ihrer Kameraeinstellung anpassen - Im Beispiel habe ich ein IN-8015 Full HD für die IP-Adresse 192.168.2.117
verwendet und einen Administrator-Login mit dem Benutzernamen admin
und dem Passwort instar
:
WriteLine("Motion Detection Armed");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=setscheduleex&-ename=md&-week0=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week1=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week2=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week3=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week4=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week5=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week6=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-usr=admin&-pwd=instar'");
In diesem CGI-Befehl stellen
week0
-week6
die Wochentage Mo - So dar und jedesP
steht für 30 Minuten des Tages (48 x 30 Minuten = 24 Stunden), an dem der Alarm auf Ihrer Kamera aktiv ist. Sie können diesen Zeitplan anpassen, indem Sie einen Teil desP
s durchN
s ersetzen. JedesN
deaktiviert den Alarm für 30 Minuten während dieser Tageszeit.
OPTIONAL: Sie können Ihr Skript testen, indem Sie die Homematic WebUI in einem anderen Browser-Tab ein zweites Mal öffnen, zum Programmmenü wechseln und statt eines NEUEN Programms auf Skript testen klicken und Ihr Skript in das Eingabefeld kopieren:
Durch Ausführen des Skripts erhalten Sie die Befehlszeilenausgabe Motion Detection Armed
und schalten den Alarmzeitplan an Ihrer Kamera ein. Ersetzen Sie alle P
s im CGI-Befehl durch N
s und versuchen Sie es erneut - jetzt wird der Zeitplan deaktiviert.
Jetzt müssen wir als SONST Bedingung nur noch den CGI Befehl zum deaktivieren des Alarmzeitplans hinzufügen und unser Programm ist fertig:
WriteLine("Motion Detection Disarmed");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=setscheduleex&-ename=md&-week0=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week1=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week2=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week3=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week4=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week5=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-week6=NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&-usr=admin&-pwd=instar'");
Klicken Sie auf OK, um das Programm zu speichern. Das Skript wird jeden Morgen um 8:30 Uhr ausgelöst und aktiviert den Alarm auf Ihrer Kamera. Um 18:30 Uhr wird die SONST Bedingung erfüllt und der Alarm wird ausgeschaltet, bevor Sie nach Hause zurückkehren.
Zusatz: Wenn Sie mehr als eine Kamera haben, können Sie diese gleichzeitig aktivieren und deaktivieren. In diesem Fall fügen Sie dem Skript einfach weitere Befehle hinzu, die Sie ausführen möchten:
WriteLine("Motion Detection Armed");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.114/param.cgi?cmd=setscheduleex&-ename=md&-week0=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week1=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week2=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week3=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week4=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week5=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week6=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-usr=admin&-pwd=instar'");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.115/param.cgi?cmd=setscheduleex&-ename=md&-week0=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week1=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week2=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week3=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week4=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week5=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week6=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-usr=admin&-pwd=instar'");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.116/param.cgi?cmd=setscheduleex&-ename=md&-week0=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week1=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week2=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week3=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week4=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week5=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week6=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-usr=admin&-pwd=instar'");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=setscheduleex&-ename=md&-week0=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week1=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week2=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week3=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week4=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week5=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-week6=PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP&-usr=admin&-pwd=instar'");
Hinweis Dies ist nur ein Beispiel für die Automatisierung Ihrer Kamerafunktion. Jede andere Funktion Ihrer Kamera kann von der Homematic CCU3 auf dieselbe Weise zeitgesteuert werden - Sie müssen lediglich den CGI-Befehl mit einem anderen Befehl aus unserer CGI-Dokumentation austauschen.
Verwendung der Homematic CCU3 als Alarmserver für unsere Kamera
Es gibt eine neue Alarmserver API für WQHD 2K+ Kameras. Die einzelnen Schritte unten sind weiterhin gültig. Nur der URL Query nennt sich jetzt &trigger
anstelle von &active
, die Zahlenwerte haben sich geändert und ermöglichen jetzt das auswerten mehrerer, zeitgleicher Alarmauslöser! Sie finden eine Beispiel-Implementierung der MQTT- and HTTP-Alarmserver v2 API mit Node-RED hier.
Wir haben jetzt die Möglichkeit, CGI-Befehle geplant abzusenden, um unsere Kamera über die Homematic-Benutzeroberfläche zu automatisieren. In diesem Abschnitt wollen wir uns nun ansehen, wie wir die Homematic CCU3 benachrichtigen können, wenn unsere Kamera mithilfe des internen PIR-Sensors eine Bewegung erkennt.
Das Problem, das wir lösen werden, ist, dass es oft gewünscht wird, die IR-Nachtsicht-LEDs ausgeschaltet zu lassen, bis der PIR-Bewegungsmelder ausgelöst wird. Dies reduziert die Sichtbarkeit unserer Kamera in der Nacht sowie unsere Stromrechnung und vor allem ziehen wir nachts keine fliegenden Insekten mehr an, die wiederum Spinnen anziehen, die ihre Netze vor unserer Kameralinse bauen!
Alle INSTAR HD- und Full HD-Kameras können eine HTTP-GET-Anforderung an einen externen Alarmserver senden, wenn ein Alarm vom internen PIR-Sensor ausgelöst wird. Wir können auf der CCU3 einen Webhook erstellen, der eine solche Anforderung abfängt und eine Systemvariable schaltet. Danach müssen wir nur noch ein kleines Programm schreiben, das einen CGI-Befehl an unsere Kamera sendet, der die IR-LEDs für eine Minute einschaltet und dieses mit der Variable koppeln.
Einrichten einer Systemvariablen
Um eine neue Systemvariable zu erstellen, gehen Sie zu Einstellungen / Systemvariable und klicken Sie auf NEU:
Ich werde die Variable motion_detected_8015
nennen, die vom Typ Alarm
ist und nach dem Auslösen wahr
sein sollte. Klicken Sie auf OK, um die Variable zu speichern.
Alarmserver konfigurieren
Die Homematic-Software bietet uns jetzt einen Webhook, mit dem wir die Variable durch Senden einer Webanforderung an den CCU3-Server auslösen können. Wenn Ihre Homematic Server-IP beispielsweise 192.168.2.14
lautet (ändern Sie diese Adresse in Ihre eigene Server-Adresse), senden Sie die folgende Anfrage an Port 8181
:
http://192.168.2.14:8181/ccu3.exe?Antwort=dom.GetObject("motion_detected_8015").State(1)
Die ccu3.exe
kann beliebig benannt werden - voelligegal.exe
. Wir müssen dann die Variable spezifizieren die wir auslösen wollen motion_detected_8015
und in welchen Zustand wir sie versetzen wollen - beim Erstellen der Variablen wählten wir das 1
bedeutet, dass die Variable wahr
ist, also müssen wir hier State (1)
wählen.
Kopieren Sie diesen Befehl in die Adressleiste Ihres Browsers und geben Sie Ihre Homematic-Benutzeranmeldung ein. Wenn Sie die Anfrage absenden, wird unsere Variable ausgelöst:
Wir haben das Konzept getestet und können jetzt diesen Webhook zu unseren Kameras Alarmserver Konfiguration hinzufügen, damit die Kamera bei jedem Auslösen des internen Alarms unsere CCU3 benachrichtigt:
Vergessen Sie nicht, den Alarmserver zu aktivieren und Ihre Homematic-Authentifizierung hinzuzufügen, damit Ihre Kamera die CCU3 kontaktieren kann.
Jetzt können wir zu den Alarm Aktionen wechseln und den PIR Bewegungsmelder aktivieren (stellen Sie sicher das alle Alarmbereiche und und die Kopplung mit dem PIR Sensor deaktiviert sind):
Wir können jetzt das Programm testen - gehen Sie vor Ihre Kamera und sehen Sie, ob die Systemvariable ausgelöst wird:
Die Variable wurde ein zweites Mal ausgelöst - diesmal von unserer Kamera!
Das Programm schreiben
Wie bereits zuvor können wir nun ein kleines Programm schreiben, das durch den Zustandswechsel der Systemvariablen motion_detected_8015
ausgelöst wird. Gehen Sie dafür zum Programmmenü zurück und wählen Sie Neu, um ein neues Programm zu erstellen:
Das Skript, das wir benötigen, soll die IR-LEDs unserer Kamera aktivieren und - nach einer Verzögerung von 60s - wieder deaktivieren. Dies kann mit den folgenden zwei Skripten erfolgen:
WriteLine("Activate IR Nightvision");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=setinfrared&-infraredstat=auto&-usr=admin&-pwd=instar'");
WriteLine("Deactivate IR Nightvision");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=setinfrared&-infraredstat=close&-usr=admin&-pwd=instar'");
Klicken Sie auf OK, um das Programm zu speichern. Wenn Sie jetzt wieder vor Ihre Kamera treten, wird die Systemvariable ausgelöst und die Nachtsicht-IR-LEDs Ihre Kamera werden auf automatisch gestellt (Sie werden nur bei Dunkelheit eingeschaltet). Nach einer Minute wechseln sie wieder in den deaktivierten Zustand:
Anschließen unserer Kamera an einen Homematic Bewegungsmelder
In einem früheren Tutorial hatten wir bereits den Homematic PIR Sensor zur CCU3 hinzugefügt und Wir haben eine Systemvariable erstellt, die ausgelöst wird, wenn der Sensor eine Bewegung erkennt. Anschließend haben wir RedMatic - ein Node-RED-Addon für Homematic - installiert, um unsere Kamera mit dieser Systemvariablen zu verknüpfen. Dieses Mal werden wir es ohne die Hilfe von Node-RED machen.
Jetzt möchten wir die Alarmmeldung des externen PIR-Sensor verwenden, um unsere Kamera in eine andere Position zu schwenken zu lassen. Als Beispiel: Unsere Kamera beobachtet die linke Hausseite, während der PIR-Sensor die rechte Seite im Auge behält. Sobald der PIR Sensor eine Bewegung erkennt wollen wir die Kamera nach rechts schauen lassen, um den potentiellen Eindringling zu erfassen.
Das Programm das wir bereits erstellt hatten nutzt die Alarmmeldung des Homematic PIR Sensor (HM-Sen-MDIR-O-2 NEQ1545018:1
) um die System Variable PIR Sensor
auszulösen:
We now need a second program that uses the the state of the PIR Sensor
variable to send commands to our camera. So go to the Program Menu and click NEW:
Wir benötigen jetzt ein zweites Programm, das den Status der Variablen PIR Sensor
verwendet, um Befehle an unsere Kamera zu senden von Position 1 auf Position 2 zu wechseln. Gehen Sie also zum Programmmenü und klicken Sie auf NEU. Geben Sie beim Script die folgenden Zeilen ein:
WriteLine("Go to Position 2");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=preset&-act=goto&-number=1&-usr=admin&-pwd=instar'");
Wir können dann ein zweites Skript hinzufügen, das nach einer kurzen Verzögerung von 60s unsere Kamera zurück auf Position 1 bringt:
WriteLine("Go to Position 1");
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O - 'http://192.168.2.117/param.cgi?cmd=preset&-act=goto&-number=0&-usr=admin&-pwd=instar'");
Hinweis: Alternativkann hierfür auch die Kamera Park Position verwendet werden - die Kamera kehrt nach einem einstellbaren Zeitintervall nach dem Bewegen immer in die Parkposition zurück. Darüber ließen sich dann auch mehrere PIR Sensoren einbinden:
- Wenn PIR Sensor 1 auslöst schaue nach links
- Wenn PIR Sensor 2 auslöst schaue nach rechts
- Ansonsten schaue geradeaus (über die Parkposition)
Und schon hat man multiple Blickwinkel abgedeckt, für die man zuvor mehrere Kameras benötigt hätte.
Ergänzung: Anstatt über die Systemvariable zu gehen, kann man alternativ auch direkt beim Eingang der Medlung durch den PIR Sensor den Versand des CGI Befehls auslösen:
Diskutieren Sie diesen Artikel im INSTAR Forum !