Das alte Android-Smartphone als Smart-Home-Security/IP-Cam in FHEM nutzen: Push-Mitteilungen bei erkannter Bewegung

IM EINSATZ?

Dann schau dir UNSEREN LOXKURS an und profitiere von unserem Wissen!

Ein wichtiger Aspekt der Hausautomation ist Sicherheit. Meldet ein Sicherheitssensor Gefahr (z.B. Bewegung, Wasser, Rauch etc.), muss eventuell in Sekundenschnelle gehandelt werden. Um die Lage zuhause auch von unterwegs gut einschätzen zu können, empfiehlt es sich, eine IP-Cam, also eine internetfähige Kamera zu nutzen. Alte Android-Smartphones eignen sich als solche IP-Cams besonders gut, da sie kaum noch einen Wert besitzen, aber doch noch teilweise brauchbare Hardware-Elemente verbaut haben (Wifi-Modul, Kamera, etc.). Hier wird daher Schritt für Schritt vorgeführt, wie ein altes Android-Smartphone in eine IP-basierte Wifi-Kamera umgewandelt wird, wie diese in den Hausautomation-Server FHEM eingebunden wird und wie sie den Nutzer beispielsweise bei Bewegung oder anderen Ereignissen aktiv per Push-Mitteilung auf das Smartphone informiert.

Altes Android zur IP-Cam umrüsten

Die kostenlose App “IP Webcam” im Android-Playstore/Market ermöglicht es, per Webinterface auf die Kamera des Android-Smartphones zuzugreifen. Nach der Installation der App sollten folgende Einstellungen vorgenommen werden:

  • “Prevent going to sleep” aktivieren
  • “Stream on device boot” aktivieren

Nach dem Start des Webcamservers auf dem Android-Device wird die IP-Adresse des Servers unten im Bildschirm angezeigt. Der Zugriff erfolgt standardmäßig über einen Webbrowser und den Port 8080 (z.B. http://192.178.178.46:8080). Hier stehen unterschiedliche Verwendungsmöglichkeiten zur Verfügung (z.B. MJPG-Videofeed etc.), von denen je nach Bedarf eine oder mehrere gewählt werden können. Die ordnungsgemäße Funktion kann durch das an die URL angehängte “/shot.jpg” geprüft werden (z.B.192.168.178.46:8080/shot.jpg). Mit einer dauerhaften Stromversorgung ausgestattet, hat man jetzt eine voll funktionsfähige IP-Cam, die in etwa 1-2 Watt Strom verbraucht.

IP-Cam in FHEM einbinden

Der Open-Source-Hausautomation-Server FHEM, welcher meist auf einem RaspberryPi (Affiliate-Link) betrieben wird, ermöglicht das Erstellen vollindividueller Hausautomation-Abläufe mit Bedingungen und Aktionen, wobei der Hauptvorteil gegenüber anderen Lösungen darin besteht, dass herstellerübergreifend agiert werden kann.

Die Integration der IP-Cam wird in zweierlei Schritten vorgenommen. Zunächst wird das Live-Bild in der Raumübersicht eingebunden, bevor anschließend eine funktionale Integration vorgenommen wird, mit der Aktionen im Smart Home ausgelöst werden können.

1. Schritt: Livebild einbinden
Die Anzeige des Livebilds in der Raumübersicht wird mit Hilfe eines “weblinks” vorgenommen. In der Command-Zeile von FHEM wird die oben angesprochene URL der IP-Cam in einem iframe eingebunden. Mit dem Attribut “htmlattr” können beispielsweise Breite und Höhe des Frames individuell festgelegt werden. Die IP-Adresse (hier 192.168.178.46) aus dem gezeigten Beispiel muss individuell angepasst werden.

define interactive_webcam weblink iframe http://192.168.178.46:8080/shot.jpg
attr interactive_webcam htmlattr width="480" height="320"

2. Schritt: Funktionen aktivieren
Um sinnvolle Abläufe mit der Kamera kreieren zu können, muss mit des Moduls “IPCAM” noch die Funktionskomponente angelegt werden.

define IPCam IPCAM 192.168.178.46:8080
attr IPCam snapshots 3
attr IPCam delay 3
attr IPCam path shot.jpg
attr IPCam event-on-update-reading snapshots
attr IPCam storage /opt/fhem/FHEM

Die erste Zeile verwendet erneut die IP-Adresse der Security-Cam, um die Verbindung herzustellen (auch hier individuell anpassen). Das erste Attribut “snapshots” legt fest, wie viele Bilder im Fall einer Aktivierung durch ein beliebiges Event ausgelöst und gespeichert werden sollen (hier 3). Die Zeit zwischen diesen Aufnahmen wird mit dem “delay”-Wert festgelegt. Schließlich benötigt FHEM noch den Pfad zum Bild auf der IP-Cam, der im vorgestellten Beispiel “shot.jpg” ist. Gespeichert werden die erstellten Bilder im Ordner “/opt/fhem/FHEM”.

Um später im Push-Mitteilungs-Szenario auf die erstellten Snapshots zugreifen zu können, wird mittels des FHEM-Moduls HTTPSRV ein kleiner, auf FHEM basierender Webserver definiert:

define Webserver HTTPSRV jsf /opt/fhem/FHEM Webcam-Bilder

Die angefertigten Snapshots können nun unter der URL von FHEM plus “/jsf” gefunden werden (z.B. 192.168.178.51:8083/fhem/jsf/IPCam_snapshot.jpg).

3. Schritt: Abläufe festlegen
Nach dem Anlegen von Funktion und Live-Bild, gilt es nun, mit Hilfe von FHEM clevere Hausautomation-Abläufe zu gestalten. Anhand eines Beispiels wird dies hier gezeigt. Im vorgeführten Szenario wird…

Hierfür wird dieser Bewegungsmelder (Affiliate-Link) benötigt. Der Hausautomationserver FHEM läuft dabei auf einem RaspberryPi (Affiliate-Link) und ist mittels HomeMatic LAN-Adapter (Affiliate-Link) mit dem Bewegungsmelder verbunden.

Diese Verbindung wird durch Drücken der Anlerntaste auf der Rückseite des Bewegungsmelders (Affiliate-Link) und einem Fhem-seitigen

set HMLAN1 hmPairForSec 60

hergestellt. Der automatisch erzeugte Eintrag in der fhem.cfg (der allumfassenden Konfigurationsdatei) sieht wie folgt aus:

define Bewegungsmelder1 CUL_HM 1F86A3
attr Bewegungsmelder1 .devInfo 810100
attr Bewegungsmelder1 .stc 81
attr Bewegungsmelder1 actCycle 000:10
attr Bewegungsmelder1 actStatus alive
attr Bewegungsmelder1 autoReadReg 4_reqStatus
attr Bewegungsmelder1 expert 2_full
attr Bewegungsmelder1 firmware 1.6
attr Bewegungsmelder1 model HM-SEC-MDIR
attr Bewegungsmelder1 peerIDs 00000000,
attr Bewegungsmelder1 serialNr KEQ0363128
attr Bewegungsmelder1 subType motionDetector

Jetzt ist also schon einmal der Bewegungsmelder (Affiliate-Link) funktionsfähig. Eine weitere Bedingung des hier vorgestellten Beispiel-Ablaufes ist, dass die bei Bewegung erkannten Bilder nur dann per Push-Mitteilung auf das Smartphone weitergeleitet werden, wenn kein Bewohner anwesend ist. Daher wird für das Szenario also auch eine Anwesenheitserkennung benötigt. Hierfür gibt es in FHEM mehrere Möglichkeiten, von denen die Bluetooth-basierte Kontrolle die sinnvollste Variante ist, bei der mit Hilfe eines Bluetooth-USB-Sticks die Anwesenheit der Bewohner überwacht wird. Die Konfiguration wurde hier beschrieben. Im vorgestellten Szenario wird davon ausgegangen, dass entsprechend dem vorgehen im verlinkten Artikel ein Dummy vorhanden ist, der die Anwesenheit mit “on” oder “off” überwacht (hier: “DummyAnwesenheit”).

Der gesamte Programmablauf sieht nun wie folgt aus:

define not_Bewegungsmelder_Webcam notify Bewegungsmelder1:motion {fhem ("get IPCam image") if (ReadingsVal("DummyAnwesenheit","state","") eq "off")}

define not_IPCam_Push notify IPCam {system ("curl -s -F 'token=agxNg2gv9XIEorhh2mQNGsSt7M4GT2' -F 'user=uN3cefc3u1v7wpeBsgGt1ad5RBRpbn' -F 'message=WohnzimmernBewegung erkanntnhttp://IP-ADRESSE:8083/fhem/jsf/IPCam_snapshot.jpg' https://api.pushover.net/1/messages.json")}

Hierbei wird zunächst der Befehl getriggert, dass bei erkannter Bewegung (“Bewegungsmelder1:motion”) ein Bild von der IP-Cam geholt wird (“fhem (“get IPCam image”)”), aber nur dann, wenn niemand zuhause ist (“if (ReadingsVal(“DummyAnwesenheit”,”state”,””) eq “off”)”).

Im zweiten Eintrag wird dann die Push-Mitteilung angestoßen (der system curl Befehl), sobald die IP-Cam einen neuen Snapshot erstellt hat. Das Versenden von Push-Mitteilungen aus FHEM heraus, wurde ebenfalls im oben verlinkten Artikel erklärt. Der in der Nachricht enthaltene Link führt direkt auf den aktuellsten Snapshot. Die “IP-ADRESSE” (des FHEM-Servers) ist individuell (z.B. bei Nutzung von DynDns-Diensten) einzutragen.

Aus meinem täglichen Leben

Ich finde die Nutzung von Live-Bildern aus der Wohnung eine super Sache. Umso besser, dass das komplette Projekt durch die Verwendung eines alten Android-Smartphones und einen vorhandenen FHEM-Server quasi kostenlos realisiert werden kann. Ich nutze die geschilderte Funktion um eben sicherzustellen, ob es sich bei einer erkannten Bewegung zuhause in meiner Abwesenheit nur um einen Luftzug durch ein offen gelassenes Fenster handelt, oder sich tatsächlich unbefugte Personen Zutritt verschafft haben. Das Szenario lässt sich auch hervorragend auf die Beobachtung von Kleinkindern übertragen (Baby-Monitor). Grundvoraussetzung sind auch hierfür lediglich ein HomeMatic Bewegungsmelder (Affiliate-Link) und FHEM auf einem RaspberryPi (Affiliate-Link) mit einem HomeMatic Lan-Adapter (Affiliate-Link) als Schnittstelle.

19 Kommentare
  1. Hallo Christoph,

    erstmal herzlichen Glückwunsch zum 3-jährigen, und danke für den tollen Blog und die vielen Anregungen. Dank eures Blogs habe ich viele eurer Ideen selber umgesetzt, und in meine Heimautomatisierung integriert.

    Den Vorschlag, eine IPCam in FHEM zu intergrieren, habe ich mit einer Wansview NCB-541W Kamera (ich glaube die ist baugleich mit der FOSCAM FI8918W) auf einer Fritzbox 7490 umgesetzt – dabei gibt einige Besonderheiten, die ich gerne mit euren Lesern teilen möchte:

    1) Die Wansview verlangt zwingend einen “Usernamen” und ein “Passwort”

    2) Die Wansview hat defaultmässig einen anderen Port (port 80)

    2) Der HTML Frame muss geringfügig grösser sein als das Bild, da das Bild noch ein padding an den Seiten hat. Ansonsten bekommt man Schieberegler um das Bild anzupassen. Also width=”660″ height=”500″ anstatt width=”640″ height=”480″.

    3) Man kann einen ‘Live-stream’ integrieren (“live.htm”)

    3) Einige Pfade sind für die FB7490 anders zu setzen. Ich habe auf der FB7490 unter dem Ordner “fhem” einen Unterordner “IPCam” eingerichtet. Das geht entweder über telnet oder direkt über die FB unter dem Menü FRITZ!NAS.
    Die Pfade lauten dann /var/media/ftp/fhem/IPCam und nicht /opt/…

    4) Der WebCam-Bilder Folder verlangt einen “index.html”, den ich angehängt habe. Ansonsten bekommt man eine Fehlermeldung. Mit dem beigefügten index.html kann man dann auch alle 4 Bilder auf einmal anschauen

    Noch eine Frage in eigener Sache: Weisst Du, wie man in FHEM Dateien an die FBMail anhängt? Dann würde ich mir die Bilder von der Alarmanlage direkt zuschicken.

    Hier die Code-fragmente aus der fhem.cfg:

    define interactive_webcam weblink iframe http://user:passwort@192.168.178.46:80/live.htm
    attr interactive_webcam htmlattr width=”660″ height=”500″
    attr interactive_webcam room IPCam
    define IPCam IPCAM user:passwort@192.168.178.46:80
    attr IPCam delay 3
    attr IPCam event-on-update-reading snapshots
    attr IPCam path snapshot.cgi
    attr IPCam room IPCam
    attr IPCam snapshots 3
    attr IPCam storage /var/media/ftp/fhem/IPCam
    define Webserver HTTPSRV jsf /var/media/ftp/fhem/IPCam Webcam-Bilder
    attr Webserver room IPCam
    define Bewegungsmelder1_n notify Bewegungsmelder1:motion {if ( $value{Bewegungsmelder1} eq “on”) {fhem (“get IPCam image”);;FB_mail(‘User@@provider.com’,’Bewegung: IPCAM ausgeloest’,’IPCAM ausgeloest please check http://192.168.178.46:8083/fhem/jsf’)}}

    index.html:

    WebCam Bilder

  2. Hier nochmal der index.html, der wurde als html Code nicht embedded, deswegen bitte die eckigen Klammern “[” durch “” ersetzten

    [html]
    [head]
    [title] WebCam Bilder [/title]
    [/head]

    [body]
    [img src = “http://192.168.178.46:8083/fhem/jsf/IPCam_snapshot.jpg” /]
    [img src = “http://192.168.178.46:8083/fhem/jsf/IPCam_snapshot_1.jpg” /]
    [img src = “http://192.168.178.46:8083/fhem/jsf/IPCam_snapshot_2.jpg” /]
    [img src = “http://192.168.178.46:8083/fhem/jsf/IPCam_snapshot_3.jpg” /]
    [/body]

    [/html]

    1. Hallo Ingolf. Danke für deine Schilderungen!
      Dem Ein oder Anderen hier wird das sicherlich bei der Einbindung anderer Ip-Cam-Hardware sehr hilfreich sein.

      Danke dir und viele Grüße!
      Christoph

  3. Auf dieser Seite steht das erklärt wie man Bilder mit hilfe einer funkion in 99_myUtils
    per email verschickt.
    http://www.fischer-net.de/hausautomation/fhem/49-fhem-modul-ipcam-holt-bilder.html
    Kann die Einstellung “Prevent going to sleep” nicht finden in der App
    wo befindet sich das ?

  4. Hi, sorry aber ich komme bei dem index.html Fehler leider nicht weiter…
    “File not found: /var/media/fhem/webcam/index.html”
    kann mir bitte nochmal jemand sagen wie ich die gemachten Bilder automatisch angezeigt bekomme?

    Vielen Dank

    1. Hi,
      ich habe folgende Module integriert.

      define interactive_webcam weblink iframe http://192.168.178.30:8080/shot.jpg
      attr interactive_webcam htmlattr width=”480″ height=”320″

      define IPCam IPCAM 192.168.178.30:8080
      attr IPCam delay 3
      attr IPCam event-on-update-reading snapshots
      attr IPCam path shot.jpg
      attr IPCam snapshots 3
      attr IPCam storage /var/media/fhem/webcam

      define Webserver HTTPSRV jsf /var/media/fhem/webcam Webcam-Bilder

      wenn ich dann den Webserver aufgerufen habe, kam die Meldung “File not found: /var/media/fhem/webcam/index.html”

      Im Ordner /var/media/fhem/webcam habe ich dann schon mal eine index.html angelegt, weiter oben stand ein Codebeispiel für die index.html, das hat bei mir leider so nicht geklappt…

      Hoffe mir kann hier jemand einen Tipp geben 🙂
      Sitz erst seit zwei Tagen an FHEM also sorry falls ich mich doof anstelle 🙂

    2. http://192.168.178.30:8080/fhem/jsf -> Das ist de Lösung. So hast du es ja in deiner Definition angegeben: “define Webserver HTTPSRV jsf /var/media/fhem/webcam”

    3. Hallo Ben,

      vielleicht wäre es hilfreich, zunächst einmal die HTML-Basics zu erläutern. Ein Webbrowser kann Dateiinhalte z.B. vom Typ “jpg” oder “html” öffnen. Über den Befehl “define Webserver HTTPSRV jsf /opt/fhem/FHEM Webcam-Bilder” in FHEM, legst du dabei zunächst einmal einen Webserver an, also die serverseitige Voraussetzung, damit sich dein Webbrowser (Client) überhaupt auf deine Inhalte “verbinden” kann. Wenn du nun auf 192.168.178.30:8083/fhem/jsf/IPCam_snapshot.jpg gehst, und vorher der IPCAM bereits das Attribut “attr IPCam storage /opt/fhem/FHEM” gegeben hast, müsste alles, so wie bei den anderen Usern funktionieren.

      Versuch es bitte mit vor diesem Hintergrund erneut und melde dich, wenn du weitere Hilfe brauchst.
      VG
      Christoph

  5. Hallo Christoph,
    danke für deinen Beitrag, obwohl ich schon mit der IP-Webcam gespielt habe bin ich nicht auf die Idee gekommen diese an die Haus Automatisierung anzubinden.
    Ein Paar Fragen hätte ich da noch:
    1. Das G1 auf dem Foto hat keinen Blitz, ich hab auch so eins. Reicht die Helligkeit der Bilder aus um abends etwas zu erkennen? Oder schaltest Du bei Bedarf das Licht ein?
    2. Hast du die Batterie im Handy? Ich hätte da Bedenken wegen Überladung. Wenn ich das aber ohne Batterie betreibe fährt das Handy nach einem Stromausfall nicht hoch.
    3. Gibt es inzwischen Erfahrungen wie lange so ein Handy mit Dauerkamera problemlos läuft?

    Viele Grüße,
    Damian

    1. Hallo Damian,

      ich denke, an eine echte Überwachungslösung kommt das Ganze nicht ran. Es ist und bleibt ein altes fickeriges Smartphone. Trotzdem bietet es eine ganz gute Alternative, wenn man mal für den einwöchigen Urlaub für Zuhause eine IP-CAM-Lösung braucht. Ich denke über Langzeittests und Bildqualität müssen wir hier gar nicht reden.

      Viele Grüße
      Christoph

  6. Hallo Christoph,

    Zuerst vielen Dank für den super Blog. Dies ist bei meinen FHEM Problemen immer die erste Anlaufstelle. Ich habe in meinem FHEM nun auch eine IPCam (Wanscam HW 00038) integriert und wollte dies nun mit dem HM-Sen-MDIR-O-2 koppeln. Ich bekomme das Livebild auch in FHEM integriert und die Pushbenachrichtigung vie Pushover bei scharfer Alarmanlage und Mewegunsmeldung erhalte ich. Mein Problem ist das Speichern der Bilder… Ich habe schon etliches probiert. es klappt einfch nicht.

    Der ordner ist leer und bei der Verlinkung wird über die Wehlende Index datei gewettert.

    Vielleicht kannst du mir helfen.

    #———————IPCAM Integration———————

    define interactive_webcam weblink iframe http://Benutzer:Passwort@192.168.178.5:80/videostream.cgi
    attr interactive_webcam htmlattr width=”660″ height=”500″d
    attr interactive_webcam room Alarmanlage,Haus

    define IPCam IPCAM 192.168.178.5:80
    attr IPCam delay 3
    attr IPCam event-on-update-reading snapshots
    attr IPCam path snapshot.jpg
    attr IPCam room IPCam
    attr IPCam snapshots 3
    attr IPCam storage /opt/fhem/FHEM/IPCam

    define Webserver HTTPSRV jsf /opt/fhem/FHEM/IPCam IPCam-Bilder
    attr Webserver room IPCam

    #———-Reaktion Bewegungsmelder -> IPCam————

    define Bewegungsmelder_Garten_n notify Bewegungsmelder_Garten:motion { if (Value(“ANLAGE_STATUS”) eq “scharf”) {fhem (“get IPCam image;;set pushmsg msg ‘Daheim’ ‘Garten Bewegung erkannt http://192.168.178.17:8083/fhem/jsf/IPCam_snapshot.jpg’ ” 0 ””) } }

    1. Hallo jens,

      du hast ja scheinbar einen Unterordner “IPCam” im Ordner “FHEM” angelegt. Wie sieht es dort mit den Rechten aus? Setze die Rechte doch mal testhalber auf 777, um zu testen, ob es dann geht.
      Im Terminal: sudo chmod -R 777 /opt/fhem/FHEM/IPCam

      VG
      Christoph

  7. Hi Christoph,

    Eine gute Anlaufstelle, um IP Webcams in FHEM einzubinden ist diese Website:
    http://www.ispyconnect.com/sources.aspx

    Dort findet man die wichtigen “Path”-Angaben für das IPCAM-Modul, um die jeweilige Webcam zu konnektieren.

    Zum Beispiel hier für den Anbieter Foscam
    http://www.ispyconnect.com/man.aspx?n=foscam

    VG
    Uwe

  8. Informativer Beitrag, der zeigt das man nicht unbedingt eine IP-Kamera braucht. Aber einen Nachteil hätte die Smartphone-IP-Kamera schon: Man kann sie nur schwer irgendwo anbringen oder aufstellen.

  9. Hallo. wird das strong in der Definition geschrieben?

    define not_Bewegungsmelder_Webcam notify Bewegungsmelder1:motion {fhem (“get IPCam image“) if (ReadingsVal(“DummyAnwesenheit“,”state”,””) eq “off“)}

    MfG
    Klaus Mrkor

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Das könnte dir auch gefallen