Hausautomatisierung

Bild an Smartphone bei Auslösen der Haustürklingel

Bild beim Auslösen der Haustürklingel ans Smartphone übertragen

Oftmals wird die Haustürklingel betätigt, während man nicht zu Hause ist. Im Gegensatz zum Telefon hinterlässt die Person aber keine Rufnummer anhand derer wir sie identifizieren könnten.

Mithilfe einer Webcam und eines Türklingelsensors soll ein Foto in dem Augenblick erstellt werden, wenn die Person an der Haustüre den Klingelknopf gedrückt hat. Nun wird das Foto per Pushnachricht an das Smartphone übertragen.

Hard-und Software-Voraussetzungen

Zuerst brauchen wir einen Raspberry Pi mit entsprechendem Netzteil. Hierzu habe ich auch entsprechende Empfehlungen gegeben.
Genauso sollte man sich über die Vernetzung Gedanken machen, ob man die Raspberry Pis per Netzkabel oder per WLAN anbinden möchte. Dafür habe ich hier in meinen Artikeln über die Grundkonfiguration Tipps gegeben:

Klingelsignal-Sensor

Damit beim Drücken des Klingelknopfes ein Signal an die Hausautomatisierungs-Software FHEM übertragen werden kann, brauchen wir den passenden Sensor. Für das Haussteuerungsprotokoll FS20 ist das die mittlerweile kaum mehr erhältliche FS20 KSE.

Diese bekommt man noch in Restposten bei Amazon, wurde aber offensichtlich abgekündigt. Dagegen gibt es für Homematic ein Allround-Modul, mit dem auf Eingangsspannungen von bis zu 20V reagiert und daraufhin ein Signal an die Haussteuerung übertragen werden kann:

Mit leichten Anpassungen ist dies mit dem Homematic-Modul ebenfalls leicht möglich.

Outdoor-Webcam für die Hausautomatisierung

Im Grunde genommen klappt es mit jeder Outdoor-Webcam. Wenngleich es schon sehr günstige Webcams für den Außenbereich gibt, so wird man jedoch sehr schnell erkennen,  dass es massive Qualitätsunterschiede gibt.

Auf jeden Fall ist das Wichtigste an einer Outdoor-Webcam, dass sie für den Außenbereich auch auf Dauer geeignet ist und nicht bereits nach zwei Jahren den Betrieb einstellt. Entsprechend ist ein weiteres Kriterium, wie sich die Kamera bei schlechten Lichtverhältnissen schlägt. Dafür haben die besseren Geräte Infrarot-LEDs, mit deren Hilfe sehr brauchbare Schwarz-Weiß-Bilder in der Dunkelheit gelingen. Im Gegensatz zu den beiden gerade genannten Qualitätsmerkmalen spielt die Auflösung der Kamera eine eher untergeordnete Rolle. Full-HD als Auflösung wäre zwar schön, ist aber unnötig. Folglich ist HD-Auflösung (1280 x 720) völlig ausreichend. In erster Linie wollen wir ja lediglich ein Foto machen, anhand dessen wir eine Person erkennen können. Des Weiteren ist der Vorteil einer nicht zu hohen Auflösung der, dass die Kamera bei schlechten Lichtverhältnissen weniger verrauschte Bilder liefert.

Hierzu habe ich mich nach langer Recherche auf folgende Outdoor-Webcam festgelegt:

Die Instar IN-5907HD ist absolut robust und macht wirklich ansehnliche Fotos, auch und gerade bei schlechteren Lichtverhältnissen.

Push-Nachrichtendienst auswählen

Zuerst müssen wir uns auf einen Nachrichtendienst festlegen, der Bilder und Text an ein Smartphone übertragen kann. Die meisten von uns denken jetzt ganz automatisch an WhatsApp. Zuerst war das auch mein Ansatz und eine solche Integration hat auch bis Anfangs des Jahres 2017 funktioniert. Leider hat WhatsApp begonnen, nur noch zertifizierte Geräte für den Nachrichtendienst zuzulassen. iPhone bzw. Android sowie Windows Mobile Geräte funktionieren mit WhatsApp einwandfrei. Schwieriger wird es, wenn man selbst ein Gerät an WhatsApp koppeln wird. Ich habe mich ziemlich lange mit der Integration von WhatsApp beschäftigt. Nachdem mir WhatsApp meine Rufnummer das x-te gesperrt hatte, habe ich diesen Nachrichtendienst für die Einbindung in die Haussteuerung ad acta gelegt.

Es gibt einige Alternativen für Push-Nachrichtendienste. Wir suchen jedoch einen Nachrichtendienst, für den es entsprechende Programmier-Schnittstellen (APIs) gibt. Aus meiner Sicht gibt es hier zwei Alternativen zu WhatsApp:

Beide Nachrichtendienste sind gleichermassen für unser Vorhaben geeignet. Die Smartphone-App für Pushover ist allerdings kostenpflichtig. Demgegenüber ist Telegram völlig kostenlos und bietet einige andere Vorteile.

Push-Nachrichtendienst Telegram mit Bot

Im Folgenden verwenden wir Telegram als Nachrichtendienst. Die Apps für Smartphones (iOS, Android, Windows Phone) sind kostenlos. Darüberhinaus gibt es Einbindung in alle gängigen Desktop Betriebssysteme wie Windows, macOS und Linux.

Den größten Vorteil, den ich aber sehe, ist die Möglichkeit, einen Bot zu erstellen.  Dazu ein paar erklärende Worte. Normalerweise ist die Funktionalität einer Push-Nachricht wie folgt: Jeder Teilnehmer an dem Nachrichtendienst ist über seine Telefonnummer angemeldet. Normalerweise gibt es eine 1:1-Beziehung zwischen dem Gerät, dem Smartphone und dieser Telefonnummer. Dementsprechend hieße das für die Einbindung des Nachrichtendienstes für FHEM, dass wir eine eigene Telefonnummer für die Haussteuerung bräuchten, unter der FHEM erreichbar wäre. Anders ausgedrückt soll ja FHEM Nachrichten sowohl empfangen als auch senden können. Natürlich könnten wir einen Surfstick für den Raspberry Pi besorgen und dort eine eigene Simkarte betreiben. Demgemäß würden aber nicht unwesentliche Zusatzkosten entstehen. Dieses Geld müssen wir aber gar nicht ausgeben.

Was ist ein Bot?

Die Einbindung in die Haussteuerung FHEM kann man beim Nachrichtendienst Telegram mit einem sehr einfachen Bot bewerkstelligen. Dieser Bot (vom englischen Wort robot) soll in unserem Fall einfach als virtueller Account arbeiten. Später wollen wir uns auf diesen von FHEM aus verbinden. Anders ausgedrückt erstellen wir über unseren echten Telegram-Account (ebenso wie bei WhatsApp registriert mit unserer Smartphone-Telefonnummer) einen virtuellen Account, den Bot. Normalerweise kann man mit einem solchen Bot komplexe Antwortverhalten einstellen. Im Gegensatz dazu nutzen wir den Bot nur als weiteren Account. Die Logiken werden nicht im Bot selbst, sondern in der Haussteuerung implementiert.

Einen Bot anlegen

Zuerst brauchen wir einen Account für Telegram. Hierzu laden wir im Falle eines Android-Smartphones aus dem Google Play Store die App Telegram und für iPhones über iTunes die App Telegram Messenger herunter.

Telegram iTunes

Nachdem die App installiert und konfiguriert auf die Handynummer gekoppelt ist, können wir loslegen. Für die nächsten Schritte müssen wir den virtuellen Account anlegen, den wir an FHEM koppeln werden. Dazu gibt es einen virtuellen Ansprechpartner namens Botfather. Mit diesem Botfather führen wir ein Konversation über bestimmte Befehle.

Telegram Botfather

Dazu laden wir den User @botfather ein, mit uns zu „sprechen“. Wir drücken auf Starten.

Telegram Botstart

Daraufhin erscheint eine Auflistung von Befehlen, die unser Botfather versteht.

Telegram Botstart

Mit /newbot legen wir einen neuen Bot an. Wir werden nach einem Namen gefragt und wir nennen ihn beispielsweise MyFHEM:

Telegram newbot

Nun werden wir noch nach einem Accountnamen gefragt. Dieser muss eindeutig sein, im Gegensatz zu dem gerade eingegebenen Bot-Namen. Es kann also sein, dass der von uns eingegebene Name zunächst abgelehnt wird, hier müssen wir also kreativ sein. Der Name des Accounts muss nur auf „bot“ enden.

Telegram newbot MyFHEMresponsebot

In der letzten Antwort können wir das wichtige Token erkennen, das für die Einrichtung in FHEM gebraucht wird. Mit Klick auf den Link  t.me/MyFHEMresponsebot laden wir den erzeugten Bot und können ihn über Starten am unteren Bildschirmrand starten.

Telegram Bot starten

Telegram-Bot in FHEM einbinden

Danach gehen wir in FHEM und legen mit den Token-Daten aus der letzten Antwort des Bots (bitte in der ersten Zeile die Token-Werte aus der letzten Antwort übernehmen)

define teleBot TelegramBot 3071xxxxx:AAGKh5o-FfOK_2EUCy-xxxxxxxxxxxx
attr teleBot pollingTimeout 120

ein neues Device an und stellen mit dem zweiten Befehl die Timeout-Zeit ein. Nach den beiden Befehlen drücken wir unter dem Fhem-Symbol auf Save Config. Sofort können wir ein neues Gerät erkennen und dort auch über den Status erfahren, ob wir mit dem Bot gekoppelt sind. Der Status sollte durch das obige Starten auf Polling wechseln.

FHEM Telebot anlegen

Nun sind wir mit FHEM gekoppelt. Dies können wir gleich testen, in dem wir von unserem Smartphone eine Nachricht an unseren Bot schreiben.

Telebot Testmessage

Diese Nachricht sollten wir daraufhin in FHEM in den readings zu unserem neuen Gerät sehen:

Telegram Bot Readings

Im Folgenden können wir also sicher sein, dass FHEM an den virtuellen Telegram-Account angebunden ist. Aber eines fehlt noch: Damit wir Nachrichten und Bilder an unser Smartphone schicken können, müssen wir noch unseren Standard-Account angeben, an den wir senden wollen. Das ist also unser eigener Telegram-Account, von dem wir den Bot eingerichtet haben. Demzufolge setzen wir mit

attr teleBot defaultPeer Vorname_Nachname

den default peer (auf den Wert, den wir gerade in den Readings unter msgPeer sehen) und können nun mit

set teleBot send Nachricht angekommen

eine Nachricht zurück an unser Smartphone schicken. Auf unserm Smartphone kommt prompt die Nachricht wieder an:

Telebot Nachricht angekommen

Webcam in FHEM anlegen

Damit wir das Bild bei Betätigen der Haustürklingel an das Smartphone übertragen können, müssen wir die Webcam auch in FHEM anlegen. Hierfür legen wir in der Konfigurationsdatei fhem.cfg neue Einträge an. User und Passwort müssen natürlich angepasst werden.

define WebCamHaustuere IPCAM 192.168.188.71:80
attr WebCamHaustuere delay 0
attr WebCamHaustuere group Webcams
attr WebCamHaustuere icon it_camera
attr WebCamHaustuere path tmpfs/snap.jpg?usr=admin&pwd=instar
attr WebCamHaustuere snapshots 1
attr WebCamHaustuere storage /opt/fhem/www/webcam/WebCamHaustuere

Dadurch haben wir jetzt die Webcam per Modul in FHEM integriert. Wir können nun über den Befehl

get WebCamHaustuere image

das aktuelle Bild von der Webcam holen und in dem konfigurierten Verzeichnis /opt/fhem/www/WebCamHaustuere ablegen. Da das Verzeichnis /opt/fhem/www im Standard schon existiert, müssen wir hier nichts weiter tun. Wir sehen, dass das Verzeichnis WebCamHaustuere angelegt wurde, falls es noch nicht existiert hat. Darin befinden sich nun zwei Dateien, von denen für uns die Datei WebCamHaustuere_snapshot.jpg wichtig ist.

FS20 Klingelsensor KSE in FHEM anlegen

Nun brauchen wir nur noch den Klingelsensor selbst. Wir brauchen den Klingelsensor FS20 KSE lediglich mit dem Klingeldraht verbinden, der selbst in modernen Häusern immer noch verbaut wird.

Durch folgende, einfache Konfiguration lässt sich der Klingelsensor in FHEM einbinden:

# Tuerklingelsensor
define FS20_Tuerklingel FS20 12341234 00
attr FS20_Tuerklingel IODev CUL
attr FS20_Tuerklingel alias Tuerklingel
attr FS20_Tuerklingel devStateIcon on:rc_dot@green off:rc_dot@grey
attr FS20_Tuerklingel icon phone_missed_out
attr FS20_Tuerklingel model fs20kse
define FileLog_FS20_Tuerklingel FileLog ./log/FS20_Tuerklingel-%Y-%m-%V.log FS20_Tuerklingel
attr FileLog_FS20_Tuerklingel logtype text

Über das FS20 Zahlensystem habe ich im Artikel Kalenderabhängige Schaltung einer FS20-Steckdose bereits geschrieben. Die Vorgehensweise bei der Einbindung des FS20 Klingelsensors unterscheidet sich kaum von der Einbindung einer dort beschriebenen Funksteckdose.

Versenden von Text und Bild bei Auslösung durch den Klingelsensor

Schließlich haben wir eigentlich alles, um die gewünschte Funktionalität umzusetzen. Wir haben den Klingelsensor eingebunden, der bei Auslösen der Haustürklingel ein Signal an FHEM schickt. Weiters haben wir die Outdoor-Webcam an FHEM gekoppelt, wo wir durch einen einfachen Befehl das aktuelle Bild holen und im Filesystem des Raspberry Pi ablegen. Ausserdem haben wir FHEM über einen Messagedienst-Bot angebunden. Was uns jetzt nur noch fehlt, ist die Verbindung dieser drei Dinge.

Das ist denkbar einfach. Wir brauchen lediglich ein Notify in der zentralen Konfigurationsdatei fhem.cfg erstellen. Hiermit wird eine Push-Nachricht mit dem Text „An der Haustüre hat es geklingelt" an das Smartphone geschickt. Folglich wird über das Hilfsmodul IPCAM ein Bild geholt und sogleich dieses ebenfalls per Push-Nachricht ans Smartphone geschickt. Das geschieht mit folgenden Einträgen:

define Haustuerklingel_notify notify FS20_Tuerklingel:on {\
        { fhem("set teleBot send Jemand hat an der Haustüre geklingelt");; \
          fhem("get WebCamHaustuere image");; \
          fhem("set teleBot sendPhoto /opt/fhem/www/WebCamHaustuere/WebCamHaustuere_snapshot.jpg");; \
}

Das Ergebnis sieht am Smartphone dann so aus:

FHEM Klingelsensor Botnachricht

Zuletzt aktualisiert am 05.02.2017.

17 Gedanken zu „Bild an Smartphone bei Auslösen der Haustürklingel“

  1. Hallo ,
    kannst Du vielleicht mal kurz erklären wie Du die KSE an deinen
    Türgong angebunden hast ?
    Versuche ich schon eine ganze Weile ,habe leider einen Gong mit Batterien .
    Viele Grüße

    1. Hallo,

      das Entscheidende ist, dass die KSE eine externe Spannungsversorgung bekommt. Ich habe hier zufälligerweise noch einen Versuchsaufbau bei mir herumliegen. An diesem ist einfach eine 9V-Batterie angeschlossen. Die hält gut und gerne 2 Jahre, bevor diese mal gewechselt werden muss.
      Anbei ein Bild:
      KSE mit Spannungsversorgung
      Unten wird die 9V-Spannung angelegt, oben kommt der Klingeldraht herein.
      Es ist wichtig, dass hier der Klingeldraht nicht in Reihe angeschlossen wird. Also parallel zu einem Gong, wenn dieser auch über den Klingeldraht angeschlossen wird.
      D.h. in unserem Bild das weisse und rote Kabel: Also vom roten Kabel 2 Kabel anschliessen, eines in die KSE, das andere in den Gong. Für das weiße Kabel analog.
      Eine Reihenschaltung löst nicht mehr aus, da die Spannung sonst zu stark abfällt.

      Ich hoffe, ich konnte ein wenig weiterhelfen.
      Viele Grüße
      Martin

  2. Hallo, würde mich sehr freuen, wenn die Vorgehensweise zum Alternativprogramm „Pushover“ ebenfalls beschrieben werden könnte. Hintergrund: Pushover account ist schon da, und ich will meine Infrastruktur nicht unnötig aufblähen.

    Vielen Dank vorab!

    1. Hallo Albrecht,

      mein erster Ansatz war ebenfalls Pushover. Leider habe ich keine Möglichkeit gefunden, über Pushover ein Bild zu verschicken. Eine Textnachricht jederzeit, hierfür eine andere Funktion aufzurufen, um die Nachricht über Pushover zuzustellen, wäre schnell beschrieben. Leider ist das aber nur die halbe Miete. Ich kenne lediglich die Möglichkeit, einen Link zu schicken, das hieße aber, dass das Bild nicht eingebettet in der Nachricht ist und dann heruntergeladen werden müsste. Das wollte ich nicht. Ich wollte das Bild von der Webcam direkt mit verschicken.
      Deswegen habe ich mich dann für Telegram entschieden.
      Ist dann eine Beschreibung für Pushover immer noch interessant?
      Ich habe Telegramm jetzt schon lange im Einsatz und kann es wirklich empfehlen!

      Gruß
      Martin

  3. Hallo Martin,

    du hast dein Projekt super detailliert und nachvollziehbar beschrieben. Ich habe alles nachgebaut und es funktioniert einwandfrei.

    Vielen Dank für die Mühe und weiter so!
    Vielen Grüße, Andreas.

    1. Hallo Andreas,

      vielen Dank für das nette Feedback! Ich verbringe in der Tat viel Zeit mit meinem Blog, damit eigentlich komplex erscheinende Aufgabenstellungen möglichst einfach lösbar werden….

      Viele Grüße
      Martin

  4. …funktioniert jetzt auch bei mir sehr gut! Vielen Dank!

    Aber, was muss ich machen, wenn ich Messages via fhem (auch) an einen anderen Empfänger schicken möchte?
    Muss dieser zunächst meinen fhem-Bot anschreiben? Könntest Du das auch kurz erklären?
    Vielen Dank vorab, – sehr gute Seite !

    1. Hallo,

      nur damit ich die Anforderung richtig verstehe – an einen anderen Empfänger heißt in diesem Falle:
      Auch per telegram verschicken?
      Dann hieße das, dass wir einen weiteren Bot einrichten müssten. Das geht natürlich schon, auch wenn ich die Funktionen der Einfachheit halber immer über den Default Empfänger realisiert habe.
      Das geht dann natürlich so nicht. Wir müssten auch noch den Empfänger (also praktisch den Namen des Bots) für die message Funktionen jeweils mitgeben.
      Vielleicht komme ich am kommenden Wochenende dazu, das zu probieren. Dann werde ich es hier posten!

      Gruß
      Martin

      1. nein, ich möchte eigentlich nur messages via fhem an einen Freund senden. Habe aber nur dessen Benutzername.

        —> set teleBot message @Benutzername bla bla bla

        funktioniert nicht. Welche Voraussetzungen müssen geschaffen werden, dass dies geht?

        Vielen Dank vorab!

        1. Hallo,

          ich habe das soeben ausprobiert. Damit das funktioniert, muss bei Deinem Freund nur einmal eine Meldung an den Bot geschickt werden.
          Das wird erst mal scheitern.
          Dann einfach das Attribut allowUnknownContacts von 0 auf 1 setzen!
          Danach nochmal eine Nachricht von Deinem Freund an den Bot schicken.

          Nun ist im Reading Contacts auch Dein Freund mit der PeerID und Vorname_Nachname eingetragen.

          Danach kannst Du das Attribut allowUnknownContacts wieder von 1 auf 0 setzen, der Freund ist eingetragen.

          Wenn Du jetzt mit
          set teleBot message @Benutzername blablabla
          etwas schickst, dann sollte auch die Message dort ankommen.

          Bei mir hat es zumindest geklappt, habe es eben am Smartphone meiner Frau ausprobiert….

          Gruß
          Martin

  5. Hallo !

    Ich hätte eine Frage bezüglich des alternativen HomeMatic Moduls. In der Anleitung des Moduls steht gesachrieben das dieses ein Funk-Aktor ist und nicht wie das oben verwendete KSE20 ein Funksensor. Mir stellt sich die Frage mit welchen konkreten Anpassungen Sie einen Sensor aus diesem Modul machen ?

    1. Hallo,

      sorry, dass ich erst jetzt antworte, ich war im Urlaub.
      Aus einem Aktor kann man natürlich nicht so ohne Weiteres einen Sensor machen. Ein Modul, das nur reagiert, kann nicht gleichzeitig senden, auch wenn das Homematic Protokoll mit Handshake arbeitet. Aber man kann die hier den von mir beschriebenen Aktor dazu benutzen, einen Sensor zu schalten. Wenn man den Homematic Funk-Aktor also am Ausgang beispielsweise mit dem Homematic Funk-Taster koppelt, dann sendet der Funk-Taster wie benötigt, sobald der Aktor auslöst.
      https://www.amazon.de/Homematic-075604-HomeMatic-Funk-Tasterschnittstelle-4-fach/dp/B0024NP98Y/ref=as_li_ss_tl?ie=UTF8&qid=1533991641&sr=8-8&keywords=homematic&linkCode=ll1&tag=wwwkochworldd-21&linkId=80c2141b5e532aa408f396978ff17387&language=de_DE
      Mit dem Funktaster kann man das direkt leider nicht machen, da man hier keine Spannung anlegen darf. Aber genau dafür kann man den Funk-Aktor benutzen, um diese beiden Stromkreise sauber zu trennen.
      Einen vergleichbaren KSE20 für Homematic gibt es leider bisher nicht, deshalb muss man hier etwas tricksen.

      Gruß
      Martin

  6. Noch mal auf deutsch lach, ist es möglich das Kamerasignal einer normalen Hausklingel mit integrierter Kamera via ESP z.B. zu übertragen und zu versenden?

    1. Hallo,

      theoretisch wäre das möglich, aber nicht in der Art, wie das hier vorgesehen und beschrieben ist. Mit einem ESP8266 müsste man das Signal abgreifen, verarbeiten, ein Jpg erzeugen und dann beispielsweise über einen Webendpunkt bereitstellen. Dieses Bild könnte dann in fhem so weiterverarbeitet werden, als ob es aus einer Webcam käme. Ich habe noch keine Erfahrungen gemacht, ob das schnell genug wäre. Zusätzlich müsste der Raspberry oder ein zusätzlicher Raspberry irgendwo verwendet werden und mit dem Signal beschickt werden (Kabel? Kann man aus einer bestehenden Hausklingel dieses Bild auf einfache Weise das Bild an den ESP8266 ausleiten? Dazu bräuchte man einen Bauplan der Haustürklingel. Ausserdem sind diese meistens verschweißt).
      Meistens sind ausserdem diese Bilder so schlecht, dass jede aktuelle Webcam ein viel besseres Bild liefert, als jenes, das für die interne Darstellung der Hausklingel im Display optimiert ist.
      Das wäre mir der Aufwand nicht wert, lieber eine günstigere Outdoor-Webcam zusätzlich aufstellen…

      Gruß
      Martin

Schreibe einen Kommentar

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