Home Assistant: Benachrichtigungen über Telegram

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.

Suche nach der Telegram Integration
Olli Graf - raspithek.de
add-integration-telegramCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Suche nach der Telegram Integration

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.

Erzeugen des Bot mit dem BotFather
Olli Graf - raspithek.de
botfatherCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Erzeugen des Bot mit dem BotFather

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. 😉

Olli Graf - raspithek.de
find-ChatIdCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
{"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“.

Kachel des Telegram Bot auf der Integrationenseite
Olli Graf - raspithek.de
integration-badgeCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Kachel des Telegram Bot auf der Integrationenseite

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.

Olli Graf - raspithek.de
automation-listCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=

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:

Auszug aus dem Chat-Protokoll
Olli Graf - raspithek.de
raspithek_botCreative Commons Attribution-NonCommercial-ShareAlike 4.0 International License . loading=
Auszug aus dem Chat-Protokoll

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.

Schreibe einen Kommentar

Creative Commons License
Except where otherwise noted, the content on this site is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
Olli Graf - raspithek.de
WordPress Cookie Hinweis von Real Cookie Banner