Im Laufe der Zeit haben Smart Home Systeme wie Home Assistant durch Ihre Einfachheit und Fülle an Funktionen immer mehr an Popularität gewonnen. Echtzeitbenachrichtigungen bzw. Push Notifications für bestimmte Ereignisse wie Bewegungserkennung, Temperaturänderungen oder andere Ereignisse sind ein wesentlicher Bestandteil jedes Heimautomatisierungssystems. Obwohl es viele Möglichkeiten gibt, diese Benachrichtigungen zu erhalten, ist die Verwendung eines Telegram-Bots zu einer beliebten und zuverlässigen Wahl geworden. Die Messaging-App Telegram bietet End-to-End-Verschlüsselung und eine Plattform zum Anpassen von Bots.
In diesem Artikel werden wir uns die Vorteile der Verwendung eines Telegram-Bots für Notifications am Smartphone in Home Assistant ansehen.
Du wirst dich vielleicht fragen, warum man nicht einfach die komplette Home Assistant Instanz online zugänglich macht? Auf die Weise könnte man doch ebenfalls über die App auf dem Laufenden bleiben, wenn sich etwas zu Hause tut. Das hat vor allem zwei Gründe: Zum einen bietet man Angreifern eine potenzielle Angriffsfläche (nicht jeder möchte, dass alles online abrufbar ist) und außerdem können wir somit genau steuern, welche Daten per Internet versendet werden. Alles andere bleibt Lokal. Und als zusätzliches Feature können wir unseren Telegram-Bot noch erweitern, sodass er auf Befehle reagieren kann.
Zubehör
Für dieses Tutorial benötigen wir einen Raspberry Pi, damit wir darauf Home Assistant laufen lassen können. Zusätzlich richten wir später einen Trigger ein. Dieser kann durch ein beliebiges Gerät ausgelöst werden, hier sind einige Beispiele:
- Magnetschalter – Telegram Benachrichtigung beim Öffnen der Tür
- Temperatursensor – Notification beim Unter-/Überschreiten einer festgelegten Temperatur
- Bewegungsmelder – Bei Bewegung wird bspw. ein Bild per ESP32 Kamera per App versendet.
Auf deinem Raspberry Pi sollte Home Assistant bereits installiert und konfiguriert sein. Falls du ein Zigbee Gerät nutzt, musst du es zunächst einrichten.
Vorbereitung – Telegram Bot erstellen
Damit wir Nachrichten bekommen, brauchen wir heutzutage einen Telegram Bot. Dieser ist per API steuerbar und kann anschließend an bestimmte Chats oder an Gruppen Nachrichten schicken. Daher beginnen wir, indem wir uns einen Telegram Bot erstellen. Du brauchst dafür natürlich ein existierendes Telegram Konto (Computer, Android, iOS).
- Öffne den Channel @BotFather und starte einen neuen Chat.
- Erstelle einen neuen Bot mittels
/newbot
- Wähle einen aussagekräftigen Namen (dieser wird anschließend als Absender der Nachrichten angezeigt). Du kannst ihn jedoch auch noch später ändern.
- Wähle eine verfügbare ID. Diese muss in jedem Fall mit
bot
enden (bspw.newraspismarthomebot
). - Kopiere den angezeigten Token bzw. lasse den Chat offen, da wir den Token gleich brauchen werden.
- Klicke auf den (ersten) Link zu deinem Bot und starte den Chat (
/start
). Du musst mindestens eine Testnachricht schreiben, damit er dir später Nachrichten / Notifications schicken kann. - Wir brauchen nun noch die Chat-ID unseres Accounts. Der einfachste Weg ist es, den @GetIDs Bot zu fragen. Starte einfach den Chat und kopiere die 7-Stellige ID. Alternative Möglichkeiten sind hier erwähnt.
Home Assistant für den Telegram Bot konfigurieren
Wir machen weiter mit Home Assistant. Bevor wir den Telegram-Service nutzen können, müssen wir den Home Assistant Telegram Bot konfigurieren. Dazu bearbeiten wir die Datei /config/configuration.yaml
. Ich nutze hierfür das offizielle „File Editor“ Add-on. Aktiviere es ggf. (Settings → Add-ons → Add-on-Store) und klicke anschließend den „Open Web-UI“ Button. Passe den folgenden Code an und füge ihn zu deiner Konfigurationsdatei hinzu:
# Example configuration.yaml entry for the Telegram Bot telegram_bot: - platform: polling api_key: YOUR_API_KEY allowed_chat_ids: - CHAT_ID_1 # example: 123456789 for the chat_id of a user - CHAT_ID_2 # example: -987654321 for the chat_id of a group - CHAT_ID_3 # Example configuration.yaml entry for the notifier notify: - platform: telegram name: NOTIFIER_NAME chat_id: CHAT_ID_1 # It is possible to add multiple notifiers by using another chat_id # the example belows shows an additional notifier which sends messages to the bot which is added to a group - platform: telegram name: NOTIFIER_NAME_OF_GROUP chat_id: CHAT_ID_2
Zunächst einmal passen wir den api_key
und die allowed_chat_ids
an. Diese haben wir im Schritt davor erhalten. Du kannst mehrere konfigurieren, aber das ist nicht unbedingt nötig.
Im notify
Block kannst du die entsprechenden Actions erstellen: Du kannst ein oder mehrere „Kanäle“ anlegen – diese referenzieren wir gleich. Die Namen kannst du anpassen (nutzen wir gleich ebenfalls). Gib die Chat-ID enstprechend an. Speichere anschließend die Datei.
Als Nächstes würde ich den Raspberry Pi mit Home Assistant neu starten, damit die Änderungen in Kraft treten.
Automation erstellen – Automatische Notifications senden
Damit wir eine Nachricht senden können, brauchen wir eine Automation. Dazu gehen wir auf Settings → Automations & Scenes → Create Automation → Start with an empty Automation.
Wir brauchen als Erstes einen Trigger/Auslöser, der bewirkt, dass die Telegram Nachricht versendet wird. Hierfür kannst du ein beliebiges Gerät nehmen. Ich habe einen Kontaktsensor für den Briefkasten genommen, damit ich eine Nachricht über Telegram bekomme, sobald die Briefkastenklappe geöffnet wird. Du kannst natürlich für alle möglichen Szenarien ebenfalls Notifications einrichten.
Wechsle in den YAML Modus und ändere den action
Teil.
... action: - service: notify.NOTIFIER_NAME data: title: "*Send a message*" message: >- That's an example that _sends_ a *formatted* message with a custom inline keyboard.
Du kannst hier Titel, Nachricht, etc. entsprechend anpassen.
Es ist ebenfalls möglich andere Daten (Fotos, Videos, Dokumente oder gar Befehle) mitzusenden. Hier noch ein Beispiel, wie der Telegram Bot über Home Assistant Bilder versenden kann. Du kannst dadurch bspw. Bilder der ESP32 Überwachungskamera versenden.
... action: service: notify.NOTIFIER_NAME data: title: Send an images message: "That's an example that sends an image." data: photo: - url: http://192.168.1.28/camera.jpg username: admin password: secret
Hier noch eine weitere Automation, die ich eingerichtet habe. Ich möchte benachrichtigt werden, sobald ein Fenster (das einen Magnetkontakt hat), länger als 20 Minuten dauerhaft offen/gekippt ist. Somit vergesse ich nicht, das Fenster zu schließen (nützlich in der Küche).
Fazit und nächste Schritte des Telegram-Bots
Die Nutzung eines Home Assistant Telegram Bots für Notifications auf Smartphones ist eine einfache und schnelle Option, um sich Nachrichten oder Statusupdates zu senden. Außerdem haben wir die volle Kontrolle über das, was am Ende nach Außen gelangt.
Darüber hinaus können Telegram Bots noch viel mehr: So können wir bspw. Event Triggers erstellen und somit mit unserer Home Assistant Instanz kommunizieren. Beispielweise könnten wir per Befehl die Vorhänge öffnen oder Daten abfragen. Das machen wir, indem wir Commands erstellen und in Home Assistant einen Listener darauf einstellen. Falls gewünscht, können wir in zukünftigen Tutorials näher darauf eingehen.
3 Kommentare
Vielen Dank für das Tutorial!
Hat gleich funktioniert. Die Automation habe ich im visuellen Editor programmiert.
Grüße von Jürgen
Hallo Jürgen,
Vielen Dank für deine Tutorials und Blogs..Bin ein großer Fan 🙂
Ich hätte eine Frage…könnte man diese Funktion auch für TensorFlow anwenden…wenn ein Objekt erkannt wird dass man dann automatisch eine Nachricht via Telegram erhält?
Ich bin leider kein Programmierer und im Internet bin ich bis jetzt nicht fundig geworden.
Hättest du eine Idee oder kennst vielleicht ein geeigneter Tutorial diesbezüglich?
Vielen Dank im Voraus.
lg
Stanislav
Sorry vertippt…ich wollte schreiben Hallo Felix 🙂