, ,

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!

11 Kommentare
  1. Benedikt
    Benedikt sagte:

    Hallo zusammen, ich weiß nicht, was ich falsch mache – sind meine ersten Versuche mit den Skripten bei Homematic / Raspberrymatic…

    Wenn ich das Skript (copy&paste und die o.g. ids anpassen) fehlerprüfen möchte, kommt jedes mal folgender Fehler:

    Skript:
    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);

    Fehler:
    Error 1 at row 3 col 13 near ^\https://api.telegram.org/bot16XXXX329:AAE8l0fWzIfhVfaRrXXXXaNxrLBCZk/sendMessag
    Parse following code failed:
    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);

    PS: Der Fehler immer auf, egal, was ich anpasse etc. Mir ist aber aufgefallen, dass wenn ich die fertig angepasste URL (mit meiner Chat-ID und dem korrekten bot direkt in den Browser eingebe, die gewünschte Nachricht versandt wird, also ich die Chat-ID und den bot korrekt eingegeben habe.

    Antworten
  2. Frank
    Frank sagte:

    Hallo Sebastian, ich habe noch die alten Rauchmelder im Einsatz HM-Sec-Sd die bieten den Batteriekanal nicht als abfrage an. Hast Du eine Idee wie ich eine Meldung bei Batterie leer bekommen kann.
    Danke für Deine tolle Arbeit und schöne Grüße
    frank

    Antworten
    • Markus
      Markus sagte:

      Hi Frank, ja geht mir leider auch so und werde dann immer schön Nachts mit piepen geweckt wegen dem Batteriestatus :( Bisher habe ich auch noch keine Idee, wie man das abfangen kann :(
      Gruß, Markus

      Antworten
  3. Christian
    Christian sagte:

    Hallo,

    dieser Beitrag ist zwar etwas „of topic“ aber da er zu Telegram und Push Nachrichten passt, wollte ich hier als Neuling mal meine Fragen los werden:

    1. Ich höre immer wieder, daß Scripte mit System.exec zu CCU Abstürzen führen können. Daher empfehlen viele CCUXDaemon zu nutzen. Das ist bei dem Script oben nicht der Fall. Wird das Problem überschätzt?

    2. Ich habe von einem ebenfalls sehr guten Forum von Christian Luetgens u.g. Programm übernommen, um mir Push Nachrichten von der CCU senden zu lassen. leider klappt das nur sporadisch und nicht zuverlässig. Ich kann leider nicht erkenne, wo der Fehler sitzt. Grundsätzlich sollte das Script die Systemvariable „Telegram“ auslesen und wenn diese gesetzt ist, diese pushen und dann wieder auf „0“ setzten.
    Sieht jemand einen Fehler in dem Script?

    ! HomeMatic-Script
    ! TELEGRAM-FRAMEWORK
    ! http://www.christian-luetgens.de/homematic/telegram/telegramframework/T-Framework.htm

    object o_msg = dom.GetObject („Telegram“);
    if (o_msg.Value() != „“) {
    string s_cmd = „wget –no-check-certificate –quiet -O /dev/null \“https://api.telegram.org/bot394582310:AAF8dlndVB4a-EKCLjdH6INH-TMXXXXXXXX/sendMessage?chat_id=XXXXXXX&text=“ # o_msg.Value() # „\““;
    dom.GetObject(„CUxD.CUX2801004:2.CMD_EXEC“).State (s_cmd);
    o_msg.State („“);
    }

    ! Ende des Scripts

    Antworten
  4. HM-Tester
    HM-Tester sagte:

    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

    Antworten
  5. David
    David sagte:

    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);

    Antworten
  6. Martin
    Martin sagte:

    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

    Antworten
  7. Adrian
    Adrian sagte:

    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.

    Antworten
  8. Werner Weber
    Werner Weber sagte:

    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

    Antworten
    • Sebastian
      Sebastian sagte:

      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!

      Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

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