NodeRED: Einrichten eines Telegram-Bots

Wenn dein Smart Home Dich über verschiedene Ereignisse benachrichtigen soll, ist es eine Möglichkeit, die Nachricht an dein Smartphone per Messenger zu senden. Für NodeRED gibt es Nodes für verschiedene Messenger. Ich zeige Dir in diesem Artikel, wie Du dafür Telegram einrichtest.

Der Telegram-Bot

Telegram gibt es für viele Plattformen und hat eine schöne Bot-Schnittstelle. Mit dieser lassen sich Nachrichten manipulieren, Buttons und auch interaktive Dialoge abbilden. Der Telegram-Bot ist ein spezielles Konto, welches keine eigene Telefonnummer zur Einrichtung benötigt. Er bildet die Schnittstelle zwischen NodeRED und den Telegram-Servern.

Erzeugen des Bot-Kontos

Als Voraussetzung für das Erzeugen eines Bot-Kontos benötigst du ein bereits lauffähiges Telegram-Konto.

  1. Suche und verbinde Dich in deiner Telegram-App mit dem Bot “BotFather“. Achte unbedingt auf die korrekte Schreibweise, da es einige Konten mit ähnlichem Namen gibt.


  2. Erzeuge einen Bot, indem Du dem Bot “BotFather” die Nachricht “/newbot” sendest.
    Im Dialog vergibst Du dann noch eine Namen, wie er dir später angezeigt wird, und einen Nutzernamen. Letzterer muss auf “bot” enden.
    Das erhaltene API-Token (im Bild unten verpixelt und grün umrahmt) benötigst du im nächsten Schritt für die Konfiguration des Telegram-Nodes. Bewahre dieses Token sicher auf, bspw. in KeePass. Damit kann dein Bot kontrolliert und missbraucht werden.


  3. Jetzt wird es ein wenig knifflig. Damit der Bot weiß, wohin er senden soll, verwendet er eine ChatId. Diese findet man heraus, indem man die Kommunikation des Bots verfolgt:
    1. Starte die Kommunikation mit dem Bot, indem Du auf den Link aus obiger Vollzugsmeldung klickst.
    2. Schreibe dem Bot irgendetwas, bspw “Hallo
    3. Rufe im Browser die Seite https://api.telegram.org/bot<HTTP API-Token>/getUpdates auf. Die Zeichenkette “<HTTP API-Token>” ersetzt Du mit dem API-Token, welchen du im vorherigen Schritt erhalten hast.
    4. Du erhältst im Browser eine Zeichenkette (JSON-String), welche neben der eben geschickten Nachricht auch die Meta-Daten der Kommunikation enthält. Suche dort die Zeichenkette "id":, dahinter folgt die gesuchte ChatId, eine Zahl.
      anonymisierter Auszug:

      {"ok":true,"result":[{"update_id":5_________5,
      "message":{"message_id":2,"from":{"id":1_________0,"is_bot":false,"first_name":"Andr\u00e9","username":"n/a","language_code":"de"},"chat":{"id":1_________0,"first_name":"Andr\u00e9","username":"n/a","type":"private"},"date":1_________7,"text":"Hi"}}]}

 

Installation und Einrichtung des Telegram-Nodes

    1. Installiere in NodeRED den Telegram-Node “node-red-contrib-telegrambot” über “Manage palette”.


    2. Konfiguriere dann den Bot. Platziere dazu den Node “Telegram sender” und füge in den Einstellungen einen neuen Bot hinzu. Hier kommt das API-Token, welches Du oben erhalten hast, im Feld “Token” zum Einsatz. Nach Vergabe eines Namens und dem Speichern ist der Telegram-Node einsatzbereit.

     

    Test des Bots

    Zum Testen des eben erstellen Bots benötigst Du die oben mühsam ermittelte ChatId. Über einen Function-Node wird die Nachricht noch mit Meta-Daten angereichert und per Inject-Node verschickt.

    1. Lege einen Inject-Node und einen Function-Node an und verbinde sie.
    2. Fülle den Function-Node mit folgender Zeile, in der Du die ChatId einträgst (ohne spitze Klammern):
      return { payload: { chatId: <die ermittelte ChatId>, type: 'message', content: 'mein text' } };


    3. Nach dem Deploy kannst Du mit dem Betätigen des Triggers (Inject-Node) eine Nachricht absetzen.

     

    Damit ist die Einrichtung des Telegram-Nodes komplett. Im Beitrag “zyklische Fenster-Offen-Meldung”  zeige ich Dir, wie du damit eine Fenster-Offen-Nachricht versenden kannst.

André

War dieser Artikel nützlich für Dich? Dann hinterlasse gern eine Bewertung. So erkenne ich, welche Informationen hilfreich sind und investiere weiter in diese Richtung. Vielleicht habe ich auch bereits eine neuere Version und muss sie nur in den Artikel einarbeiten. Hast Du Meinungen, Hinweise oder Fragen? Dann hinterlasse einen Kommentar, kontaktiere mich per E-Mail an oder schreibe in die Telegram-Diskussionsgruppe https://t.me/joinchat/4v43ZhqxG2sxOTMy.

Alle Beiträge ansehen von André →

Sag mir deine Meinung! (Kommentar-Regeln)

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