Push-Meldung von der CCU2

In meinem Beitrag „pushover.net – API-Key“ habe ich die Erstellung des für den Versand einer Push-Meldung notwendigen API-Key (App-Token) beschrieben.
Wie du einen Bot für den Telegram Messenger erstellst, habe ich in meinem Beitrage „Telegram Messenger – Bot einrichten“ beschrieben.

Du hast ab jetzt die Wahl, ob du die Meldung per PushOver oder per Telegram Messenger verschicken möchtest.

Jetzt geht es darum, einen Systemzustand per Push-Meldung zu versenden.
Ich gehe davon aus, dass du CUxD bereits installierst hast! Falls dies noch nicht geschehen ist, findest du hier eine Anleitung.

Vorbereitung für die Push-Meldung

Zunächst muss eine Systemvariable „PushOver“ angelegt werden.

pushover06
Systemvariable PushOver
Push-Meldung - "Es wurde geklingelt!"
Push-Meldung – „Es wurde geklingelt!“
var PushOverText = "Es wurde geklingelt!";
dom.GetObject('PushOver').State(PushOverText);

var programObj = dom.GetObject("PushOverSend");
programObj.ProgramExecute();

Update 18.06.16: Falls noch nicht geschehen, solltest du auch noch die Systemvariable „CCU-Status“ anlegen. Die Systemvariable „CCU-Status“ habe ich in meinem Artikel „Systemvariablen …“ genauer beschrieben.

Push-Meldung per Programm "PushOverSend"
Push-Meldung per Programm „PushOverSend“

Das folgende Skript kopierst du in das HomeMatic-Programm, wenn du die Mitteilung per PushOver versenden möchtest.

var PushoverText = dom.GetObject("PushOver").Value();

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -d token=[Dein App-Token] -d user=[Dein User-Key] -d message='"#PushoverText#"' -d priority=1 https://api.pushover.net/1/messages.json");

Alternativ kannst du die Mitteilung auch per Telegram Messenger verschicken, dazu nutzt du dieses Skript.

var PushoverText = dom.GetObject("PushOver").Value();

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot[Dein API-Key]/sendMessage -d text='"#PushoverText#"' -d chat_id=[Bot-ID]");

Achtung: Bei „Dein App-Token“, „Dein User-Key“ oder „Dein API-Key“, „Bot-ID“ die []-Zeichen entfernen und deine Daten von pushover.net oder vom Telegram Messenger eintragen!

Telegram Messenger App laden

In meinem Beitrag „Telegramm Messenger – Bot einrichten“ habe ich eine Schritt für Schritt Anleitung für dich dazu erstellt.

PushOver App laden

Damit du Push-Meldung auf deinem SmartPhone empfangen kannst, muss du die PushOver-App auf deinem SmartPhone installieren und dich in der App mit deinem PushOver-Account anmelden.

Jetzt solltest du nach dem Aufruf des Programms deine erste Push-Meldung auf dein SmartPhone erhalten!

Immer wenn ich neue Programme erstelle, lasse ich mich in der Anfangszeit zur Kontrolle per PushOver informieren. Vor allem wenn das Programm in meiner Abwesenheit ausgeführt wird.

Beim Verlassen unseres Hauses wird die Alarmanlage aktiviert und ein Skript kontrolliert ob alle Fenster geschlossen sind. Habe ich tatsächlich ein Fenster vergessen zu schliessen, wird die Alarmanlage nicht scharf geschaltet und ich erhalte eine PushOver-Meldung welches Fenster nicht verschlossen ist. Da meine Frau und ich die Alarmanlage per HomeMatic Funk Handsender (HM-RC-4-3) aktivieren, kann ich die PushOver-Meldung gezielt auf das jeweilige SmartPhone senden. Gerade im Sommer haben wir da schon den einen oder anderen Hinweis verlassen des Hauses bekommen und waren darüber sehr froh. Inzwischen habe ich direkt neben der Haustür die HomeMatic Statusanzeige (HM-OU-LED16) installiert, diese signalisiert schon vor dem Verlassen des Hauses unter anderem auch offene Fenster.

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

11 Gedanken zu „Push-Meldung von der CCU2“

  1. Hallo Erhard,

    du teilst also das PushOver Skript in ein „Text“-Weitergskript und ein „Absenden“ Skript welches die API Daten von PushOver enthält, finde ich gut. Dann muss man die APIs nicht bei jeder PushOveraktion erneut eingeben und hält die Skripe schlank. Danke für den Tipp, werde ich gleich mal umsetzen!

    Grüße
    Daniel

    1. Hallo Daniel,

      mit der Zeit wächst die HomeMatic-Installation und die Anzahl der erstellten Programme, da führt diese Vorgehensweise zu ein bisschen mehr Ordnung und Übersichtlichkeit! 😉

      Gruß Erhard

  2. Hallo Erhard,

    vielen Dank für das tolle Tutorial. Ich stecke aber aktuell im Schritt, in dem ich das Skript einfügen muss. Was ist der Systemzustand „CCU-Status“ ? Muss ich den erstellen? Wenn ja, wie mache ich das?

    VG Stefan

  3. Wozu ist die Systemvariable „CCU-Status“?
    Verstehe die funktion nicht so ganz.

    Der zustand ändern sich 5 minuten nach neustart in normal und dann?

    1. Hallo Benni,

      in meinem Beitrag Systemevariablen habe ich die Systemvariable CCU-Status beschrieben.

      Mit dem Abfragen der Variable kannst du verhindern, dass nach einem Neustart der CCU2 alle Programme einmal automatisch ausgeführt werden.
      Dazu musst du die Systemvariable CCU-Status in allen Programmen im Wenn-Zweig auf „normal“ prüfen.
      Die Programme werden zwar alle gestartet, da die Systemvariable CCU-Status aber in den ersten 5 Minuten auf „rebootet“ steht werden die Programme aber nicht ausgeführt.
      Bitte schaue dir unbedingt meinem Beitrag Systemevariablen genauer an.

      Gruß Erhard

  4. Hallo,

    ich würde gern den Telegram Messenger nutzen.
    Allerdings möchte ich keine extra Systemvariable „PushOver“ hierfür anlegen.

    Wäre es nicht einfacher direkt per Script alles „abzuarbeiten“ ohne extra eine Systemvariable zu nutzen?
    Wie müsste dann das Skrip ausehen?
    Danke für Ihre Hilfe!

    MfG
    Christian

    1. Hallo Christian, der Sinn einer Systemvariablen liegt in der Flexibilität. Das Push-Script kann immer dann gestartet werden, wenn sich der Wert der Systemvariablen verändert und du kannst somit mehrere Zustände in die Benachrichtigung integrieren.

      Gruß Erhard

  5. Hallo Erhard,
    ja das ist richtig. Ich habe es letzendlich auch so umgesetzt! 🙂

    Einige mehr Deiner Ideen und Umsetzungen habe ich auch „übernommen“.
    Danke für Deine Arbeit. Daumen hoch!

    MfG
    Christian

  6. Hallo Erhard,
    vielen Dank für Deine tollen Beschreibungen und Scripte.
    Dank dieser habe ich es nun hinbekommen, in den PushOver Nachrichten auch die Werte von Systemvariablen angezeigt zu bekommen 🙂
    Das ist für mich als jemand der sich nicht mit Programmierungen auskennt schon ein Erfolg.

    Wäre es technisch auch möglich in einer einzigen PushOver Nachricht mit einer Überschrift mehrere Systemvariablenwerte einschliesslich der Variablenbezeichnungen übermittelt zu bekommen?

    Beispiel:
    Ich habe eine Solaranlage mit 2 Kollektorfeldern.
    Wenn die eine Temperatur überschreiten und am Warmwasserspeicher nicht genug ankommt, soll eine PushOver Nachricht das melden und die Temperaturen gleich mit übermitteln.
    Aktuell mache ich das mit 4 einzelnen Meldungen.

    So sehen die Variablen dazu aus:
    S_Kollektor_Vakuum: 52.000000
    S_Kollektor_Flach: 42.900000
    Speicher_Oben: 49.900000
    Speicher_Solar: 45.400000

    Vielen Dank im Voraus für mögliche Hilfen.
    Viele Grüße von Bernd

    1. Hallo Bernd,

      du musst vor dem Versand der PushOver Nachricht die entsprechenden Werte der Systemvariablen in die Systemvariable PushOver addieren.
      In den ersten vier Zeilen des Codes werden die Werte der vier Systemvariablen ermittelt und in Script-Variablen zwischengespeichert. Danach werden die Script-Variablen mit Leerzeichen und Komma als Trenner als Textkette zusammen addiert. In der letzten Programmanweisung wird die Textkette in die Systemvariable PushOver geschrieben die dann per Telegramm verschickt werden kann. Bei der Erstellung der Textkette können selbstverständlich auch noch die Namen der Systemvariablen eingefügt werden.

      Beispiel:

      var PushOverText_Vakuum = dom.GetObject("S_Kollektor_Vakkuum").Value();
      var PushOverText_Flach = dom.GetObject("S_Kollektor_Flach").Value();
      var PushOverText_Oben = dom.GetObject("S_Kollektor_Oben").Value();
      var PushOverText_Solar = dom.GetObject("S_Kollektor_Solar").Value();
      var PushOverText = PushOverText_Vakuum # ", # PushOverText_Flach # ", # PushOverText_Flach # ", # PushOverText_Oben # ", # PushOverText_Solar;
      dom.GetObject('PushOver').State(PushOverText);

      Falls dazu noch Fragen existieren, einfach nochmal melden.

      Einen schönen Abend wünscht dir Erhard

Kommentare sind geschlossen.