Kamerabilder via Telegram

Es wäre doch genial wenn die Homematic CCU / Raspberrymatic automatisch Bilder von Überwachungskameras versenden könnte, sobald ein Türkontakt oder Fensterkontakt geöffnet wird.

Das funktioniert sehr gut, wenn als Benachrichtigungs-Kanal Telegram verwendet wird.

Die Einrichtung eines Telegram-Bots hat Digitaldad gut erklärt und aufgrund dieser Anleitung habe ich auch meinen Chatbot eingerichtet.

Vorbereitung

Da vorher Benachrichtigungen über Pocketcontrol versendet wurden, habe ich diese erstmal alle auf Telegram umgestellt und ich muss an dieser Stelle feststellen, das waren verdammt viele – unglaublich was sich da so über die Zeit ansammelt.

Telegram Benachrichtigungen getestet

Wenn die Benachrichtigungen so laufen, hat man alles vorbereitet um nun an das Thema Bilder per Telegram versenden zu gehen.

Kameras – Voraussetzungen

Die Grundvoraussetzung um Kamerabilder über Telegram zu versenden ist, dass die Kamera ein Bild über .jpeg bereitstellen kann.
Das ganze ist nicht zu verwechseln mit einem .mjpeg-Stream.

ispyconnect.com ist eine sehr gute Anlaufstelle um herauszufinden ob die eigene Kamera diese Funktion unterstützt.
In meinem Fall unterstützt keine Kamera diese Funktion deshalb musste ich einen Plan B suchen.

Kamera – Direkte Unterstützung .jpeg

Wenn die Kamera direkt eine .jpeg Datei liefert, kann direkt mit dem Progam in der CCU begonnen werden.
Nehmen wir als Beispiel mein Programm für die Kamera in der Garage.

CCU Programm Kamera Bild Garage bei öffnung

Skript Sofort-Ausführung:

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("wget -q -O '/tmp/garage.jpg' 'http://<user>:<password>@<kamera-ip>/pfad/zur/jpeg.jpeg'");

Skript nach Zeit:

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k 'https://api.telegram.org/bot<Bot-APIcode>/sendPhoto' -F chat_id=<Chat-ID> -F photo='@/tmp/garage.jpg' -F caption='Garagentor'");

Zur Erklärung:
Das erste Script lädt das aktuelle Bild von der Kamera per wget sofort in den Ordner /tmp/garage.jpg .
Das zweite Script versendet das Bild per Telegram über euren Bot an euren Chat.

Die Verzögerung musste ich einbauen, da diese Vorgänge unweigerlich Zeit benötigen und je nach Bildgröße (SD Qualität, HD Qualität), kann das herunterladen einige Sekunden benötigen.
Diese Einstellung ist individuell und muss ausgetestet werden.


Als Auslöser sind einem hier natürlich keine Grenzen gesetzt, es können auch Bilder beim schließen versendet werden oder Aufnahme mit Verzögerung und so weiter.

Kameras – Keine Unterstützung .jpeg

Nun kommt es auch vor dass gerade die günstigeren China Modelle keine .jpeg Datei unterstützen.
An dieser Stelle kommt meine Synology Surveillance Station ins Spiel.
Nach einiger Recherche bin ich auf ein PHP-Script aufmerksam geworden welches die WebAPI anzapft und ein jpeg Datei bereitstellt.

Das Script musste ich nur an einer Stelle ändern.
In der Funktion printImage relativ am Schluss der Datei folgende Zeile auskommentieren oder rauslöschen.

Vorher:
header ( "Content-Length: " . ( string ) (filesize ( $image )) );
Nachher:
// header ( "Content-Length: " . ( string ) (filesize ( $image )) );

Diese Zeile hat bei mir im Apache Errorlog folgenden Fehler produziert.

filesize() expects parameter 1 to be a valid path, string given in /var/www/html/webcam.php on line 103

Alternativ soll es wohl auch direkt über ffmpeg eine Möglichkeit geben, jpeg-Dateien zu erzeugen.
Diese Möglichkeit ist von mir aber ungetestet.

Fazit

Diese Funktion ist wirklich praktisch gerade wenn man es auch mit einer smarten Klingel kombiniert.
So erhält man gleich ein Bild von demjenigen der geklingelt hat.

Speichere in deinen Favoriten diesen permalink.

2 Kommentare

  1. Hallo,

    danke für den interessanten Artikel.

    Das von die verlinkte PHP-Script funktioniert (zumindest bei mir) mit der aktuellen Synology- und Surveillance-Software nicht mehr. Ich habe auch die genannte Zeile auskommentiert, trotzdem funktioniert es nicht.

    Kannst du freundlicherweise mitteilen, welche Software-Versionen (DSM, Surveillance-Station) und welche Kamera du bei dir verwendest?! Vielleicht hilft mir das ja.

    Danke und freundliche Grüße
    Jens

    • Hallo Jens,

      ich habe auch die aktuelle Version der Surveillance Station im Einsatz (8.2.8-6335).
      Verwendet PHP-Version: 7.0.33-0ubuntu0.16.04.16

      Kameras sind verschieden.
      2 von SV3C, WansView (K2) und eine NoName Kamera.
      Ich bin aktuell dabei die Kameras durch Reolink zu ersetzen.

      Das läuft mit den Screenshots auch wenn ich mittlerweile das ganze auf die FFMPEG Lösung umgeändert habe und den RTSP direkt von der Kamera Verarbeite.

      ffmpeg -y -i rtsp://Benutzer:Passwort@Kamera-IP:554/Streampfad -vframes 1 /var/www/html/cam/kamername.jpg

      Funktioniert fast noch zuverlässiger als die Surveillance API.

      Vorraussetzung ist:
      – FFMPEG installiert
      – Webserver (Apache z.B.)

      Was sagt den der Webserverlog?

Schreibe einen Kommentar

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

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.