„Türcam“ ein Homematicskript für die Haustür

…“Ding Dong“ Wer stand vor her Haustür??

Funktion des Skripts kurz erklärt:
Wenn jemand auf die Klingel drückt, „schießt“ die IP Kamera neben der Haustür, oder je nachdem wo sie montiert wurde, ein Foto, welches per Prowl Nachricht an ein iOS Device übermittelt wird.

Benötigt wird:

  • Homematic CCU mit USB Stick und 2. Webserver auf dem ebenfalls PHP läuft
  • zur Vermeidung von System.Exec sollte CUxD laufen und ein Dummydevice zum Auslösen von Befehlen angelegt worden sein
  • Prowl Konto und eingerichtete App – im Vorfeld sollte man sich schon eine API-ID anfordern, damit später das Skript auch nachrichten absenden kann
  • einen „Klingeltaster“ der an die Homematic angebunden ist, wie auch immer

Installieren des Ganzen

Kurz vorweg: geht alles sicherlich eleganter, musste aber schnell fertig werden, deswegen gerne später anregende Diskussionen in den Kommentaren bei Bedarf 😉

 

  1. den Inhalt von tuercam.zip in einen Ordner auf den Webroot des 2. Webservers auf die CCU kopieren, z.B. per ftp – Webroot bei mir „/var/disk/www/“   in den Unterordner „tuercam“ die Dateien aus dem Archiv speichern
  2. folgendes sh Skript auf den USB Stick der Zentrale anlegen:Pfad des USB Sticks bei mir „/var/disk/“ – dieser Pfad muss an allen Stellen ggf. an den eigenen Pfad angepasst werden!!
    Skript nennt sich „grabcamtuer“
    IP Adresse der Kamera „192.168.20.202“ und Bildpfad anpassen

    #!/bin/sh                                                                                                                    
    curl http://192.168.20.202/jpg/1/image.jpg > /var/disk/www/tuercam/tuercam$1.jpg
  3. Skript mit „chmod +x grabcamtuer“ ausführbar machen
  4. In die CCU einloggen und eine Sytemvariable „ipcamcount“ mit Variablentyp Zahl von 0 – 15 anlegen
  5. Ein neues Zentralenskript anlegen:
    Als Auslöser dient der Aktor, andem der Klingelknopf angeschlossen ist.

    Folgender Code in das „Skript“:

    string sTime = system.Date("%S");
    var camcount = dom.GetObject("ipcamcount");
    var camcountInt;
    
    if (camcount.State() > 10) {
    camcount.State(1);
    }
    else
    {
    camcount.State(camcount.State() + 1);
    }
    
    camcountInt = (camcount.State()).ToInteger();
    
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("/var/disk/grabcamtuer  "+ camcountInt);
    string url="'http://prowl.weks.net/publicapi/add?apikey=<<dein_api_key>>&priority=0&application=Homematic%20Demo%20&event=Klingel&url=http://deine_dyndns.org:port/tuercam/tuercam'";
    dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("curl --trace-ascii /var/log/curl.trace -s -k "#url #camcountInt #'.jpg');
    WriteLine(url);

Kurze Erklärung zum Code:
Das kurze Skript im Zentralenprogramm inkrementiert die Systemvariable „ipcamcount“ bei jeder Auführung bis zum eingestellten Maximalwert und fängt dann wieder unten an. Das ist dafür notwendig das kleine sh Skript mit einem veränderlichen Aufrufparameter zu starten und so 10 Bilder (oder mehr, je nach Anpassung) im Speicher zu behalten. Wie vorweg gesagt: das geht sicherlich eleganter aber der hier vorgestellte Code ist authentisch der, der sich aus der „Not“ entwickelt hat und bisher, warum auch – er läuft reibungslos, nicht weiter optimiert wurde. Nach der Speicherung des jeweiligen Bildes wird eine Prowlnachricht versendet in der der aufzurufende Link auf das Bild mitgegeben wird – so hat man direkt nach Eintreffen der Nachricht einen schnellen Zugriff auf das aktuell geschossene Standbild des Klingelnden. Den Link zur Übersichtsseite kann man sich einfach als Lesezeichen oder Homescreen-Icon aufs iPhone / iPad oder was auch immer setzen.

Die Prowl App sollte noch entsprechend eingestellt werden:

Damit ist die Einrichtung abegeschlossen und das Werk sollte wie erklärt arbeiten. Diese Anleitung richtet sich in jedem Fall an fortgeschrittene Homematic-User, die wissen was sie tun. Auf Details wie man die Telnet Konsole der CCU öffnet oder CUxD installiert o.ä. gehe ich nicht weiter ein!! Dafür gibt es genug Anlaufstellen in den diversen Foren. Anregungen zur Verbesserung des Skripts sind gerne willkommen.

Vielen Dank an Christian S. der sich dieses Skript gewünscht hat – ohne ihn gäb es diesen Artikel nicht 😉

VN:F [1.9.22_1171]
Rating: 3.8/5 (6 votes cast)