Instant-Messenger für ESPs und Arduinos - Teil 1 - AZ-Delivery

Hallo zusammen,

In vorhergehenden Blogbeiträgen haben wir bereits das Versenden von MQTT-Paketen und Gmails mit dem ESP8266 gezeigt. Das Senden und Empfangen von MQTT-Nachrichten ist meist nur für Smart-Home-User interessant und Gmail eignet sich nur begrenzt für Push-Notification weswegen ich in den folgenden zwei Beiträgen das Senden von Telegram-Nachrichten mit dem ESP zeigen will.

Heute leisten wir die Vorarbeit. Wir registrieren Telegram, erstellen einen Bot, installieren CURL für Windows und arbeiten mit dem Bot über Kommandozeile.

Im nächsten Beitrag zeige ich wie das seitens Mikrocontroller umgesetzt werden kann.

Wir brauchen:

  • ESP8266-Board
  • Smartphone (mit Mobilfunknummer zur Registrierung)

 

Was ist Telegram? Telegram ist ein Instant Messenger ähnlich wie WhatzApp, jedoch mit einigen signifikanten Unterschieden. Im Gegensatz zu WhatzApp ist Telegram quelloffen und es steht eine (dokumentierte) API zur Verfügung, außerdem werden sogenannte "Bots" unterstützt. Was sind Bots?  Ein (Ro)Bot ist ein automatischer Dienst, der Nachrichten senden und empfangen kann ohne der Notwendigkeit eines physikalischen Geräts oder einem zutun des Benutzers.

Telegram-Konto registrieren:

Zur Erstellung eines Telegram-Kontos ist eine Telefonnummer erforderlich. Sie können die Registrierung mit einem PC oder direkt einem Mobiltelefon vornehmen. Nach dem Download der App oder der Anwendung erfolgt eine Überprüfung der Nummer durch Eingabe eines Sicherheitscodes (kommt per SMS)

Falls Sie sich für das Desktop Programm entschieden haben öffnet sich nach erfolgter Verifizierung folgendes Fenster:

Hier sind im Adressbuch noch keine Kontakte hinterlegt weshalb nur das leere Fenster angezeigt wird. 

Bot erstellen:

Die Erstellung des Bots läuft interaktiv mithilfe des "Botfathers" ab. Um eine Verbindung mit Botfather herzustellen klicken Sie in die Such-Leiste in Telegram und geben "Botfather" ein:

 Über die Schaltfläche "Starten" beginnen Sie eine Unterhaltung mit Botfather:

Im Anschluss sehen wir bereits die Kommandos, mit denen wir unseren Bot erstellten/konfigurieren/verwalten können. Im Prinzip kann der Chat wie eine Kommandozeile genutzt werden. "/newbot" weist den Botfather an, einen neuen Bot zu erstellen. Als nächstes werden wir nach dem Namen unseres Bots gefragt:

Danach für den Benutzernamen, zu Testzwecken habe ich jeweils "azdemobot" gewählt.

Wurde der Bot erstellt erhalten wir einen Token für die API. Kurz zusammengefasst haben wir jetzt den Namen des Bots, den Benutzernamen und den Token.

Der Token spielt eine zentrale Rolle und sollte nicht mit anderen Benutzern geteilt werden da der Inhaber den Bot vollständig kontrollieren kann.

Suchen wir nach unserem Bot finden wir den eben erstellten Dienst und können durch klicken auf die Schaltfläche "STARTEN" eine Unterhaltung beginnen:

In unserem Beispiel dient der Bot als Web-Schnittstelle. Um zu überprüfen ob alles geklappt hat können wir das Kommandozeilentool "curl" benutzen. Linux-Benutzern ist das Tool eingehend bekannt und können die Installation überspringen.

Um curl zu installieren ist es notwendig den Pfad so in der Konsole zu hinterlegen, dass Windows bei Eingabe des Befehls curl diesen automatisch an curl.exe weiterleitet.

Curl gibt es hier zum Download

Je nach verwendeten Betriebssystem brauchen Sie die 64- oder die 32-Bit Variante.

Nach dem download und entpacken verschieben wir den Ordner nach: "C:\Users\Benutzername\curl"

Diesen Pfad müssen wir nun den Systemumgebungsvariablen hinzufügen, diese finden Sie im Startmenü:

Wählen Sie dann Umgebungsvariablen...

 Markieren Sie die Zeile "Path" und klicken Sie im Anschluss auf "Bearbeiten...", ein neues Fenster öffnet sich:

Über die Schaltfläche "Neu" kann der Pfad DER EXE DATEI im bin-Verzeichnis! von curl hinzugefügt werden:

Damit haben wir curl installiert und können es über die Kommandozeile nutzen:

 Jetzt können wir testen, ob der von uns konfigurierte Bot funktioniert.

Um mit der API arbeiten zu können benötigen wir folgende URL:

Hier müssen wir noch unsere Daten bzw. den Token, sowie die Methode (d.h. Anweisung) eintragen. In unserem Fall wollen wir prüfen ob der Bot neue Nachrichten für uns hat. Wir fragen also "getUpdates" als Methode ab:

Und erhalten folgende Ausgabe:

 

Der markierte Bereich gibt an, das keine neuen Informationen zur Verfügung stehen.

Schicken wir nun eine Telegram-Nachricht an den Bot:

Und starten die Abfrage erneut:

Wie wir sehen hat sich der "Content" geändert. Curl bietet ausserdem die Möglichkeit dies direkt in eine Datei zu speichern oder in unterschiedlichen Varianten darzustellen. Würden wir den Inhalt in eine Datei speichern sähe der Inhalt so aus:

 Wir sehen also die von uns versendete Nachricht, sowie zusätzliche Informationen wie z.B. Chat- und Update-ID.

Umgekehrt funktioniert es genau so.

Geben wir folgendes Kommando ein:

curl -k https://api.telegram.org/bot694546623:AAGIPm0_89TvPFDAiI0LVFS0Egg62845nNo/sendMessage -d chat_id=724358638 -d text="Das war der erste Teil"

 Erscheint im Telegram-Fenster die von uns über Kommandozeile gesendete Nachricht:

Selbstverständlich müssen Sie hier Ihren Token, sowie die bei der Abfrage angezeigte Chat-ID einsetzten.

Damit haben wir den Grundstein gelegt über die API mithilfe von CURL kommunizieren zu können, im zweiten Teil am Montag,  zeige ich wie dies komfortabel mit einen ESP umgesetzt werden kann.

Bis morgen :) 

Esp-32Esp-8266Für arduinoProjekte für fortgeschrittene

5 comments

Frank

Frank

War ziemlich gut – nur fehlt die Fortsetzung! Bitte Teil zwei veröffentlichen!

rawa

rawa

wo bleibt der 2.Teil !!!

Steffen

Steffen

Würde mich auch über einen 2. Teil freuen!
Viele Grüße

tbretz

tbretz

Wo gibt es den 2. Teil ?

Tonx

Tonx

Hey richtig cool! kanns kaum erwarten heute den zweiten Teil zu lesen!

Leave a comment

All comments are moderated before being published

Recommended blog posts

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery