Homematic Push-Nachrichten: Servicemeldungen per Telegram melden
Kurz erklärt: Die Homematic-Zentrale kann über CUxD und curl Nachrichten an einen Telegram-Bot oder an Pushover schicken. Ein Sende-Programm verschickt den Text einer Systemvariable „PushText“, ein zweites Programm sammelt bei neuen Servicemeldungen schwache Batterien und nicht erreichbare Geräte ein. So lassen sich Alarme und Wartungshinweise aller Programme aufs Handy bringen.Stand: November 2026
Auf einen Blick
- Ziel
- Servicemeldungen, schwache Batterien und Alarme aus beliebigen Programmen als Push-Nachricht aufs Handy schicken.
- Benötigt
- CCU3, RaspberryMatic oder OpenCCU mit Internetzugang, Zusatzsoftware CUxD, Telegram-Konto mit eigenem Bot oder Pushover-Konto · Komponenten ansehen
- Aufwand
- ca. 1 Stunde
- Niveau
- Niveau 2 von 3: Fortgeschritten
- Läuft mit
- CCU3RaspberryMaticOpenCCU
Programmvorlage Diese Anleitung ist eine Programmvorlage. Programme zuerst mit unkritischen Geräten testen und die Skripte an die eigenen Gerätenamen und Zugangsdaten anpassen.
Wichtig Bot-Token, Chat-ID und Pushover-Schlüssel sind Zugangsdaten. Sie gehören nicht in Screenshots, Foren-Beiträge oder öffentliche Backups. Wurde ein Token veröffentlicht, sollte man es sofort neu erzeugen.
Aktueller Stand eQ-3 übergibt die Weiterentwicklung der CCU3 schrittweise an die Community (OpenCCU). Das hier gezeigte Verfahren mit CUxD und curl ist davon nicht abhängig, die Pfade sollte man nach größeren Firmware-Updates aber kurz prüfen.
Inhalt dieser Anleitung
01Ziel und Idee
Viele Homematic-Programme sind erst richtig nützlich, wenn sie sich melden: der Wassermelder im Keller, der Rauchmelder oder einfach der Hinweis, dass im Fensterkontakt die Batterie schwach wird. Die WebUI zeigt solche Servicemeldungen zwar an – aber nur, wenn man hineinschaut.
Diese Vorlage baut deshalb einen zentralen Push-Baustein:
- Eine Systemvariable PushText nimmt den Nachrichtentext auf.
- Ein Sende-Programm reagiert auf jede Aktualisierung dieser Variable und verschickt den Text per Telegram oder Pushover.
- Ein Servicemeldungs-Programm sammelt bei neuen Servicemeldungen die betroffenen Geräte ein und schreibt sie in PushText.
Jedes andere Programm kann danach eine Nachricht senden, indem es einfach PushText setzt – ganz ohne eigenes Skript.
Der Vorteil dieser Trennung: Zugangsdaten stehen nur an einer einzigen Stelle. Wechselt man später von Telegram zu Pushover oder erneuert man ein Token, passt man genau ein Skript an, und alle Programme senden weiter. Außerdem lässt sich das Sende-Programm für eine Weile deaktivieren, etwa während Umbauarbeiten, ohne die übrigen Programme anzufassen.
Telegram und Pushover sind dabei nur zwei Beispiele. Beide sind verbreitet, gut dokumentiert und lassen sich mit einem einfachen HTTP-Aufruf ansprechen. Andere Dienste mit vergleichbarer Schnittstelle funktionieren nach demselben Muster; nur die Adresse und die Parameter im curl-Aufruf ändern sich.
02Telegram oder Pushover vorbereiten
| Telegram | Pushover | |
|---|---|---|
| Konto | kostenlos | App nach einer Testphase einmalig kostenpflichtig |
| Zugangsdaten | Bot-Token und Chat-ID | Anwendungs-Token und User-Key |
| Aufruf | https://api.telegram.org/bot<Token>/sendMessage |
https://api.pushover.net/1/messages.json (nur POST) |
| Grenze | – | 10.000 Nachrichten pro Monat und Konto |
Telegram: In der Telegram-App mit dem offiziellen Konto @BotFather einen neuen Bot anlegen (/newbot). Man erhält das Bot-Token. Danach dem eigenen Bot eine beliebige Nachricht schreiben und im Browser https://api.telegram.org/bot<Token>/getUpdates aufrufen; in der Antwort steht unter chat → id die Chat-ID.
Pushover: Nach der Registrierung steht der User-Key im Dashboard. Unter Create an Application/API Token legt man eine Anwendung „Homematic“ an und erhält das Anwendungs-Token.
03CUxD und Systemvariable einrichten
Die Skripte rufen das Programm curl über den CUx-Daemon auf. Die Installation von CUxD ist in einer eigenen Anleitung beschrieben. In der CUxD-Oberfläche ein Gerät vom Typ (28) System mit der Funktion Exec anlegen; mit der Seriennummer 1 heißt es CUX2801001. Danach das neue Gerät in der WebUI aus dem Posteingang übernehmen.
Die Zentrale braucht außerdem Internetzugang. Neuere CCU3-Firmware und RaspberryMatic/OpenCCU bringen curl unter /usr/bin/curl mit; bei älteren Ständen nutzten Anleitungen ein mit CUxD geliefertes curl.
Unter Einstellungen → Systemvariable eine Variable PushText vom Typ Zeichenkette anlegen.
Dann das Sende-Programm „Push senden“ anlegen: Wenn Systemzustand PushText (Vergleich so wählen, dass jeder nicht leere Text zutrifft) bei Aktualisierung auslösen, Dann Skript. Bei Aktualisierung ist wichtig, damit auch zweimal derselbe Text verschickt wird. Das Skript für Telegram:
! Push-Sender: verschickt den Inhalt der Systemvariable "PushText"
! Voraussetzung: CUxD mit Exec-Gerät CUX2801001 (Typ System, Funktion Exec)
string token = "BOT-TOKEN"; ! Telegram-Bot-Token – niemals veröffentlichen
string chatId = "CHAT-ID"; ! eigene Chat-ID
var sv = dom.GetObject("PushText");
if (sv) {
string text = sv.Value();
if (text != "") {
! curl kodiert den Text selbst (--data-urlencode), -G hängt ihn an die URL an
string cmd = "/usr/bin/curl -s -m 10 -G 'https://api.telegram.org/bot" # token # "/sendMessage' -d 'chat_id=" # chatId # "' --data-urlencode 'text=" # text # "'";
! Befehl über CUxD im Hintergrund ausführen (Zeitlimit 10 Sekunden)
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cmd);
}
}
Für Pushover tauscht man zwei Stellen im Skript aus, wie in den Kommentaren beschrieben. Pushover verlangt POST, deshalb fehlt hier -G:
! Pushover: diese zwei Zeilen ersetzen token und chatId am Skriptanfang
string apiToken = "APP-TOKEN"; ! Pushover-Anwendungs-Token
string userKey = "USER-KEY"; ! Pushover-User-Key
! ... und diese zwei Zeilen ersetzen den curl-Aufruf im inneren if-Block
string cmd = "/usr/bin/curl -s -m 10 -d 'token=" # apiToken # "' -d 'user=" # userKey # "' --data-urlencode 'message=" # text # "' https://api.pushover.net/1/messages.json";
dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State(cmd);
04Servicemeldungen automatisch melden
Die Zentrale führt die Anzahl offener Servicemeldungen als Systemzustand Servicemeldungen. Ändert sich dieser Wert, startet das zweite Programm ein Skript. Es geht alle anstehenden Meldungen durch, ermittelt das zugehörige Gerät und übersetzt die technischen Kürzel wie LOW_BAT oder UNREACH in lesbaren Text.
- Systemzustand „Servicemeldungen“ im Wertebereich größer als 0 – bei Änderung auslösen
- Skript (siehe unten): sammelt die anstehenden Servicemeldungen und schreibt den Text in die Systemvariable „PushText“ – sofort
! Servicemeldungen einsammeln und als Text in "PushText" schreiben
string sId;
string typ;
string grund;
string liste = "";
integer anzahl = 0;
object oAlarm;
object oDP;
object oCh;
object oDev;
object oSvc = dom.GetObject(ID_SERVICES);
foreach (sId, oSvc.EnumIDs()) {
oAlarm = dom.GetObject(sId);
! nur aktuell anstehende Servicemeldungen auswerten
if (oAlarm.IsTypeOf(OT_ALARMDP) && (oAlarm.AlState() == asOncoming)) {
oDP = dom.GetObject(oAlarm.AlTriggerDP());
if (oDP) {
oCh = dom.GetObject(oDP.Channel());
oDev = dom.GetObject(oCh.Device());
typ = oDP.HssType();
! technische Namen in verständlichen Text übersetzen
grund = typ;
if ((typ == "LOWBAT") || (typ == "LOW_BAT")) { grund = "Batterie schwach"; }
if (typ == "UNREACH") { grund = "nicht erreichbar"; }
if (typ == "STICKY_UNREACH") { grund = "war nicht erreichbar"; }
if (typ == "CONFIG_PENDING") { grund = "Konfiguration ausstehend"; }
liste = liste # " | " # oDev.Name() # ": " # grund;
anzahl = anzahl + 1;
}
}
}
if (anzahl > 0) {
! Text setzen – das Sende-Programm reagiert auf die Aktualisierung
dom.GetObject("PushText").State("CCU meldet " # anzahl.ToString() # " Servicemeldung(en)" # liste);
}Das Skript durchläuft alle Servicemeldungen der Zentrale (ID_SERVICES) und berücksichtigt nur aktuell anstehende Meldungen (asOncoming). Über den auslösenden Datenpunkt ermittelt es Kanal und Gerät, übersetzt die Meldungsart in Klartext und schreibt die Liste mit Gerätenamen in die Systemvariable PushText. Den Versand übernimmt das Sende-Programm.
Eine Einschränkung sollte man kennen: Manche Geräte melden eine schwache Batterie erst sehr spät, andere fallen zuerst als nicht erreichbar auf. Deshalb wertet das Skript beide Meldungsarten aus. Eine Batteriemeldung ersetzt keinen Blick auf die Batteriespannung, wo das Gerät sie anzeigt.
05Testen und weiterverwenden
Zum Testen unter Status und Bedienung → Systemvariablen den Wert von PushText von Hand auf „Test“ setzen. Kurz darauf sollte die Nachricht auf dem Handy erscheinen. Kommt nichts an, hilft ein Blick auf den Internetzugang der Zentrale und auf Tippfehler in Token und Chat-ID; ein Aufruf der URL im Browser zeigt, ob Telegram den Text annimmt.
Für das Servicemeldungs-Programm genügt es, die Batterie eines unkritischen Geräts kurz zu entnehmen. Die Zentrale meldet das Gerät erst als nicht erreichbar, wenn eine erwartete Statusmeldung ausbleibt – das kann je nach Gerät eine Weile dauern.
In anderen Programmen reicht danach eine Aktivität Systemzustand PushText mit einem festen Text, etwa „Wasser im Keller!“. Mehrere Meldungen kurz hintereinander kann man mit Verzögerung um einige Sekunden staffeln, damit sich die Texte nicht gegenseitig überschreiben.
Praktische Beispiele für weitere Meldungen:
- Wassermelder im Keller meldet Feuchtigkeit
- Rauchwarnmelder löst aus
- Fenster steht länger als eine Stunde offen
- Waschmaschine ist fertig
- Müllabfuhr ist morgen
Für reine Statusmeldungen wie die Waschmaschine reicht oft eine leise Benachrichtigung, für Alarme eine auffällige. Telegram erlaubt dafür getrennte Chats oder Bots, Pushover unterschiedliche Prioritäten – beides lässt sich später ergänzen.
Benötigte Komponenten
1 Produkt- Zentrale, auf der Programme, CUxD und Skripte laufenHomematic Zentrale CCU3CCU3bei Amazon ansehen* (öffnet in neuem Tab)
*Werbung / Affiliate-Link – Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.
06Tipps aus der Praxis
- Bot-Token und Schlüssel nie in Screenshots oder Forenbeiträgen zeigen; bei Bedarf in Skripten durch Platzhalter ersetzen.
- Das Sende-Programm mit „bei Aktualisierung auslösen“ anlegen, nicht „bei Änderung“ – sonst wird derselbe Text kein zweites Mal verschickt.
- Apostrophe im Nachrichtentext vermeiden; sie können den curl-Aufruf in einfachen Anführungszeichen stören.
- Geräte in der WebUI sprechend benennen – der Gerätename landet direkt in der Push-Nachricht.
- Nach Firmware-Updates einmal die Testnachricht über PushText schicken, um den curl-Pfad zu prüfen.
- Wenn mehrere Programme gleichzeitig senden, die Aktivitäten mit „Verzögerung um“ einige Sekunden versetzen.
07Häufige Fragen
Kann die CCU3 ohne Zusatzsoftware Push-Nachrichten senden?
Für Telegram oder Pushover ist ein Aufruf eines externen Programms wie curl nötig. Die übliche und gut dokumentierte Lösung führt ihn über das Exec-Gerät des CUx-Daemons aus. Mit CUxD lässt sich der Aufruf sauber aus Programmen und Skripten starten.
Was ist besser: Telegram oder Pushover?
Telegram ist kostenlos und braucht nur einen eigenen Bot. Pushover kostet nach einer Testphase einmalig für die App, bietet dafür einen schlanken Dienst nur für Benachrichtigungen. Beide Varianten lassen sich mit demselben Sende-Programm nutzen.
Warum kommt die Meldung „Batterie leer“ manchmal nicht?
Nicht jedes Gerät meldet eine schwache Batterie rechtzeitig; manche fallen zuerst als nicht erreichbar auf. Deshalb wertet das Skript auch UNREACH aus. Wichtige Geräte wie Rauch- oder Wassermelder sollte man zusätzlich regelmäßig prüfen.
Wie findet man die Telegram-Chat-ID heraus?
Dem eigenen Bot eine Nachricht schreiben und anschließend im Browser die getUpdates-Adresse der Bot-API mit dem eigenen Token aufrufen. In der Antwort steht die Chat-ID im Abschnitt chat unter id.
Funktioniert die Anleitung auch mit RaspberryMatic und OpenCCU?
Ja. Die Systemvariablen, die Programme und das HomeMatic-Skript sind identisch, CUxD steht dort ebenfalls als Zusatzsoftware zur Verfügung. Der curl-Pfad /usr/bin/curl ist bei RaspberryMatic und OpenCCU vorhanden.
08Passende Anleitungen
Quellen und weiterführende Links (10)
- core.telegram.org/bots/api
- pushover.net/api
- community.openhab.org/t/homematic-how-to-get-the-service-messages/25139
- homematic-forum.de/forum/viewtopic.php?p=292832
- pushsafer.com/en/homematic
- media.elv.com/file/2017_03_03_hm_scriptprogrammierung_teil4.pdf
- forum.iobroker.net/post/470743
- forum.iobroker.net/post/325053
- forum.iobroker.net/post/236215
- homematic-ip.com/en/news/ccu3-smart-home-next-chapter
Kommentare
Fragen oder Ergänzungen? Meldet Euch einfach in den Kommentaren.