Cómo enviar mensajes a WhatsApp o Telegram desde ESP32

En muchas aplicaciones de Internet de las cosas (IoT), es necesario enviar alertas al usuario en forma de mensajes. Normalmente, los mensajes de texto se envían a través de WiFi o SMS. Pero a veces los mensajes de texto no están disponibles en todos los dispositivos. Entonces, ¿qué pasaría si estos mensajes pudieran enviarse a través de IoT a la cuenta de WhatsApp o Telegram de un usuario?

En este proyecto programaremos una placa ESP32 para comunicar mensajes directamente a un número de WhatsApp o cuenta de Telegram. Usaremos la API de Whatabot para ambas tareas. Elegimos el ESP32 porque es una placa de desarrollo WiFi y no requiere componentes adicionales para conectarse a un punto de acceso WiFi. Ahora comencemos.

Componentes necesarios
1ESP32x1
2. Cable micro USB para ESP32 x1
3. Teléfono inteligente x1

Conexiones de circuito
No hay conexiones de circuito para este proyecto. Lo que se necesita es una placa ESP32/ESP8266 y un cable MicroUSB. Se requiere el cable para cargar el boceto en el tablero desde una computadora host. Para comunicarte también necesitarás un smartphone con la SIM activa y la aplicación WhatsApp o Telegram instalada.

API de Whatabot
Whatabot es un servicio de terceros que permite enviar mensajes en tiempo real a través de WhatsApp o Telegram. Los mensajes se comunican como solicitudes HTTP GET desde un microcontrolador o una aplicación.

La API está diseñada específicamente para su uso con dispositivos IoT y aplicaciones web. Es una manera fácil y excelente de comunicar mensajes a un número registrado o cuenta de Telegram. La API funciona en tiempo real, comunicando mensajes desde un microcontrolador al teléfono inteligente del usuario al instante.

Para comenzar, registre su número de WhatsApp o cuenta de Telegram con API a través de su teléfono inteligente.

Registrando tu número de WhatsApp
Para registrar su número de WhatsApp con la API de Whatabot, cree un contacto de Whatabot en su teléfono inteligente. El número de contacto de Whatabot es +54 9 1123998026. También puedes registrar tu número de WhatsApp en este enlace .

Luego envíe este mensaje a la cuenta de Whatabot: "Permito que Whatabot me envíe mensajes".

La API devolverá un enlace al número de móvil proporcionado que contiene una clave API. El enlace debe utilizarse para enviar mensajes al número de WhatsApp proporcionado. Contiene tres variables: una clave API, un mensaje de texto y un número de móvil.

Bibliotecas requeridas
A continuación, deberá instalar las bibliotecas necesarias en el IDE de Arduino. Este boceto utiliza las bibliotecas WiFi.h, HTTPClient.h y UrlEncode.h. WiFi.h y HTTPClient.h están instalados de forma predeterminada.

Para instalar UrlEncode.h, navegue hasta Herramientas->Administrar bibliotecas. Busque "Codificación de URL". Desplácese hacia abajo hasta la biblioteca URLencode, escrita por Masayuki Sugahara. Instale la biblioteca haciendo clic en el botón "instalar".

Enviar mensajes a un número de WhatsApp
Para enviar un mensaje estándar desde ESP32 al número de WhatsApp registrado en Whatabot, cargue el siguiente boceto…

#incluir
#incluir
#incluir
const char*ssid = “SSID”;
const char* contraseña = “CONTRASEÑA”;
//añadir +código_país_internacional + número de teléfono
Cadena número_móvil = “91***-***-****”;
Cadena api_key = “APIKEY”;
void send_whatsapp_message (mensaje de cadena) {
Cadena API_URL = " api_key + "&text="+ urlEncode(mensaje) +"&phone="+mobile_number;
Cliente HTTPhttp;
http.begin(API_URL);

http.addHeader(“Tipo de contenido”, “aplicación/x-www-form-urlencoded”);
int http_response_code = http.GET;
si (http_response_code == 200){
Serial.print(“Mensaje de WhatsApp enviado correctamente”);
}
otro{
Serial.println(“Error al enviar el mensaje”);
Serial.print(“Código de respuesta HTTP: “);
Serial.println(http_response_code);
}
http.end;
}

configuración vacía {
Serie.begin(115200);

WiFi.begin(ssid, contraseña);
Serial.println(“Conectándose al punto de acceso Wi-Fi”);
while(WiFi.estado!= WL_CONNECTED) {
retraso(500);
Impresión.de serie(“.”);
}
Serial.println(“Conectado a la dirección IP de Wi-Fi: “);
Serial.print(“Dirección IP: “);
Serial.println(WiFi.localIP);
send_whatsapp_message(“¡Hola, soy ESP32!”);
}
bucle vacío {
}

Nota: Para este boceto, asegúrese de reemplazar el “SSID” y la “CONTRASEÑA” proporcionados con el SSID y la clave de red de su punto de acceso WiFi personal. También debes reemplazar el número de móvil y la clave API con tu número de WhatsApp registrado.

Código
El esquema comienza con la importación de las bibliotecas WiFi.h, HTTPClient.h y UrlEncode.h.

  • Se requiere WiFi.h para conectarse a un punto de acceso WiFi
  • Se requiere HTTPClient.h para procesar la solicitud HTTP GET
  • Se requiere UrlEncode.h para codificar la URL, según los estándares web

A continuación, declaramos las variables para almacenar el SSID y la contraseña del punto de acceso WiFi. A continuación, declaramos las variables para almacenar el número de WhatsApp y la clave API recibida al registrar el número de móvil con Whatabot.

La función send_whatsapp_message está definida y toma un argumento de cadena. En esta función se define una variable string según el enlace recibido al registrar el número de WhatsApp en la API de Whatabot. La cadena contiene tres variables de solicitud GET: la clave API, el mensaje de texto a enviar y el número de móvil.

El mensaje de texto se define como argumento de la función y se codifica en la URL mediante la función urlEncode. Se crea una instancia de un objeto de la clase HTTPClient. Se utiliza para iniciar la solicitud HTTP utilizando el método http.begin (con una cadena URL definida como argumento).

Se establece un encabezado HTTP mediante el método http.addHeader. Se define una variable http_response_code para obtener el código de respuesta HTTP llamando al método http.GET. Si el código de respuesta es 200, significa que la solicitud HTTP se ejecutó exitosamente y se envió el mensaje de WhatsApp. De lo contrario, se imprimirá un código de error en la consola. Una llamada a http.end finaliza el encabezado HTTP.

El código para enviar el mensaje (del ESP32 al número de WhatsApp registrado) está escrito en la función de configuración porque debe ejecutarse una sola vez. La función de bucle permanece vacía.

En la función de configuración, la velocidad en baudios para la comunicación serie se establece en 115200 bps. WiFi se inicia utilizando el método WiFi.begin. El boceto espera hasta que se conecte WiFi antes de continuar.

Una vez que se conecte WiFi, la dirección IP del enrutador se imprimirá en la consola (es decir, en el monitor serie). Se realiza una llamada a send_whatsapp_message con el mensaje proporcionado como argumento de cadena.

El argumento de cadena para este boceto es: "¡Hola, este es ESP32!" Si el mensaje se envía exitosamente al número de WhatsApp, se imprimirá un mensaje de éxito en la consola.

Resultados
Para ejecutar el código, abra el monitor serie Arduino IDE y reinicie el ESP32. El borrador se ejecuta una vez por parte del tablero y el mensaje se entrega al número de WhatsApp.

Administrar Whatabot para Whatsapp
Si olvida su clave API, puede reenviar el mensaje "Permito que Whatabot me envíe mensajes" al número de contacto de Whatabot. Recibirá otro enlace con la clave API.

Si deseas cambiar la clave API, puedes enviar el mensaje “Quiero actualizar mi apikey” al número de Whatabot y recibirás un enlace con una nueva clave API. Y si deseas eliminar tu cuenta de WhatsApp Whatabot, simplemente envía el mensaje “Quiero eliminar mi cuenta” a Whatabot y tu cuenta de WhatsApp Whatabot será eliminada.

Registrar Telegram con la API de Whatabot
Como se mencionó, también es posible enviar mensajes a una cuenta de Telegram desde un microcontrolador o una aplicación web utilizando la API de Whatabot. Para hacer esto, primero registre su cuenta de Telegram con la API de Whatabot. En la aplicación Telegram, busque “@whatabot_bot” (y recuerde incluir el símbolo “@”).

Luego envíe el mensaje “Permito que Whatabot me envíe mensajes” al número de Whatabot. A cambio, recibirá un enlace que contiene una ID de chat y una clave API.

Enviar mensajes a Telegram
Para enviar un mensaje estándar desde ESP32 a la cuenta de Telegram registrada en Whatabot, cargue el siguiente boceto...

#incluir
#incluir
#incluir
const char*ssid = “SSID”;
const char* contraseña = “CONTRASEÑA”;
// agregar ID de chat de Telegram + clave API
Cadena chat_id = “CHATID”;
Cadena api_key = “APIKEY”;

void send_telegram_message (mensaje de cadena) {
Cadena API_URL = “ api_key + “&text=”+ urlEncode(mensaje) +”&chatId=”+chat_id;
Cliente HTTPhttp;
http.begin(API_URL);
http.addHeader(“Tipo de contenido”, “aplicación/x-www-form-urlencoded”);
int http_response_code = http.GET;
si (http_response_code == 200){
Serial.print(“Mensaje de Telegram enviado correctamente”);
}
otro{
Serial.println(“Error al enviar el mensaje”);
Serial.print(“Código de respuesta HTTP: “);
Serial.println(http_response_code);
}
http.end;
}

configuración vacía {
Serie.begin(115200);
WiFi.begin(ssid, contraseña);
Serial.println(“Conectándose al punto de acceso Wi-Fi”);
while(WiFi.estado!= WL_CONNECTED) {
retraso(500);
Impresión.de serie(“.”);
}
Serial.println(“Conectado a la dirección IP de Wi-Fi: “);
Serial.print(“Dirección IP: “);
Serial.println(WiFi.localIP);
send_telegram_message(“¡Hola, soy ESP32!”);
}

bucle vacío {
}

Nota: asegúrese de reemplazar “SSID” y “CONTRASEÑA” con el SSID y la clave de red de su propio punto de acceso WiFi. También deberá reemplazar la ID de chat y la clave API de su propia cuenta registrada en el esquema anterior.

Nota: Para este boceto, asegúrese de reemplazar el “SSID” y la “CONTRASEÑA” proporcionados con el SSID y la clave de red de su punto de acceso WiFi personal. También debe reemplazar el ID del chat y la clave API con su cuenta registrada de Telegram.

Código
El código auxiliar para enviar un mensaje a Telegram es similar al código auxiliar para enviar un mensaje a un número de WhatsApp, excepto que utiliza una URL diferente para la solicitud HTTP.

El esquema comienza con la importación de las bibliotecas WiFi.h, HTTPClient.h y UrlEncode.h.

  • Se requiere WiFi.h para conectarse a un punto de acceso WiFi
  • Se requiere HTTPClient.h para procesar la solicitud HTTP GET
  • Se requiere UrlEncode.h para codificar la URL, según los estándares web

A continuación, declaramos las variables para almacenar el SSID y la contraseña del punto de acceso WiFi. A continuación, declaramos las variables para almacenar el ID de chat de la cuenta de Telegram y la clave API recibida al registrar la cuenta en Whatabot.

La función send_telegram_message está definida y toma un argumento de cadena. En la función se define una variable de cadena según el enlace recibido al registrar la cuenta de Telegram con la API de Whatabot. La cadena contiene tres variables de solicitud GET: el ID del chat, la clave API y el mensaje de texto a enviar.

El mensaje de texto se define como argumento de la función y se codifica en la URL mediante la función urlEncode. Se crea una instancia de un objeto de la clase HTTPClient. Se utiliza para iniciar la solicitud HTTP utilizando el método http.begin (con una cadena URL definida como argumento).

Se establece un encabezado HTTP mediante el método http.addHeader. Se define una variable http_response_code para obtener el código de respuesta HTTP llamando al método http.GET. Si el código de respuesta es 200, significa que la solicitud HTTP se ejecutó correctamente y se envió el mensaje de Telegram. De lo contrario, se imprimirá un código de error en la consola. Una llamada a http.end finaliza el encabezado HTTP.

El código para enviar el mensaje (del ESP32 a la cuenta registrada en Telegram) está escrito en la función de configuración porque solo debe ejecutarse una vez. La función de bucle permanece vacía.

En la función de configuración, la velocidad en baudios para la comunicación serie se establece en 115200 bps. WiFi se inicia utilizando el método WiFi.begin. El boceto espera hasta que se conecte WiFi antes de continuar.

Una vez que se conecte WiFi, la dirección IP del enrutador se imprimirá en la consola (es decir, en el monitor serie). Se realiza una llamada a send_telegram_message con el mensaje proporcionado como argumento de cadena.

El argumento de cadena para este boceto es: "¡Hola, este es ESP32!" Si el mensaje se envía exitosamente a la cuenta de Telegram, se imprimirá un mensaje de éxito en la consola.

Resultados
Para ejecutar el código, abra el monitor serie Arduino IDE y reinicie el ESP32. El tablero ejecuta el boceto una vez y el mensaje se entrega a la cuenta de Telegram.

Administrar Whatabot para Telegram
Si olvida su clave API, puede reenviar el mensaje "Permito que Whatabot me envíe mensajes" al número de contacto de Whatabot. Recibirá otro enlace con la clave API.

Si deseas cambiar la clave API, puedes enviar el mensaje “Quiero actualizar mi apikey” al número de Whatabot y recibirás un enlace con una nueva clave API. Y si quieres eliminar tu cuenta de Telegram Whatabot, simplemente envía el mensaje “Quiero eliminar mi cuenta” a Whatabot y tu cuenta de WhatsApp Whatabot será eliminada.

contenido relacionado

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.