Manual

do

Maker

.

com

Telegram bot com ESP32

Telegram bot com ESP32

às vezes os artigos são baseados em necessidades que tenho em meus projetos. Dessa vez, achei que seria uma boa ideia ter um bot para mandar mensagens de status para o celular em determinadas situações. Por exemplo, se houver uma tentativa de acesso a uma casa (acionando um sensor qualquer de passagem), ou para enviar aviso de consumo (água, luz) próximo ao limite mensal. Ou ainda, para avisar sobre a paralização de algum equipamento, a tempo de prestar suporte antes que o cliente mesmo saiba que haverá a necessidade de manutenção. Para isso, vamos usar o telegram bot com ESP32, mas poderia ser comESP8266, Arduino etc.

Baixe o Telegram para smartphone ou computador pessoal

Podemos receber notificações no celular ou no notebook, à sua escolha.

Para Android, o link da Play Store é esse. Para desktop, o Telegram está disponível nesse outro link.

Configurar Telegram bot

Após iniciar o programa, procure na caixa de pesquisas por @BotFather. Clique sobre ele e então clique no botão Reiniciar.

Para criar um novo bot, digite /newbot. Para selecionar um nome para o bot quando solicitado, apenas digite o nome. Se já houver um e quiser renomeá-lo, clique sobre ele quando ele aparecer na lista. Para trocar o nome, basta digitar /setname e então clicar no bot que aparecer.

Ao criar um novo bot, o token deve aparecer automaticamente após o processo de criação, com a devida orientação. Para um bot já criado, será necessário requisitar o token novamente. Para isso, digite /token.

Telegram com ESP32

A biblioteca pode ser baixada diretamente dos repositórios. Aqui prefiro utilizar a IDE Atom com PlatformIO porque tem auto-completação de código, split de tela (me permitindo colocar código lado a lado, sendo do mesmo arquivo ou de diferentes arquivos), me permite ver códigos dos exemplos sem ter que abrir um arquivo de exemplo etc.

Após criar um novo projeto para ESP32 (seja no Atom ou na IDE do Arduino), instale a biblioteca UniversalTelegramBot. Aproveite e instale a dependência  ArduinoJson versão 5.13.2.

Baseado no código de exemplo EchoBot, faça algo como:

#include <Arduino.h>
#include <WiFi.h>
#include <ArduinoJson.h>
#include <WiFiClientSecure.h>
#include <UniversalTelegramBot.h>

// Initialize Wifi connection to the router
char ssid[] = "suaRedeWiFi";     // your network SSID (name)
char password[] = "suaSenha"; // your network key

// Initialize Telegram BOT
#define BOTtoken "201198902:AAGTInjjiRk5C8J7-WlgnyCa_RiEgPj0upM"  // your Bot Token (Get from Botfather)

WiFiClientSecure client;
UniversalTelegramBot bot(BOTtoken, client);

int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime;   //last time messages' scan has been done

void setup() {
  Serial.begin(115200);

  // Attempt to connect to Wifi network:
  Serial.print("Connecting Wifi: ");
  Serial.println(ssid);

  // Set WiFi to station mode and disconnect from an AP if it was Previously
  // connected
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
    delay(500);
  }
}

void loop() {
  if (millis() > Bot_lasttime + Bot_mtbs)  {
    int numNewMessages = bot.getUpdates(bot.last_message_received + 1);

    while(numNewMessages) {
      Serial.println("got response");
      for (int i=0; i<numNewMessages; i++) {
        bot.sendMessage(bot.messages[i].chat_id, bot.messages[i].text, "");
      }
      numNewMessages = bot.getUpdates(bot.last_message_received + 1);
    }

    Bot_lasttime = millis();
  }
}

Após, compile e suba o programa. Abra seu bot no telegram e digite alguma coisa nele. Haverá um atraso na resposta, mas a resposta deverá ser exatamente a mensagem enviada.

Com esse exemplo já podemos considerar enviar comandos para obter resposta sobre funcionalidades implementadas no projeto ou simplesmente criar limítrofes para geração de alarmes automaticamente.

Fácil ou não? Eis o Telegram bot com ESP32!

telegramBot-DobitAoByte.webp

Inscreva-se no nosso canal Manual do Maker no YouTube.

Também estamos no Instagram.

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.