ESP8266: Telegram-Bot

setup

Einen Mikrocontroller per Messenger Befehle senden oder Daten erhalten? Ja das geht, und es ist auch genau so cool wie es sich anhört! In dem Tutorial baue ich eine WLAN-Türklingel, die euch Nachrichten aufs Smartphone schickt, sobald jemand klingelt.

Außerdem zeige ich weitere Möglichkeiten, die digitalen Ausgänge zu nutzen, Stichwort INPUT_PULLUP.

Also, los geht’s auf meiner Website!

Werbeanzeigen

28 Gedanken zu “ESP8266: Telegram-Bot

  1. Hast du schon probiert, im Board-Manager die Version 2.3.0 von esp8266 zu installieren? Bei neueren Versionen gibt es anscheinend ein Problem, das die Kommunikation zwischen Telegram und dem ESP blockiert.

    Gefällt mir

  2. hallo Spezialisten
    mit raspb –> curl -X POST „https://api.telegram.org/bot740231893:AAL3az2hq8k/sendMessage?chat_id=6314xx12&text=Test1“
    mit Firefox —-> https://api.telegram.org/bot740231893:A2hq8k/sendMessage?chat_id=6314xx12&text=Test2
    ist alles ok
    Keines von den Beispielen ESP8266 01 sende info über Telegram bekomme ich zum laufen
    Was muss mindesten sein damit mein Handy bing macht und Test1 steht bei Telegram
    Die anmeldung bei der Fritzbox ist ok.
    Besten Dank Hilde

    Gefällt mir

    1. Hast du schon probiert, im Board-Manager die Version 2.3.0 von esp8266 zu installieren? Bei neueren Versionen gibt es anscheinend ein Problem, das die Kommunikation zwischen Telegram und dem ESP blockiert.

      Gefällt mir

  3. Danke für die Antwort! Leider auch dort Vernindung mit dem WLAN ok, dann Updatefehler. Habe meine Telegram-Bot-Daten einkopiert. Der Bot-Username mit @ oder ohne @ ?

    Gefällt mir

    1. Das @ kannst du weglassen, es ist aber auch egal, wie du den Bot nennst (der Name kann von dem in Telegram vergebenen abweichen).

      Das Problem ist interessant, da werd‘ ich mich am Wochenende mal damit beschäftigen, vielleicht finde ich ja den Grund.

      Kannst du mir in der Zwischenzeit mal schreiben, welchen ESP du genau verwendest, bzw. welche Hardware gesamt?

      Gefällt mir

    2. So, hab nun das Problem gefunden:
      Installiere einfach im Board-Manager die Version 2.3.0 (von esp8266), oder probiere dich durch ein paar andere Versionen durch. Auf jeden Fall gibt’s hier in der neuesten Version ein Problem, dem ich aber noch nicht auf den Grund gekommen bin.

      Gefällt mir

  4. Hi!
    Tolle Idee und Arbeit. Würde ich auch gern nutzen für einen ähnlichen Zweck. Bei der Verbindung mit dem Origingasketch und meinen Daten zum Erhalt der adminID bekomme ich weder in Telegram eine Antwort (2 Häkchen werden angezeigt) noch im Seriellen Monitor die ID. Nach Verbindung und den Bindestrichen erscheint nach einem Delay

    GET Update Messages
    failed to Update

    Dieses wird dann dauernd wiederholt. Was habe ich nicht verstanden oder falsch gemacht.
    Vielen Dank

    Gefällt mir

    1. Klingt im ersten Moment nach stockender oder nicht vorhandener Internetverbindung.
      Teste das Script doch mal über eine andere Internetverbindung (vielleicht mal einen Hotspot am Handy starten).

      Gefällt mir

      1. Hi!
        ich finde die Arbeit auch echt cool!

        Leider habe ich das gleiche Problem. Über die cmd habe ich keine Probleme mit dem Telegram bot zu kommunizieren, allerdings schmeißt mir der Serielle Monitor ebenfalls
        GET Update Messages
        failed to Update
        raus, ich komme nicht drauf woran es liegen könnte.

        Gefällt mir

        1. Guten Morgen,

          wie ich deinem Vorredner schon geantwortet habe kann ich ohne Probieren nicht genau sagen an was es liegen könnte, da werd‘ ich mich am Wochenende darüber wagen.

          Kannst auch du mir in der Zwischenzeit sagen, welche Hardware du nutzt?

          Danke!

          Gefällt mir

        2. So, hab nun das Problem gefunden:
          Installiere einfach im Board-Manager die Version 2.3.0 (von esp8266), oder probiere dich durch ein paar andere Versionen durch. Auf jeden Fall gibt’s hier in der neuesten Version ein Problem, dem ich aber noch nicht auf den Grund gekommen bin.

          Gefällt mir

  5. Hallo, sehr gute Beschreibung, danke dafür. Ich suche eine Möglichkeit, um beim Öffnen eines Reedkontaktes einmalig eine Nachricht abzusetzen, bis er wieder schließt. Zur Zeit werde ich dauerhaft mit Nachrichten attackiert.

    Gefällt mir

  6. Hey Andre, ich bin zur Zeit leider nicht in der Nähe meiner Hardware, um das zu testen.
    Lass dir mal im seriellen Monitor ausgeben, was zurückkommt, wenn du /get schickst.

    Also einfach: Serial.print(bot.message[i][5]);

    Ich kann mir gut vorstellen, dass in der Zwischenzeit ein Update der Lib rausgekommen ist, oder sich generell die API geändert hat, und dass es nun heißen muss:

    if (bot.message[i][5] == „/get“)) // Achte auf den Schrägstrich

    Hast du mein Script so getestet wie es auf GitHub ist? Wenn ja, dann erstmal Danke für die Info, ich schau mir das an!

    LG

    Gefällt mir

  7. Hi,
    deine Anleitung ist echt Klasse. danke für’s teilen im Netz !
    Trotzdem habe ich ein kleines Problem.

    Gebe ich jedoch info oder get ein, bekomme ich Command unknown.
    Warum, weiß ich nicht.

    Hast du eine Idde. ID passt.

    Kurioserweise bekomme ich eine Antwort, wenn ich:

    if (bot.message[i][5] = „get“))

    Das ist total unlogisch. Warum funktioniert das wohl nicht in der Ur-Version ?

    Viele Grüße und besten Dank

    André

    Gefällt mir

  8. Gute Idee, Kompliment, gute Anleitung. Ich komme nur leider nicht weiter.. Ich möchte durch den Bot eine Message an ein Telegram Channel senden. Wenn ich also in folgender Zeile :

    bot.sendMessage(adminID, „Türklingel“, „“);

    die adminID durch die ID des Channels ersetze kommt nichts an.

    Leider hilft mir die Telegramm-Api da auch nicht so richtig weiter. Den Bot habe ich schon dem Channel hinzugefügt so das er da Nachrichten posten kann. Die Meldung „Access-denied“ kommt auch…

    Hast du da nen heißen Tipp für mich?

    Gefällt mir

    1. Dass die ‚Access denied‘ msg kommt ist schon mal gut. Lass dir einfach mal die ID des Channels im seriellen Monitor ausgeben.

      Wirf einfach eine kurze Serial.print(…) unter die Zeile, in der die ‚Access denied‘ Medlung geschrieben wird:

      Serial.print(bot.message[i][4]);

      Ich hab’s jetzt nicht getestet, aber es sollte alles typenkompatibel sein.

      LG

      Gefällt mir

      1. Danke für den Tipp so habe ich einen neuen Gedankenanstoss bekommen… Ich musste in der Zeile:

        bot.sendMessage(„-1001151702000“, „Alarm“, „“);

        Der Channel ID ein – voranstellen. Nun funktioniert es!

        Gefällt 1 Person

  9. bin totaler Anfänger. Lerne mit deinem Code. Finde ihn super! DANKE für Deine Arbeit!
    Als erstes wollte ich Telegram mal ein paar Infos zuschicken lassen.
    Dabei bin ich über die IP Adresse gestoßen:
    Dies ist in deinem Code m.E. nicht ganz richtig: String(WiFi.localIP())
    da kommt eine nicht korrekte Nummer raus.

    Der richtige Wert kommt mit WiFi.localIP().toString()

    (Statt auf Monitor hab ich es als Telegram Nachricht verschickt.

    Gefällt mir

      1. Aquarium Wetter simulator – erste idee war alles aufm Lcd anzuzeigen an Infos. Aber ausgabe als Telegramm bot pluss steuerbar über Telegramm weniger knöpfe zum einstellen … und mehr platz für sensoren fürs wasser

        Gefällt mir

Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google Foto

Du kommentierst mit Deinem Google-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s