Homematic CCU3 Pushover Mitteilungen

Die Smart Home Zentrale CCU3 von Homematic IP bietet dem Anwender von Haus aus keine Möglichkeit bestimmte Ereignisse direkt an das Smartphone oder Tablet zu senden. Mit diesem Artikel zeige ich euch wie ihr ganz einfach Push Mittelungen mit Hilfe von Pushover an eurer gewünschtes Endgerät schicken könnt.

Erstellung eines Pushover Accounts

Damit die gewünschten Meldungen auf dein Smartphone übertragen werden, wird ein Pushover Account benötigt. Dieser kann auf folgender Webseite angelegt werden: https://pushover.net/signup

Nach der erfolgreichen Registrierung ist im oberen rechten Eck der Startseite der User Key zu finden. Dieser Schlüssel wird später in einer Systemvariable auf der Homematic CCU3 gespeichert. Des Weiteren ist darunter eine E-Mail-Adresse zu finden. Diese bietet die Möglichkeit Push Mitteilungen per E-Mail an eurer Smartphone zu senden.

Anlegen einer Anwendung

Im nächsten Schritt muss eine Anwendung erzeugt werden. Diese Option findet ihr etwas weiter unten auf der Startseite. Bei der Erstellung muss ein eindeutiger Name der Anwendung festgelegt werden. Anschließend könnt ihr noch eine kurze Beschreibung, eine URL sowie ein Icon festlegen. Diese drei Optionen sind jedoch optional und werden somit nicht unbedingt benötigt. Zum Schluss muss noch den Nutzungsbedingungen zugestimmt werden und schon habt ihr eure erste Anwendung erstellt.

Nun sind beide benötigten Schlüssel für das Senden von Push Mittelungen vorhanden. Da sich diese beiden Schlüssel niemals ändern sollten diese nicht an Dritte weitergegeben werden.

Installation des CUx-Daemon

Damit die Push Meldungen zuverlässig von deiner Homematic CCU3 versendet werden, wird die Zusatzsoftware CUx-Daemon (kurz CUxD) benötigt. Diese ersetzt dabei die fehleranfällige Homematic Funktion „system.Exec“ sodass sichergestellt werden kann, dass die gewünschten Meldungen auch an dein Smartphone übermittelt werden.

Diese Zusatzsoftware kann auf folgender Webseite heruntergeladen werden: https://www.homematic-inside.de/software/cuxd

Nachdem du die Software heruntergeladen hast muss diese auf der Homematic Zentrale installiert werden. Klick hierzu im Webinterface auf Einstellungen -> Systemsteuerung und anschließend auf Zusatzsoftware. Es öffnet dabei ein weiteres Fenster. Im unteren Teil findest du dabei die Option Zusatzsoftware installieren. Hier wählst du die eben heruntergeladene Version des CUxD aus und nun beginnt die Installation. Bitte beachte, dass die CCU3 während der Installation neugestartet wird.

Sobald die Installation abgeschlossen ist, findest du unter Einstellungen -> Systemsteuerung den Menüpunkt CUxD-Daemon. Mit einem Klick auf diesen Menüpunkt öffnet sich ein neues Fenster. In diesem muss nun ein Gerät um Typ (28) System angelegt werden. Wähle deshalb im oberen Menü die die Einstellung Geräte aus und leg folgende Einstellungen fest:

BezeichnungWert
CUxD Gerätetyp(28) System
FunktionExec
Seriennummer1
NameCUxD-EXEC

Anschließend muss noch auf den Button Gerät auf der CCU erzeugen geklickt werden. Nun findest du im Webinterface der CCU3 unter Geräte – Posteingang ein neues Gerät. Klick dieses Gerät an und schließ die Konfiguration durch einen Klick auf den Button Fertig ab. Nun sollte zur Sicherheit die CCU3 nochmals neugestartet werden. Sobald dieser Neustart durchgeführt wurde, können wir mit dem Anlegend der Systemvariablen beginnen.

Werbung

Anlegen der Systemvariablen

Im nächsten Schritt müssen nun die notwendigen Systemvariablen in der Homematic CCU3 festgelegt werden. Diese findest du unter Einstellungen -> Systemvariable. Damit das später vorgestellte Programm zuverlässig funktioniert verwenden Sie bitte die in der Tabelle dargestellte Bezeichnung sowie den jeweiligen Typ.

BezeichnungTypBeschreibung
[Pushover] API TokenWertelisteAPI Token, welcher auf der Pushover Webseite angezeigt wird
[Pushover] API UserWertelisteAPI User, welcher auf der Pushover Webseite angezeigt wird
[Pushover] DeviceZeichenkette(Optional) Dient der Einschränkung der Geräte, welche die Mitteilung erhalten sollen
[Pushover] ExpiresZahlZeit bis eine Nachricht als abgelaufen deklariert wird
[Pushover] Message TitleZeichenketteÜberschrift der Nachricht
[Pushover] Message TextZeichenketteInhalt der Nachricht
[Pushover] PriorityZeichenketteFestlegung der Priorität der Nachricht. Eine detaillierte Beschreibung findest du unter https://pushover.net/api#priority
[Pushover] SendenLogikwertWahr (true) oder Falsch (false)
Wertebezeichnung:
wahr = senden
falsch = gesendet
[Pushover] SoundZeichenketteName des Sounds, welcher auf dem Endgerät abgespielt werden soll. Eine Liste aller Sounds findest du unter https://pushover.net/api#sounds
[Pushover] RetryZahlAnzahl der Wiederholungsversuche. Wert zwischen 0 und 65000

Anlegen des Programms zum senden der Pushover Mittelungen

Nachdem nun die Systemvariablen definiert wurden ist es an der Zeit das Programm zum senden der Pushover Mittelungen anzulegen. Klick hierfür im Menü des Webinterface deiner Homematic CCU3 auf Programme & Verknüpfungen -> Programme & Zentralverknüpfungen.

An dieser Stelle erstellst du mit dem Klick auf den Button Neu ein neues Programm mit folgenden Einstellungen:


Das unter Aktivitäten festgelegte Skript findest du im nächsten Abschnitt.

Werbung

Skript zum senden der Push Benachrichtigung

Das folgende Script wird zum senden der Push Mitteilungen über die Homematic CCU3 verwendet. Im oberen Teil werden zunächst der API User und der API Token aus den jeweiligen Systemvariablen ausgelesen. Im Anschluss wird der Titel und Inhalt der Nachricht sowie der gewünschte Sound, die Priorität der Nachricht, die Anzahl der Wiederholungen sowie die Zeit bis diese Nachricht abläuft aus den jeweiligen Systemvariablen ausgelesen.

Im unteren Teil des Scripts wird zunächst eine Zeichenkette aus den Variablen zusammengesetzt. Im Anschluss werden diese Daten an die Pushover API übermittelt und somit an euer gewünschtes Endgerät übertragen.

!-------======== Pushover-Mittelung senden ========-------

!__Pushover Token
string po_api_user=dom.GetObject("[Pushover] API User").ValueList().StrValueByIndex(";", dom.GetObject("[Pushover] API User").Value());
string po_api_token=dom.GetObject("[Pushover] API Token").ValueList().StrValueByIndex(";", dom.GetObject("[Pushover] API Token").Value());
 
!__Nachricht
string po_title=dom.GetObject("[Pushover] Message Title").Value();
string po_message=dom.GetObject("[Pushover] Message Text").Value();
string po_device= dom.GetObject("[Pushover] Device").Value();	
string po_sound= dom.GetObject("[Pushover] Sound").Value();
string po_priority=dom.GetObject("[Pushover] Priority").Value();
string po_retry=dom.GetObject("[Pushover] Retry").Value();
string po_expires=dom.GetObject("[Pushover] Expires").Value();

!__Generierung des Strings zum senden der Nachricht

string po_request="/usr/local/addons/cuxd/curl -X POST -k -H \"Content-Type: application/x-www-form-urlencoded\" -d \"token=" # po_api_token # "&user=" # po_api_user;
if (po_device<>"") {
  po_request = po_request # "&device=" # po_device;
}

po_request = po_request # "&title=" # po_title # "&priority="# po_priority # "&sound=" # po_sound;

if (po_priority=="2") {
   po_request = po_request # "&retry="# po_retry # "&expire=" # po_expires;
}

po_request=po_request # "&message=" # po_message # "\" https://api.pushover.net/1/messages.json";

!__Nachricht senden
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(po_request);
Code-Sprache: PHP (php)

Nun sind alle Vorarbeiten abgeschlossen und wir können ein Programm für die Generierung einer Push Mittelung erstellen.

Generierung einer Push Mitteilung

Werbung

Das Programm zur Generierung einer Push Mitteilung kann nun sehr einfach erzeugt werden. Zunächst musst du eine gewünschte Bedingung auswählen, bei welcher du eine Push Mittelung erhalten möchtest. Anschließend muss unter Aktivität den folgenden Systemvariablen ein Wert zugewiesen werden:

  • API Token,
  • API User,
  • Message Title,
  • Message Text,
  • Priority,
  • Sound,
  • Senden

Sobald nun die Bedingung ausgelöst wurde solltest du umgehend eine Push Mitteilung auf dein Smartphone erhalten. Das folgende Bild stellt nochmals eine Übersicht über die zu definierenden Systemvariablen dar.

Das war’s auch schon. Ich hoffe ich konnte dir mit meiner Anleitung bei der Einrichtung von Pushover auf deiner Homematic CCU3 behilflich sein. Solltest du weitere Fragen oder Anregungen haben so schreib sie in die Kommentare.

Werbung

21 Comments

  1. Hallo, danke für das Skript. Ich habe eigentlich alles so eingerichtet, aber es kommt keine Nachricht an. Das Skript bzw. Programm wird durchlaufen, dass habe ich geprüft. Kann man feststellen ob das Skript fehlerfrei geht (außer der Fehlerprüfung im Skriptfenster).
    Müsste die „Senden“ Variable nach dem Senden wieder zurück gesetzt werden? Dies habe ich zumindest mit eingebaut.
    Gruß
    Martin

    1. Hallo Martin,
      das Skript wird wie hier beschrieben von mir verwendet. Haben Sie das virtuelle Gerät über den CUxD-Daemon erfolgreich angelegt? Haben Sie überprüft ob die beiden API Key und Token korrekt eingetragen sind?

      1. Hallo, ja das Gerät ist da. Ich habe jetzt im Full Syslog folgende Fehlermeldung gesehen:

        „ccu3-webui local0.err ReGaHss: ERROR: ScriptRuntimeError: !——-======== Pushover-Mittelung senden ========——- !__Pushover Token string po_api_user=dom.GetObject(„[Pushover] Api User“).ValueList().StrValueByIndex(„;“, dom.GetObject(„[Pushover] Api User“).Value()); string po_api_token=dom.GetObject(„[Pushover] Api Token“).ValueList().StrValueByIndex(„;“, dom.GetObject(„[Pushover] Api Token“).Value()); !__Nachricht string po_title=dom.GetObject(„[Pushover] Message Title“).Value(); s
        ring po_message=dom.GetObject(„[Pushover] Message Text“).Value(); string po_device= dom.GetObject(„[Pushover] Device“).Value();; string po_sound= dom.GetObject(„[Pushover] Sound“).Value(); string po_priority=dom.GetObject(„[Pushover] Priority“).Value(); string po_retry=dom.GetObject(„[Pushover] Retry“).Value(); string po_expires=dom.GetObject(„[Pushover] Expires“).Value(); !__Generierung des Strings zum senden der Nachricht string po_request=“/usr/local/addons/cuxd/curl -X POST -k -H \“Content-Type: ap
        lication/x-www-for“

        Bei mir ist RaspberryMatic installiert mit der neuest CUxD Version 2.7.

        Ich stehe vor einem Rätsel…muss es die Tage vielleich auf einer anderen CCU mal testen.

        1. Ich habe gerade gesehen, dass sich hinter der Variablen [Pushover] Device ein weiterer Semikolon eingeschlichen hat. Können Sie diesen mal aus ihrem Skript entfernen und überprüfen ob es anschließend funktioniert?

          1. Vielen Dank für diesen tollen Artikel! Ich stelle gerade alle meine >50 Homematic-Geräte von FHEM auf CCU3 um und habe genau nach der hier beschriebenen Lösung gesucht. Das Semikolon war wohl eher nicht problematisch, sehr wohl jedoch ein Unterschied zwischen der Systemvariable „[Pushover] Message Titel“ und der anschließenden GetObject-Abfrage „[Pushover] Message Title“. Man beachte die beiden letzten Buchstaben sind verdreht, was bei mir kommentarlos einfach nicht funktioniert hat. Kaum war der Typo gefixt, lief das Skript perfekt!
            Ich habe mir die beiden Variablen User und Token direkt ins Skript geschrieben, weil sie sich nicht ändern. Ansonsten habe ich das so 1:1 übernommen und bin erst mal begeistert.

          2. Hallo zusammen, danke an Thorsten mit den Hinweisen. Ich habe jetzt auch Token uns User direkt im Skript hinterlegt und nun funktioniert es!
            Gruß
            Martin

  2. Ich hab’s!
    Das Skript funktioniert super, wenn man den Fehler findet. Auf die Fährte gekommen durch meine Vorredner habe ich entdeckt, dass Groß- und Kleinschreibung der Variablen zwischen der Tabelle im Text und dem Skript-Quelltext differieren.

    Zur Sicherheit habe ich dann jeden Variablen-Namen direkt aus dem Skript herauskopiert – und siehe da, nun funktioniert es auch ohne dass man Token und User-API direkt ins Skript schreibt.

    Vielen Dank für das großartige Skript! ( und auch für die tolle Idee das Hauptthema in Eckige Klammern zu schreiben. Das werde ich bei mir einführen 😉

  3. Vielen Dank für die Anleitung! Bei hat die CCU3 nur die erste Meldung per Pushover gesendet, danach kam nichts mehr. Die Lösung war in den Einstellungen vom Programm zum Senden des Pushovers: dort habe ich entgegen Deinem Screenshot „bei Änderung auslösen“ durch „bei Aktualisierung auslösen“ ersetzt und jetzt funktioniert es wunderbar in Verbindung mit meinem Wassersensor.

    1. Hallo, ich verwende dieses Programm auch in Verbindung mit meinen Wassermeldern und ich musste es genauso machen wie Kai. Jetzt funzt es wunderbar. Danke und Gruß

  4. Hallo und danke für den Beitrag,

    leider hänge ich schon bei der 2. Aufgabe: beim Einrichten des CuxD-Gerätes soll ein Geräte-Icon ausgewählt werden. Ist das richtig so? Wenn ja, welches Gerät?

    Sorry – Anfänger….

  5. Hallo, Danke das Sie sich die Arbeit gemacht haben Ihr Wissen weiter zu geben! Ich habe meine Homematic Programme erstellt, aber ich bin trotzdem ein Anfänger und bitte um Hilfe!
    Folgende Probleme
    Anlegen einer Systemvariablen
    – Pushover Senden (Wahr oder True), im Programm Pushover Mitteilung senden bei, kann ich nicht senden auswählen nur (Wahr oder True)
    – Pushover Device (Optional) nur zum Verständnis, die Ausgabegeräte sind im Pushover Account eingerichtet, oder? Dient dann die Einschränkung dazu, das ich unterschiedliche Ausgabegeräte zu unterschiedlichen Alarmemeldungen nutze, auswählen kann? Es müssen ja erstmal alle Ausgabegeräte im Account angelegt sein.
    Skript kopieren
    – Habe den Skript kopiert und in das Skript Feld Homematic ins obere Teil kopiert. Habe mal den Button Fehlerprüfung gedrückt folgende Anzeige im unteren Teil taucht auf: Error 1 at row 33 col 10 near ^-Sprache: PHP (php)
    Parse following code failed:
    Habe im Homematic Programm den Button Skript testen gedrückt und dann ausgeführt mit dem Ergebnis. Eingabe: WriteLine(„Hallo Welt!“); Ausgabe: Hallo Welt!
    Erstellen Programm Push Mitteilung
    – Systemzustand Pushover senden, wieder keine Wahlmöglichkeit senden, nur wahr oder falsch
    Programm verändern
    – Erst nach 15 Minuten Alarm auslösen Änderung in den Programm Push Mitteilung , bei allen Systemvariablen statt sofort 15 min eintragen. Wie kann ich das so programmieren, das vor dem Auslösen des Alarm der Zustand geprüft wird, ob er sich inzwischen geändert hat. Zum Beispiel ein Tor, was maximal 15 Minuten offen sein soll, das geöffnet wurde und nach 10 Minuten geschlossen, dann soll kein Alarme ausgelöst werden.
    Besten Dank!
    Mit freundlichen Grüßen
    Andreas Göpfert

    1. Hallo Andreas,
      danke für dein Feedback.
      – Pushover senden bitte die jeweilige Wertebezeichnung (siehe Tabelle) eintragen
      – Pushover Device, dient der Einschränkung der Geräte, welche die Mitteilung erhalten sollen
      – Bzgl. des Fehlers diesen können wir leider nicht nachvollziehen
      – Beispiel Tor: Am besten du erstellst eine weitere Systemvariable, welche den aktuellen Status des Tors (offen/geschlossen) erhältst. Bevor du nun eine Nachricht über Pushover abschickst, überprüft du den Status dieser Variable.

  6. Moin zusammen,
    habe alles nach Anleitung gemacht, trotzdem passiert überhaupt nichts.
    Die CCU3 hat 3.65.11 und das CUxD die 2.9.4 Version drauf.
    Das Gerät wurde als 19 Tasten Fernbedienung (da nicht weiter beschrieben) angelegt und in der CCU lt. Anleitung bestätigt und die CCU neugestartet.
    Alle aufgeführten Fehler in den Kommentaren sind in dem Script bereinigt. Trotzdem passiert nix!
    Wie kann man das step by step überprüfen.
    Danke und Gruß. Hary

    1. Hallo Hary,
      Das Gerät wurde als 19 Tasten Fernbedienung (da nicht weiter beschrieben) angelegt

      In unserer Anleitung haben wir im Abschnitt Installation des CUx-Daemon beschrieben, dass der CUxD Gerätetyp als (28) System definiert werden muss und nicht wie von dir beschrieben als 19 Tasten Fernbedingung.

      1. Beim erzeugen des CUxD-Geräts muß aber eine Icon angegeben werden. Deshalb hat hier @Hary eine 19 Tasten Fernbedienung gewählt.
        Muß im CUxD-Gerät nicht noch die API Token bzw. User hintrlegt werden?

  7. Hallo zusammen, danke für diese detaillierte hilfreiche Anleitung incl. der nützlichen Kommentare. Alle Fehler sind jetzt offensichtlich gefixt. Beim 2. Versuch hat alles sofort funktioniert. Deshalb zwei Anmerkungen zur o. g. Beschreibung: 1. Beim Erzeugen des Gerätes auf der CUxD Webmaske muss default auch ein Geräte-Icon incl. Control ausgewählt werden (ohne diese Angaben kann man das Gerät auf der CCU nicht erzeugen). Was man hier wählt hat wahrscheinlich auf die Funktion keinen Einfluss, aber ohne geht es halt nicht (die Felder können nicht leer sein). Hier wäre ein Hinweis im Abschnitt Erzeugen des CUx Deamon sinnvoll. 2. Die Info von Kai zu den Wassermeldern kann ich bestätigen, sie reagieren nur mit der Einstellung: „bei Aktualisierung auslösen“. Danke an den Author und Gruß an alle die mitgedacht haben.

  8. Hallo zusammen. Da ich bereits ein CUxD für den Duty Cycle Wert habe, wurde ein weiteres Gerät angelegt mit dem Namen „CUxD-EXEC 1“ und der Seriennummer „CUX2800002“. Die Seriennummer habe ich im Script entsprechend angepasst. Bedingung ist eine offene Haustür bei Änderung auslösen. Funktioniert leider nicht. Weiß jemand Rat?

  9. Hallo zusammen, habe gerade eine CCU3 gekauft und bin der Meinung alles wie beschrieben eingerichtet zu haben. Lieder ohne Erfolg.
    Die CCU3 hat Version 3.75.6 und das CUxD die Version 2.11 Version.
    Hat jemand eine Idee, wie man die Funktion des gesamten Ablaufs prüfen kann?
    Im Full Syslog des CUxD wird keine Meldung ausgegeben.

Schreibe einen Kommentar zu Kai Antworten abbrechen

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