Homematic: Push Nachricht bei niedrigem Batteriestand

Ich verwende Homematic schon seit einiger Zeit und habe etliche Geräte im ganzen Haus verteilt. Dabei sind sehr viele Unterputzgeräte, wie etwa Dimmer oder Schalter, doch es sind auch einige batteriebetriebene Geräte dabei. Je nachdem, wie häufig die Geräte senden und empfangen müssen, kann die Batterie bis zu 1,5 Jahre halten. Die Laufzeit der Batterien hat aber auch viel mit der Entfernung zur Basis CCU2 zu tun.

rp_Homematic-CCU2-1200x477.jpg

Ein Gerät, das weiter entfernt steht, muss durch Übertragungsfehler häufiger senden. Auch mein Haustürsensor wird wahrscheinlich öfter angesprochen als mein Sensor am Schlafzimmerfenster. Gerade bei Sensoren, die für wichtige Funktionen wie etwa einer Alarmanlage (Fenstersensor) genutzt werden, sollte daher vorher alarmieren, wenn sich die Batterielaufzeit dem Ende neigt. Natürlich werden diese Meldungen in der CCU2 gesammelt und dort auch angezeigt, doch hier schauen die wenigsten von Euch regelmäßig rein.

Die meisten Geräte besitzen eine Status-LED, doch auch diese ist bei vielen meiner Geräte nicht sichtbar, da ich die Sensoren unauffällig verbauen wollte. Doch wie bekomme ich jetzt mit, das eine Batterie ans Ende gekommen ist?

Ich verwende auch dafür die Push-Benachrichtigung auf mein iPhone. Wir haben Euch hier bereits erklärt, wie Ihr die Push-Funktion sehr einfach über den kostenlosen Dienst Telegram einbinden könnt.

Wenn Ihr dieses Tutorial bereits durchlaufen habt, muss in der CCU2 nur noch ein Programm angelegt werden, das auf diesen Dienst zugreift und bei Bedarf eine Push-Nachricht an Euer Handy absetzt.

So geht Ihr vor:

Um ein neues Programm zu erstellen klickt Ihr auf „Programme und Verknüpfungen“ dann auf „Programme & Zentralenverknüpfung“ und im unteren Feld auf den Button „Neu“.

Homematic - Neues Programm anlegen

Bei Bedingung wählen wir nun das Gerät aus, dass wir überwachen wollen. In diesem Beispiel verwende ich einen optischen Fenstersensor aus.

Nun wählen wir noch das Ereignis aus, auf welches getriggert werden soll. Hier kann direkt „Batterie leer“ ausgewählt werden. Im nächsten Feld wählen wir „bei Änderung auslösen“. So bekommen wir nur eine Push-Nachricht, wenn sich der Batterie-Status von unserem Sensor von gut nach Batterie wird schwach ändert. Diese Meldung taucht dann auch nur einmal auf, sodass Ihr nicht ständig von neuen Meldungen überschüttet werdet.

Nun müssen wir noch ein Ereignis auswählen, dass ausgeführt wird. Dazu gehen wir auf „Aktivität: Dann..“ und klicken auf das grüne Plus.

Hier wählen wir „Skript“ aus und klicken auf Skript erstellen.

Homematic - Push Batterie leer

Es öffnet sich nun ein neues Fenster, indem ein Skript eingefügt werden kann. Hier geht Ihr folgendes ein:

string stderr;
string stdout;
string url=“\“https://api.telegram.org/bot16XXXX329:AAE8l0fWzIfhVfaRrXXXXaNxrLBCZk/sendMessage?chat_id=238XXX8&text=Batterie leer vom Gerät Fenstersensor\““;
system.Exec(„wget –no-check-certificate -q -O – „#url, &stdout, &stderr);

Homematic - Skript bearbeiten

Am besten Ihr kopiert einfach den Text oben und fügt ihn in das Fenster ein, damit das Skript auch funktioniert, müsst Ihr aber noch Eure Parameter, die Ihr aus dem Push-Tutorial bekommen habt einfügen.

Ihr müsst bei botXXXX Euren Bot einfügen, und bei chat_id Eure eigene ID eintragen. Den Text könnt Ihr anschließend frei gestalten.

Hier habe ich als Beispiel „Batterie leer vom Gerät Fenstersensor“ eingefügt. Ihr könnt aber auch jeden anderen beliebigen Text verwenden.

Nun sendet Euch Eure CCU2 eine Push-Benachrichtigung, wenn dieser Sensor leer wird. Leider muss der Vorgang für jeden Sensor wiederholt werden, den Ihr auf diese Weise überwachen wollt. Ich habe nur Sensoren damit ausgestattet, an denen ich die Status-LED nicht direkt einsehen kann.

Homematic - Push auf iPhone

Auf diese Art und Weise könnt Ihr aber auch andere Push-Nachrichten bei einem Ereignis absetzen.

Viel Spaß beim ausprobieren!

Passende Beiträge


6 Comments

  • HM-Tester

    27. März 2017

    Hallo, erstmal ein Dickes Dankeschön für die tolle und Verständliche Ausführung hier!

    Ein kleiner Punkt würde ich gerne mit allen Teilen, weil ich da gestern fast dran verzweifelt wäre: Beim Copy&Paste von dem Script bauen sich Fehler ein, wie die Anführungszeichen und die – Striche. Das sieht man auch im direkt Vergleich des Scripts und des Screenshots. Also hier Tip an alle: Genau checken, das alles so wie in dem Screenshot steht, dann klappt es auch mit dem Script!
    VG

    Reply
  • David

    8. Januar 2017

    Ich habs modifiziert im Einsatz. Nutze eine Variable „@Message“, die ich in jedem Programm ggf. belege. Es gibt ein extra Programm was eben jene Variable überwacht und bei „Wenn @Message = „-“ bei Aktualiserung, dann nix, ansonsten HomeTAicScript zum pushen“. inkl. Sonderzeichenersetzung …

    string message = dom.GetObject(„@Message“).State();
    string messagefix = „“;
    string index;

    foreach(index, message.Split(„ä“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%A4“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„Ä“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%84“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„ö“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%B6“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„Ö“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%96“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„ü“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%BC“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„Ü“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C3%9C“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„/“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%2F“ # index; } }
    message = messagefix;
    messagefix = „“;
    foreach(index, message.Split(„°“)) { if (messagefix == „“) { messagefix = index; } else { messagefix = messagefix # „%C2%B0“ # index; } }
    message = messagefix;
    messagefix = „“;

    string stderr;
    string stdout;

    string url=“\“https://api.telegram.org/botXXXXXXXXX:XXXXX…XXXXXX/sendMessage?chat_id=xxxxxxxxxxxx&text=“#message#“\““;
    system.Exec(„wget –no-check-certificate -q -O – „#url, &stdout, &stderr);

    Reply
  • Martin

    5. Januar 2017

    Hallo,
    Umlaute müssen wie folgt codiert werden:
    Ä wird ersetzt durch %C3%84
    ä wird ersetzt durch %C3%A4
    Ö wird ersetzt durch %C3%96
    ö wird ersetzt durch %C3%B6
    Ü wird ersetzt durch %C3%9C
    ü wird ersetzt durch %C3%BC
    Gruß Martin

    Reply
  • Adrian

    30. Oktober 2016

    Hallo.
    Wollte das eben bei mir probieren. Leider zeigen meine batteriebetriebenen Geräte (Außen- und Innentermperatursensoren) gar nicht das mögliche Ereignis „Batterie leer“ an, wenn ich sie in einem Programm auswähle. Funktioniert das nicht bei allen batteriebetriebenen Geräten oder sind hierfür noch weitere (Vor)Einstellungen erforderlich?
    Besten Dank für die Anleitungen.

    Reply
  • Werner Weber

    Werner Weber

    8. Juni 2016

    Hallo Sebastian,
    vielen Dank für diesen hilfreichen Tipp. Habe das bei mir ausprobiert und es funktioniert sehr gut.
    Aber eine offene Frage bleibt: Sobald ich deutsche Umlaute in den Nachrichtentext einbaue, bekomme ich keine Push Nachricht mehr. Sonderzeichen wie : sind kein Problem.
    Woran kann das liegen? Weil du hast in deinem Beispiel bei „Gerät“ einen Umlaut drin.
    Danke für eine Antwort im Voraus.
    Werner

    Reply
    • Sebastian

      Sebastian

      8. Juni 2016

      Hallo Werner, das freut mich! Über diesen Fehler bin ich leider auch schon gestolpert. Umlaute sind leider ein kleines Problem. Diese müssen codiert werden, da sie sonst nicht verarbeitet werden können. Ich habe mir angewöhnt Umlaute daher nicht zu benutzen. Das Problem habe ich bereits mitPhilipp besprochen, wir veröffentlichen dazu in nächster Zeit einen Beitrag, wo wir die codierung von Umlauten beschreiben.

      Danke für den Hinweis!

      Reply

Schreibe einen Kommentar