Como enviar mensagens para WhatsApp ou Telegram do ESP32

Em muitas aplicações de Internet das Coisas (IoT), é necessário enviar alertas ao usuário na forma de mensagens. Normalmente, as mensagens de texto são enviadas via WiFi ou SMS. Mas às vezes as mensagens de texto não estão disponíveis entre dispositivos. Então, e se essas mensagens pudessem ser enviadas via IoT para a conta do WhatsApp ou Telegram de um usuário?

Neste projeto programaremos uma placa ESP32 para comunicar mensagens diretamente para um número de WhatsApp ou conta de Telegram. Usaremos a API Whatabot para ambas as tarefas. Estamos escolhendo o ESP32 porque é uma placa de desenvolvimento WiFi e não requer componentes extras para conectar-se a um ponto de acesso WiFi. Agora, vamos começar.

Componentes necessários
1. ESP32 x1
2. Cabo micro USB para ESP32 x1
3. Smartphone x1

Conexões de circuito
Não há conexões de circuito para este projeto. O que é necessário é uma placa ESP32/ESP8266 e um cabo MicroUSB. O cabo é necessário para carregar o esboço na placa a partir de um computador host. Para se comunicar, você também precisará de um smartphone com SIM ativo e o aplicativo WhatsApp ou Telegram instalado.

API Whatabot
Whatabot é um serviço de terceiros que permite que mensagens em tempo real sejam enviadas via WhatsApp ou Telegram. As mensagens são comunicadas como solicitações HTTP GET de um microcontrolador ou aplicativo.

A API foi projetada especificamente para uso com dispositivos IoT e aplicativos da web. É uma forma fácil e excelente de comunicar mensagens para um número cadastrado ou conta do Telegram. A API opera em tempo real, comunicando mensagens de um microcontrolador para o smartphone do usuário instantaneamente.

Para começar, cadastre seu número de WhatsApp ou conta de Telegram com API através do seu smartphone.

Registrando seu número do WhatsApp
Para registrar seu número do WhatsApp com a API do Whatabot, crie um contato do Whatabot no seu smartphone. O número de contato do Whatabot é +54 9 1123998026. Você também pode registrar seu número do WhatsApp em esse link.

Em seguida, envie esta mensagem para a conta do Whatabot: “Permito que o Whatabot me envie mensagens”.

A API retornará um link para o número de celular fornecido contendo uma chave de API. O link deve ser usado para enviar mensagens para o número do WhatsApp fornecido. Ele contém três variáveis ​​– uma chave de API, uma mensagem de texto e um número de celular.

Bibliotecas necessárias
Em seguida, você precisará instalar as bibliotecas necessárias no Arduino IDE. Este esboço usa as bibliotecas WiFi.h, HTTPClient.h e UrlEncode.h. O WiFi.h e o HTTPClient.h são instalados por padrão.

Para instalar o UrlEncode.h, navegue até Ferramentas->Gerenciar Bibliotecas. Procure por “URLencode”. Role para baixo até a biblioteca URLencode, escrita por Masayuki Sugahara. Instale a biblioteca clicando no botão “instalar”.

Enviando mensagens para um número do WhatsApp
Para enviar uma mensagem padrão do ESP32 para o número do WhatsApp registrado no Whatabot, carregue o seguinte esboço…

#include
#include
#include
const char*ssid = “SSID”;
const char* senha = “SENHA”;
//adiciona +código_país_internacional + número de telefone
String número_móvel = “91***-***-****”;
String api_key = “APIKEY”;
void send_whatsapp_message(String mensagem){
String API_URL = “ api_key + “&text=”+ urlEncode(message) +”&phone=”+mobile_number;
HTTPCliente http;
http.begin(API_URL);

http.addHeader(“Tipo de conteúdo”, “aplicativo/x-www-form-urlencoded”);
int http_response_code = http.GET ;
se (http_response_code == 200){
Serial.print(“Mensagem de Whatsapp enviada com sucesso”);
}
outro{
Serial.println(“Erro ao enviar a mensagem”);
Serial.print(“Código de resposta HTTP: “);
Serial.println(http_response_code);
}
http.end ;
}

configuração vazia {
Serial.begin(115200);

WiFi.begin(ssid, senha);
Serial.println(“Conectando ao ponto de acesso Wi-Fi”);
enquanto(WiFi.status != WL_CONNECTED) {
atraso(500);
Serial.print(“.”);
}
Serial.println(“Conectado ao endereço IP do Wi-Fi: “);
Serial.print(“Endereço IP: “);
Serial.println(WiFi.localIP );
send_whatsapp_message(“Olá, aqui é ESP32!”);
}
loop vazio {
}

Observação: para este esboço, certifique-se de substituir o “SSID” e a “SENHA” fornecidos pelo SSID e chave de rede do seu ponto de acesso WiFi pessoal. Você também deve substituir o número do celular e a chave API pelo seu número registrado do WhatsApp.

O código
O esboço começa com a importação das bibliotecas WiFi.h, HTTPClient.h e UrlEncode.h.

  • WiFi.h é necessário para conectar-se a um ponto de acesso WiFi
  • HTTPClient.h é necessário para processar a solicitação HTTP GET
  • UrlEncode.h é necessário para codificar o URL, de acordo com os padrões da web

A seguir, são declaradas as variáveis ​​para armazenar o SSID e a senha do ponto de acesso WiFi. Em seguida, declaramos as variáveis ​​para armazenar o número do WhatsApp — e a chave API recebida ao registrar o número do celular no Whatabot.

A função send_whatsapp_message é definida e recebe um argumento string. Nesta função, uma variável string é definida de acordo com o link recebido ao registrar o número do WhatsApp na API do Whatabot. A string contém três variáveis ​​de solicitação GET — a chave da API, a mensagem de texto a ser enviada e o número do celular.

A mensagem de texto é definida como o argumento da função e é codificada na URL usando a função urlEncode . Um objeto da classe HTTPClient é instanciado. É usado para iniciar a solicitação HTTP usando o método http.begin (com uma string de URL definida como argumento).

Um cabeçalho HTTP é definido usando o método http.addHeader . Uma variável http_response_code é definida para obter o código de resposta HTTP chamando o método http.GET . Se o código de resposta for 200, significa que a solicitação HTTP foi executada com sucesso e a mensagem do WhatsApp foi enviada. Caso contrário, um código de erro será impresso no console. Uma chamada para http.end encerra o cabeçalho HTTP.

O código para enviar a mensagem (do ESP32 para o número de WhatsApp cadastrado) é escrito na função setup porque deve ser executado apenas uma vez. A função loop permanece vazia.

Na função setup , a taxa de transmissão para comunicação serial é definida como 115200 bps. O WiFi é iniciado usando o método WiFi.begin . O sketch espera até que o WiFi seja conectado antes de continuar.

Assim que o WiFi estiver conectado, o endereço IP do roteador será impresso no console (ou seja, no monitor serial). Uma chamada para send_whatsapp_message é feita com a mensagem fornecida como argumento de string.

O argumento de string para este esboço é: “Olá, aqui é ESP32!” Se a mensagem for enviada com sucesso para o número do WhatsApp, uma mensagem de sucesso será impressa no console.

Resultados
Para executar o código, abra o monitor serial do Arduino IDE e reinicie o ESP32. O esboço é executado uma vez pela diretoria e a mensagem é entregue no número do WhatsApp.

Gerenciando Whatabot para Whatsapp
Se você esquecer sua chave de API, poderá reenviar a mensagem “Eu permito que o Whatabot me envie mensagens” para o número de contato do Whatabot. Você receberá outro link com a chave API.

Se quiser alterar a chave API, você pode enviar a mensagem “Quero atualizar minha apikey” para o número Whatabot e receberá um link com uma nova chave API. E se você quiser excluir sua conta do WhatsApp Whatabot, basta enviar a mensagem “Quero excluir minha conta” para o Whatabot e sua conta do WhatsApp Whatabot será excluída.

Registrando o Telegram na API Whatabot
Conforme mencionado, também é possível enviar mensagens para uma conta do Telegram a partir de um microcontrolador ou aplicativo web usando a API Whatabot. Para fazer isso, primeiro registre sua conta do Telegram na API Whatabot. No aplicativo Telegram, pesquise “@whatabot_bot” (e lembre-se de incluir o símbolo “@”).

Em seguida, envie a mensagem “Eu permito que o Whatabot me envie mensagens” para o número do Whatabot. Em troca, você receberá um link contendo um ID de bate-papo e uma chave de API.

Enviando mensagens para Telegram
Para enviar uma mensagem padrão do ESP32 para a conta do Telegram registrada no Whatabot, carregue o seguinte esboço…

#include
#include
#include
const char*ssid = “SSID”;
const char* senha = “SENHA”;
// adicione ID de bate-papo do Telegram + chave de API
String chat_id = “CHATID”;
String api_key = “APIKEY”;

void send_telegram_message(String mensagem){
String API_URL = “ api_key + “&text=”+ urlEncode(message) +”&chatId=”+chat_id;
HTTPCliente http;
http.begin(API_URL);
http.addHeader(“Tipo de conteúdo”, “aplicativo/x-www-form-urlencoded”);
int http_response_code = http.GET ;
if (http_código_de_resposta == 200){
Serial.print(“Mensagem de telegrama enviada com sucesso”);
}
outro{
Serial.println(“Erro ao enviar a mensagem”);
Serial.print(“Código de resposta HTTP: “);
Serial.println(http_código_de_resposta);
}
http.end ;
}

configuração vazia {
Serial.begin(115200);
WiFi.begin(ssid, senha);
Serial.println(“Conectando ao ponto de acesso Wi-Fi”);
enquanto(WiFi.status != WL_CONNECTED) {
atraso(500);
Serial.print(“.”);
}
Serial.println(“Conectado ao endereço IP Wi-Fi: “);
Serial.print(“Endereço IP: “);
Serial.println(WiFi.localIP );
send_telegram_message(“Olá, aqui é o ESP32!”);
}

loop vazio {
}

Nota: certifique-se de substituir “SSID” e “SENHA” pelo SSID e chave de rede do seu próprio ponto de acesso WiFi. Você também precisará substituir o ID do bate-papo e a chave API de sua própria conta registrada no esboço acima.

Observação: para este esboço, certifique-se de substituir o “SSID” e a “SENHA” fornecidos pelo SSID e chave de rede do seu ponto de acesso WiFi pessoal. Você também deve substituir o ID do chat e a chave API pela sua conta registrada do Telegram.

O código
O esboço para enviar uma mensagem para o Telegram é semelhante ao esboço para enviar uma mensagem para um número do WhatsApp, exceto que ele usa uma URL diferente para a solicitação HTTP.

O esboço começa com a importação das bibliotecas WiFi.h, HTTPClient.h e UrlEncode.h.

  • WiFi.h é necessário para conectar-se a um ponto de acesso WiFi
  • HTTPClient.h é necessário para processar a solicitação HTTP GET
  • UrlEncode.h é necessário para codificar o URL, de acordo com os padrões da web

A seguir, são declaradas as variáveis ​​para armazenar o SSID e a senha do ponto de acesso WiFi. Em seguida, declaramos as variáveis ​​​​para armazenar o ID do chat da conta do Telegram – e a chave de API recebida ao registrar a conta no Whatabot.

A função send_telegram_message é definida e recebe um argumento de string. Na função, uma variável string é definida de acordo com o link recebido ao cadastrar a conta do Telegram na API Whatabot. A string contém três variáveis ​​de solicitação GET — o ID do chat, a chave de API e a mensagem de texto a ser enviada.

A mensagem de texto é definida como o argumento da função e é codificada na URL usando a função urlEncode . Um objeto da classe HTTPClient é instanciado. É usado para iniciar a solicitação HTTP usando o método http.begin (com uma string de URL definida como argumento).

Um cabeçalho HTTP é definido usando o método http.addHeader . Uma variável http_response_code é definida para obter o código de resposta HTTP chamando o método http.GET . Se o código de resposta for 200, isso significa que a solicitação HTTP foi executada com sucesso e a mensagem do Telegram foi enviada. Caso contrário, um código de erro será impresso no console. Uma chamada para http.end encerra o cabeçalho HTTP.

O código para enviar a mensagem (do ESP32 para a conta cadastrada no Telegram) é escrito na função setup porque deve ser executado apenas uma vez. A função loop permanece vazia.

Na função setup , a taxa de transmissão para comunicação serial é definida como 115200 bps. O WiFi é iniciado usando o método WiFi.begin . O sketch espera até que o WiFi seja conectado antes de continuar.

Assim que o WiFi estiver conectado, o endereço IP do roteador será impresso no console (ou seja, no monitor serial). Uma chamada para send_telegram_message é feita com a mensagem fornecida como argumento de string.

O argumento de string para este esboço é: “Olá, aqui é ESP32!” Se a mensagem for enviada com sucesso para a conta do Telegram, uma mensagem de sucesso será impressa no console.

Resultados
Para executar o código, abra o monitor serial do Arduino IDE e reinicie o ESP32. O esboço é executado uma vez pelo quadro e a mensagem é entregue na conta do Telegram.

Gerenciando Whatabot para Telegram
Se você esquecer sua chave de API, poderá reenviar a mensagem “Eu permito que o Whatabot me envie mensagens” para o número de contato do Whatabot. Você receberá outro link com a chave API.

Se quiser alterar a chave API, você pode enviar a mensagem “Quero atualizar minha apikey” para o número Whatabot e receberá um link com uma nova chave API. E se você quiser deletar sua conta do Telegram Whatabot, basta enviar a mensagem “Quero deletar minha conta” para o Whatabot e sua conta do WhatsApp Whatabot será deletada.

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.