HomeMatic: PushOver mit Text und Bild von Webcam versenden

Ich nutze seit einigen Monaten sehr erfolgreich den PushOver.net-Dienst um Statusnachrichten einzelner Dienste wie meines 3D-Druckers, meiner HomeMatic-CCU oder von Backup-Software auf unterschiedlichen Geräten unter einer einzelnen App zusammenzuführen, statt mich von eMails bombardieren zu lassen.

Bisher habe ich mir Bilder einer Webcam an der Eingangstüre über Telegram zustellen lassen – heute Abend habe ich das Script auf PushOver angepasst und weil ich dazu keine fertige Lösung im Netz finden konnte, möchte ich sie mit euch teilen.

Ich gehe nachfolgend davon aus, dass ihr einen PushOver.net-Account besitzt und euren UserKey sowie das API-Token einer Applikation zur Hand habt. Auch solltet ihr bereits CuxD und ein SystemExec-Gerät erstellt haben (siehe Anleitung).

Systemvariablen anlegen

Erstellt zuerst zwei Systemvariablen auf der CCU:

  • PushOver.Text“ als Zeichenkette
  • PushOver.Text.mitBild“ als logische Variable mit Ja/Nein

Ich nutze die erste Variable, um bei Änderung dieser eine Nachricht über PushOver zu versenden. Die zweite steuert, ob ein Bild als Anhang mitgesendet werden soll, oder nicht.

Programm erstellen

Im nächsten Schritt erstellt ein neues Programm auf der CCU, dass ihr beliebig benennen könnt – in meinem Beispiel „System.PushOver„.

Im Wenn-Teil reagiert das Script auf die Variable PushOver.Text bei einem leeren String auf Aktualisierung. Letzteres bewirkt, dass das Script immer ausgeführt wird, wenn sich der Inhalt der Variable PushOver.Text ändert. Die zusätzliche Abfrage CCU_im_Reboot prüft, ob sich die CCU gerade im Bootvorgang befindet und unterbindet die Ausführung, wenn dies der Fall ist (siehe dieser Artikel) – sie kann, wenn von euch nicht genutzt, nachfolgend ignoriert werden.

!!! Der DANN-Teil kann/muss leer bleiben: Die CCU interpretiert die leere Textbox in der Wenn-Abfrage wie ein 1:1-Match des Textes, d.h. sie wird nur ausgeführt, wenn die Systemvariable PushOver.Text geleert wird.

Erster „Sonst, wenn“-Block – Push mit Bild

Daraufhin erstellen wir einen „Sonst, wenn„-Block, der ausgeführt wird, wenn die Systemvariable PushOver.Text.mitBild auf „ja“ steht, nach folgendem Screenshot:

In meinem Fall hole ich zuerst ein Bild anhand eines Bildprofils meiner Mobotix-Webcam ab und speichere es im tmp-Ordner. In eurem Fall könnt ihr die URL durch die für eure Kamera passende Streaming- oder Snapshot-URL ersetzen.

Beachtet auch, dass ihr nachfolgend den Namen eures CuxD-SystemExec-Gerätes ersetzt müsst!
Die Variable System.Debug beschreibe ich in meinen Scripts immer mit einem Statustext, der im Systemprotokoll auftaucht, da ich die Variable über die CCU loggen lasse (zur Diagnose und Nachvollziehbarkeit bei Problemen) und ist für euch nicht relevant.

Daraufhin wird mit einer Verzögerung von 3 Sekunden (um der CCU einen Moment für das Speichern des Bildes zu geben – variiert diesen Wert nach Gefühl) das Bild an die PushOver-API versendet. Ersetzt das Token (Application) und den UserKey durch eure PushOver-Parameter.

Zum Schluss wird das heruntergeladene Webcam-Bild mit einer Verzögerung von 10 Sekunden gelöscht.

Zweiter „Sonst, wenn“-Block – Push ohne Bild

Abschließend erstellt einen weiteren „Sonst, wenn…„-Block nach folgendem Muster:

Dieser Part wird ausgeführt, wenn eine Push ohne Bild versendet werden soll – ersetzt wieder euer Token und den UserKey durch eure PushOver-Parameter und speichert das Programm ab.

Nutzung in anderen Programmen

Um nun Push-Nachrichten in anderen Programmen zu versenden, setzt an den betreffenden Stellen zwei Systemvariablen.

Zuerst beschreibt ihr PushOver.Text.mitBild mit ja oder nein – je nachdem, ob ihr ein Bild anhängen möchtet oder nicht. Daraufhin schreibt ihr einen Text in PushOver.Text, der zeitgleich das zuvor erstellte Programm triggert und die Pushnachricht mit oder ohne Bild verschickt.

Komplettes Programm

Das komplette Programm in der CCU sollte daraufhin – durch eure Werte korrigiert – wie folgt aussehen:

Fehlersuche

Curl ist manchmal zickig. Wenn ihr keine Push-Nachricht erhaltet, prüft folgendes:

  • Token und UserKey von PushOver wirklich korrekt?
  • Öffnet die Scripte im Programm und klickt auf „Fehlerprüfung“ – vielleicht handelt es sich um einen Typo?
  • Baut euch einen Curl-Aufruf ohne Variablen zusammen, den ihr direkt via SSH auf der CCU ausführen könnt. Nutzt den Parameter „-v“ von Curl für verbose-Ausgaben um Hinweise zu erhalten, was schief gelaufen ist.
Bastian
Bastian

Seit 2006 bin ich täglich im IT-Umfeld unterwegs und interessiere mich für technische Lösungen im Hard- und Softwarebereich, die einem den Alltag erleichtern. Zu meinen Hobbies zählt der 3D-Druck, das Tüfteln, Scripten, eine eigene Holzwerkstatt, sowie der unqualifizierte Umgang mit dem Lötkolben.

Artikel: 126

2 Kommentare

  1. Super Idee, da ich unter ioBroker die Bilder von meinen Kameras leider nicht per wget holen kann (weil meine Kameras kein basic sondern nur digest authentication können). Habe das jetzt mal auf der CCU probiert und die Bilder werden auch geholt und nach 10 Sec. wieder gelöscht …. funktioniert also soweit, jedoch bekomme ich nichts per Pushover gesendet sobald ich den -F Parameter mit ins Spiel bringe 🙁

    Irgend eine Idee?

    @jörn … einfach per telnet oder winscp auf die CCU einloggen und im Verzeichnis nachsehen 😉

Schreibe einen Kommentar

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