Mit der OpenHAB Konfiguration meiner Smarthomeanlage hatte ich die Möglichkeit, Informationen über Telegram aufs Smartphone senden zu lassen. Dies möchte ich nun auch mit Home Assistant ermöglichen.
Hinweis: Dies habe ich noch getan, bevor ich auf die Version 2025.1 geupgraded habe. Es könnte sein, dass in der neuen Version die Konfiguration anders läuft. Allerdings funktionierte dieses Setup auch nach dem Upgrade auf die 2025er Version ohne Änderungen.
Telegram Integration
Die passende Integration liefert Home Assistant direkt mit, ich muss nur danach suchen.
Bei der Installation erscheint dann leider nur die Meldung, dass diese Integration händisch in der configuration.yml
eingetragen werden muss. Das ist lästig und fehleranfällig, aber machbar.
Kanal erzeugen
Zunächst benötige ich für die Nachrichten einen Telegram Kanal. Dazu schicke ich das Kommando /newbot an @BotFather. Dieser fragt mich dann zunächst nach dem Namen des neuen Bot. Ich entscheide mich für raspithek_bot und auch den geforderten Usernamen setze ich auf raspithek_bot (der Username muss mit bot enden). Danach richtet der BotFather den Kanal ein und schickt mir das API Accesstoken, mit dem ich gleich Home Assistant Zugriff auf den Bot gewähren kann.
ChatId ermitteln
Damit Home Assistant Nachrichten in den Kanal schreiben kann, brauche ich neben dem API Token auch noch die ChatId. Dazu schreibe ich eine Testnachricht in den Kanal und hole mir mit
curl -X GET https://api.telegram.org/bot7504074150:AAGIhXqESerqtRF8m4SH4YhNdPnDIb2mSG0/getUpdates
den Datensatz der Testnachricht. Diese wird im JSON Format geliefert und enthält unter "id"
die benötigte ChatId, diese ist hier 19111618
. Übrigens: den raspithek_bot lege ich nur für diesen Blogpost an. Im Livesystem verwende ich einen anderen. 😉
{"ok":true,"result":[{"update_id":643869563,
"message":{"message_id":7,"from":{"id":19111618,"is_bot":false,"first_name":"Olli","last_name":"Graf","username":"Ollital","language_code":"de"},"chat":{"id":19111618,"first_name":"Olli","last_name":"Graf","username":"Ollital","type":"private"},"date":1735287713,"text":"Test"}}]}
Konfiguration von Home Assistant
Aus der beruflichen Erfahrung weiß ich, das die Bearbeitung von .yaml Dateien sehr kompliziert und fehlerträchtig sein kann. Daher lege ich zunächst ein paar Sicherungskopien an.
cd /opt/homeassistant
sudo cp configuration.yaml configuration.yaml.bak
sudo cp automations.yaml automations.yaml.bak
Falls ich einen Syntaxfehler mache, kann ich notfalls auf die Originaldateien zurückgreifen. Home Assistant würde im Fehlerfall in einen abgesicherten Modus übergehen. Außerdem such ich mir schon mal den URL zum YAML Lint Validator, mit dessen Hilfe ich schon häufiger Syntaxfehler in .yaml Dateien gefunden habe.
secrets.yaml
Da ich API-Token nicht in der configuration.yaml eintragen möchte, lege ich es in der secrets.yaml ab. Dazu erstelle ich eine telegram: Sektion und trage dort token: und chatid: ein.
# Use this file to store secrets like usernames and passwords.
# Learn more at https://www.home-assistant.io/docs/configuration/secrets/
some_password: welcome
token: "7504074150:AAGIhXqESerqtRF8m4SH4YhNdPnDIb2mSG0"
chatid: "19111618"
Diese Werte kann die configuration.yaml jetzt hier auslesen.
configuration.yaml
Im nächsten Schritt konfiguriere ich die Telegram Integration manuell in der configuration.yaml
Zunächst konfiguriere ich den Bot und setze diesen Eintrag ans Ende der Datei:
#Konfiguration der Telegram-Integration
telegram_bot:
- platform: polling
api_key: !secret telegram_token
allowed_chat_ids:
- !secret telegram_chatid
Die !secret
Direktive weist Home Assistant an, den benötigten Wert aus der secrets.yaml auszulesen. Damit kennt die Telegram Integration das API-Access-Token und die ChatId für meinen Bot.
Was ich jetzt noch benötige ist ein Notifier, der als Aktion die Meldungen verschickt. Unterhalb des obigen Blocks füge ich noch diesen weiteren Konfigurationsblock ein:
# Konfiguration des Notifier für Telegram
notify:
- platform: telegram
name: "Raspithek"
chat_id: !secret telegram_chatid
Der Name ist frei wählbar, er muss dann aber so in der automations.yaml verwendet werden.
Ich starte den Home Assistant Container neu, um das Ergebnis meiner Arbeit zu sehen
docker restart homeassistant
Tatsächlich finde ich den Telegram Eintrag auf der Einstellungsseite „Integrationen“.
Nachrichten senden
Das große Finale besteht darin, eine Benachrichtigung zu versenden. Dazu suche ich mir den Bewegungsmelder in der Küche aus und füge in der automations.yaml eine Aktion hinzu
- id: '1724579164573'
alias: Licht Küche an
description: ''
triggers:
- type: motion
device_id: 00a0d230b6229c2d3942cd35669802e7
entity_id: 8a355cf92fdfed36fccaa99b434f5164
domain: binary_sensor
for:
hours: 0
minutes: 0
seconds: 0
trigger: device
conditions: []
actions:
- type: turn_on
device_id: 635494054f0efd93725ff2dae73f42a0
entity_id: c93ac5f7bfbdf2b0c84fda9816fb9ce9
domain: light
brightness_pct: 100
- type: turn_on
device_id: 90f73bc4e66b1c560759c0ec88a83cfe
entity_id: 822ccf75b336adb080067997176d156b
domain: switch
- action: notify.Raspithek
data:
message: "Bewegung erkannt: Küche"
target: !secret telegram_chatid
Neu habe ich jetzt diesen Block ans Ende der Automatisierung für die Küche dazu gefügt:
- action: notify.Raspithek
data:
message: "Bewegung erkannt: Küche"
target: !secret telegram_chatid
Die action ist der Notifier mit dem oben konfigurierten Namen. Der Datenblock enthält den zu sendenden Text und die ChatId aus der secrets.yaml.
Um die Änderungen zu laden, starte ich den Container nochmal neu: docker restart homeassistant
. Wenn ich mir danach in der Weboberfläche die Automatisierung für die Küche ansehe, finde ich dort am Ende der Aktionenliste den Notifier.
Um ihn zu testen, könnte ich jetzt in die Küche gehen. Da ich aber faul bin, führe ich die Aktion über das Drei-Punkt-Menü mit „Aktion ausführen“ aus. Tatsächlich melden dann mein Smartphone und der Desktopclient eine neue Nachricht im Bot:
Damit habe ich endlich wieder meine Telegramnachrichten von der Smarthome Anlage zurück. Damit kann Home Assistant jetzt alles, was OpenHAB machte. In der nächsten Zeit werde ich mein Smarthome endlich erweitern können.