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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

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