Telegram Messenger – Bot einrichten

Telegram MessengerNach dem Verkauf von WhatsApp an Facebook im Jahr 2014 hat der Telegram Messenger an Beliebtheit gewonnen. So verspricht der  Messenger den Schutz der Privatsphäre durch verschlüsselte Kommunikation, allerdings wird die von der NSA entwickelte Hashfunktion SHA-1 verwendet. Durch eigene Forschung und Hilfe der Open-Source-Community wird versucht, Angriffe auf die App und das verwendete Protokoll abzuwehren. Der Telegram Messanger ist somit eine echte Alternative zu WhatsApp, SnapChat oder PushOver.

Immer wieder wurde ich in Kommentaren auf den Push-Dienst Telegram angesprochen, bisher habe ich für den Versand von CCU2-Meldungen ausschließlich PushOver genutzt.

Also habe ich mich mal mit Telegram beschäftigt und meine Erkenntnisse ein einer Schritt für Schritt Anleitung für euch festgehalten.

App laden – Account einrichten

Zunächst benötigst du einen Telegram Account, diesen kannst du dir auf dein SmartPhone in der Telegram App einrichten. Nachdem Laden und dem Aufrufen der App, musst du die Rufnummer deines SmartPhones angeben. Anschliessend wirst du noch nach deinem Vor- und Nachnamen gefragt. Zum Abschluss vergibst du noch einen Benutzernamen.

Telegram Messenger - App laden
Telegram Messenger – App laden

BotFather aufrufen & Bot anlegen

Zum Versenden von Nachrichten aus Anwendungen benötigt Telegram einen Bot. Du kannst mehrere Bots für verschiede Anwendungen anlegen und diese sogar Chat-Gruppen zuordnen.
Um einen Bot anzulegen, suchst du in der Telegram App unter „Chats“ nach „BotFather“. Mit einem Klick startest du den Dialog und klickst auf „/newbot“ um einen neuen Bot anzulegen.

Telegram - botfather aufrufen
Telegram – botfather aufrufen
BotFather starten
BotFather starten
Neuen Bot anlegen
Neuen Bot anlegen

Bot anlegen & aufrufen

Das Anlegen eines neuen Bots kann zur Geduldsfrage werden, da sehr viele Namen bereits vergeben sind. Ich benötigte bestimmt fünf Versuche, bis ich einen noch nicht verwendeten Bot-Namen gefunden hatte. Bei der Vergabe des Namens ist es wichtig, dass der Name auf „bot“ endet!
Bitte notiere dir den API-Key deines neuen Bots, diesen benötigst du später im HomeMatic-Skript. Den Bot kannst du über den Link in der Message direkt aufrufen.

Bot bennenen
Bot bennenen
API-Key auslesen
API-Key auslesen
Bot aufrufen
Bot aufrufen

Bot starten & Nachricht senden

Nachdem du den neu angelegten Bot gestartet hast, schickst du eine kurze Mitteilung an deinen Bot. Diese Nachricht dient der Ermittlung der Bot-ID.

Bot starten
Bot starten
Bot - Nachricht versenden
Bot – Nachricht versenden
Bot - Nachricht gesendet
Bot – Nachricht gesendet

Telegram – Bot-ID ermitteln

Damit du von deiner CCU2 Meldungen per Telegram verschicken kannst, benötigst du neben dem API-Key deines Bot auch die Bot-ID. Diese kannst du über deinen Browser ermitteln, nachdem du per Telgram-App an deinen Bot eine Nachricht geschickt hast.

Mit den ermittelten Daten, API-Key und Bot-ID, kannst du jetzt einen Aufruf aus einem HomeMatic-Programm erstellen.

var PushoverText = dom.GetObject("PushOver").Value();

dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot[Dein API-Key]/sendMessage -d text='"#PushoverText#"' -d chat_id=[Bot-ID]");

Ersetze in dem Skript bitte deinen API-Key sowie die Bot-ID und lösche dabei die []-Zeichen.
In diesem Beispiel habe ich eine HomeMatic-Systemvariable mit dem Namen „PushoverText“ angelegt in die ich die zu versendende Message schreibe. Anschliessend liest das oben aufgeführte Skript diese Variable aus und versendet den Inhalt per Telegram.

Apps & Programme

Neben Apps für alle gängigen mobilen Betriebssystemen, bietet der Telegram Messenger auch Programme für Windows, Mac OS und Linux an.

Unter https://telegram.org findest du dazu weitere Informationen.

Ich wünsche euch viel Spaß & Erfolg bei der Umsetzung!

Autor: Erhard Simdorn

Am 1. September 2014 habe ich mir meine erste CCU2 gekauft und war von den Möglichkeiten der Hausautomation sofort begeistert. Am 22. November 2014 folgte dann die zweite CCU2 für einen weiteren Standort und bis heute sind es schon acht CCU2 für die ich der "Auslöser" war.

20 Gedanken zu „Telegram Messenger – Bot einrichten“

  1. Hallo Erhard,
    wenn ich meine Bot.ID ermitteln will begomme ich folgende Meldung
    „{„ok“:true,“result“:[]}“

    Was mache ich falsch
    (Bot läuft super)

    1. Hallo Thomas,

      du hast alles soweit richtig gemacht.
      Allerdings wird die Bot.ID mit der Abfrage im Browser nur dann ausgegeben, nachdem du per Telgram-App an deinen Bot eine Nachricht geschickt hast!

      Gruß Erhard

  2. Hallo,

    muss ich auf der CCU noch etwas installieren (CUX Daemon), oder kann hier alles out-of-the box laufen? Wenn CUX Daemon > Standard oder weitere Add-Ons bzw. Konfigurationen?

    Danke u Gruß

    1. Hallo Sascha,

      CUxD ist zu empfehlen, aber nicht Pflicht! Viele meiner Scripte nutzen allerdings CUxD, da der Original SYSTEM_EXEC Befehl sehr instabil ist.
      Nach der Installation von CUxD muss du lediglich die CCU2 durchstarten, danach evtl. benötigte virtuelle Geräte über CUxD installieren. In meinen Anleitungen gehe ich darauf immer im Detail ein.

      Gruß Erhard

      1. Hallo Erhard,
        danke für die Tipps. Leider funktioniert das Skript bei mir nicht. Vermutlich wg. CuX, denn die Variable wird noch sauber ausgelesen. Was genau meinst Du mit virtuellen Geräten?
        D.h. ich könnte auch nur den Link über system exec senden? Wie lautet dann die Skriptzeile?
        Gruß
        Sascha

      2. Hallo Erhard,

        ich weiß, viele kegen Wert auf CUxD. Da ich es darüber aber aus irgendeinem Grund nicht zum laufen bekommen und bisher über den Original System_Exec Befehl keine Probleme hatte, würde ich es gern weiterhin darüber laufen lassen.
        Bisher hatte ich Notify my Android beim laufen. Da es ja darüber nicht mehr geht, versuche ich es mit Pushover. Leider ohne Erfolg. Kannst du mir dabei helfen?
        Script bei Notify my Android war:

        string stderr;
        string stdout;
        string url=“‚http://www.notifymyandroid.com/publicapi/notify?apikey=XXXXXXXXX&application=HomeMatic&event=Trockner&description=W%C3%A4sche%20ist%20fertig!&priority=2′“;
        system.Exec(„wget -q -O – „#url, &stdout, &stderr);

        Gruß Michele

        1. Hallo Michele,

          die von dir genutzte Lösung für Notify scheint zunächst richtig, allerdings scheinen die Anführungszeichen beim url-String etwas seltsam. Entweder verwendest du die einfachen Anführungszeichen oder die verwendest die doppelten Anführungszeichen. Beide zusammen können nicht funktionieren!
          Welche Probleme hast du bei der Installation vom CUxD? Eigentlich habe ich in meiner detaillierten Anleitung den Vorgang Schritt für Schritt beschrieben.

          Bitte melde dich einfach, falls du noch Fragen hast.

          Gruß Erhard

          1. Hallo Erhard,

            vielen Dank für die schnelle Rückmeldung. Beim kopieren hat sich da wahrscheinlich ein Formatfehler eingeschlichen. Richtig ist „‚http:………'“. Hat zumindest so immer funktioniert.
            Da ich ja nun auf Pushover umsteigen muss, weiß ich nicht wie das Script für den Original System_Exec Befehl aussehen soll. Für mich ist es eben mit dem Original System-Exec Befehl einfacher.
            CUxD hab ich installiert. Gerät auch angelegt usw. Nur beim ausführen von dem Script aus deiner Anleitung (token und user wurden angepasst) kommt eben keine Nachricht.

            Gruß Michele

          2. Guten Abend Michele,

            du kannst die Fehlermeldungen vom CUxD unter „Einstellungen/ Systemsteuerung/ CUx-Daemon“ anschauen. Auf der CUxD-Oberfläche den vierten Menüpunkt „Info“ anwählen und dann „Full Syslog“ anwählen. Jetzt das PushOver-Skript ausführen und die Fehlermeldung auf der CUxD-Oberfläche anschauen. PushOver und Telegram versenden keine Nachrichten von der CCU2, wenn diese Umlaute enthält. Vielleicht ist dies schon die Ursache bei Ihnen.

            Gruß Erhard

          3. Hallo Erhard,

            es sind keine Umlaute vorhanden. Ich habe sein Script übernommen und nur Token und User abgeändert. Bekomme folgende Fehlermeldung:
            local0.err ReGaHss: Error: IseESP::ScriptRuntimeError: var PushoverText = dom.GetObject(„PushOver“).Value(); dom.GetObject(„CUxD.CUX2801001:1.CMD_EXEC“).State(„LD_LIBRARY_PATH=/usr/local/addons/cuxd /usr/local/addons/cuxd/curl -s -k -d token=…..
            weiter ist die Meldung leider nicht zu lesen.

          4. Hallo Michele,

            in deinen Befehl hat sich etwas eingeschlichen, weiß nicht woher.

            Richtig muss es folgendermaßen heißen:

            dom.GetObject("CUxD.CUX2801001:1.CMD_EXEC").State("extra/curl -s -k https://api.telegram.org/bot[Dein API-Key]/sendMessage -d text='"#PushoverText#"' -d chat_id=[Bot-ID]");

            Wir bekommen den CUxD gemeinsam schon zum Laufen, nur nicht aufgeben. Wenn du das erste Skript mit CUxD erfolgreich erledigt hast, folgen bestimmt noch viele weitere Anwendungen mit dem CUxD.

            Gruß Erhard

          5. Hallo Erhard,

            ich habe es jetzt mit dem Original System_Exec Befehl lösen können. Funktioniert einwandfrei. Was ich noch nicht hinbekommen habe, ist das mit der Prio.
            Das Script was du in deiner Antwort geschrieben hast, ist doch für die Pushnachricht als Telegramm. Das wollte ich eigentlich nicht. Wollte es mit der Pushover App haben. Das Script dafür von dir habe ich auch genommen. Nur dann eben der ScriptRuntimeError.
            Interesse hätte ich trotzdem noch es mit CUxD zum laufen zu bekommen. Schon alleine um rauszufinden was falsch ist.

            Gruß Michele

          6. Hallo Michele,

            hast du nach der CUxD-Installation deine CCU2 einmal durchgestartet und anschliessend nach der Anlage der CUxD-Geräte diese im Postfach der CCU2 fertig konfiguriert? Wenn du alles richtig gemacht hast, müsstest du in der CCU2 unter „Geräte“ die CUxD-Geräte sehen. Die Seriennummer aller CUxD-Geräte beginnt mit CUX……

            Gruß Erhard

  3. Hallo Erhard,
    klar, das virtuelle Gerät hatte gefehlt, ergo die Referenz. War einfach anzulegen, dank perfekter Doku.
    Danke für alle Tipps!
    Gruß
    Sascha

  4. Hallo Erhard,

    sorry muss mich nochmal melden.
    Seit ein paar Tagen funktioniert der Versand aus der Homematic nicht mehr.
    Es gab weder ein Update der Homematic noch der CuXD.
    Wenn ich den Test über den Browser starte funktioniert der Versand, d.h. der Key und die API-ID sind OK. Irgend eine Idee wo ich suchen kann?
    FYI: Das Skript läuft bis zum Ende durch.

    Gruß
    Sascha

    1. Hallo Sascha,

      im CUxD-Log kannst du die entsprechenden Hinweise finden. Zum CUxD-Log gelangst du über die Menüpunkte [Einstellungen]/ [Systemsteuerung]/ [Zusatzsoftware]/ [CUx-Daemon Einstellen]/ [Info]/ [Full Syslog]. Nachdem du den CUxD-Log aufgerufen hast, versuche eine Meldung zu verschicken und suche nach dem Fehlereintrag.

      Gruß Erhard

  5. Hallo,
    zuerst einmal vielen Dank für deine Anleitung. Diese hat sehr gut funktioniert. Da ich die Nachrichten zur Anwesenheitskontrolle via IPhone verwende (aufwecken für Ping), möchte ich, dass der Bot mehrere User (Telefone) erreicht. Dazu habe ich 2 Fragen, und hoffe dass mir jemand hier weiterhelfen kann:

    1.) Leider erscheinen die Homematic Nachrichten nur auf einem Gerät (auf dem die Einrichtung erfolgte). Ich finde den Bot auf anderen Geräten, starte mit /start, aber leider kommen auf dem 2. Gerät keine Nachrichten an.
    2.) Ist es möglich, dass man den Bot „sicher“ macht. Sprich, dass User explizit freigeschaltet werden. Ich möchte sichergehen, dass nicht jeder Telegram User lesen kann, wenn bei mir zuhause die Haustüre geöffnet wird.

    Viele Grüße
    Henry

    1. Hallo Henry,

      du kannst eine Telegram Gruppe einrichten und neben allen Empfängern auch den Bot hinzufügen, dadurch erhalten alle Gruppenmitglieder die vom Bot gesendeten Nachrichten. Der Bot reagiert NICHT auf Einladungen, somit kann sich kein anderer Telegram Teilnehmer in den Bot einklinken.

      Gruß Erhard

  6. Hallo,

    gibt es die Möglichkeit diese Nachricht auch an zwei Teilnehmer zu schicken? Meine Frau ist dem Bot „beigetreten“, bekommt aber keine Nachrichten wie ich sie bisher bekomme.

    Was müsste ich ändern, damit sie die gleichen Nachrichten erhält?

    1. Hallo digitalnaive,

      ich habe extra zwei Bots angelegt, einen für mich und den anderen für meine Frau. Soll eine Meldung an beide Bots geschickt werden, dann sind das zwei CUxD-Aufrufe. Beim Programm „Fenster offen beim Verschliessen der KeyMatic von aussen“ wird nur der per Bot benachritigt, der auch abgeschlossen hat. Zwei Bots machen somit auf Dauer wirklich Sinn.

      Gruß Erhard

Kommentare sind geschlossen.