Enviar Mensajes desde un ESP32 a Telegram

📌Madrid 2025 | ESP32

Una forma práctica de recibir notificaciones o datos de tus proyectos directamente en un móvil. Aquí la experiencia de cómo preparar tu ESP32 para conectarse a Internet y finalmente cómo escribir el código necesario para que todo funcione

1. Crear un Bot en Telegram

Para comenzar, buscar el bot @BotFather en Telegram. Crear un nuevo bot usando el comando /newbot y seguir las instrucciones para obtener el token de API necesario.

2. Configuración del ESP32

Configurar el entorno de desarrollo para programar el ESP32, asegurándose de tener las librerías WiFi.h y HTTPClient.h instaladas.

3. Código para Enviar Mensajes a Telegram

Este código puede compilarse para enviar un mensaje desde el ESP32 a Telegram. Es importante reemplazar YOUR_BOT_TOKEN y YOUR_CHAT_ID con tu token y ID de chat de Telegram.

#include <WiFi.h>
#include <HTTPClient.h>

// Configuración de la red WiFi
const char* ssid = "tuSSID"; // Nombre de tu red WiFi
const char* password = "tuPassword"; // Contraseña de tu red WiFi

// Configuración del bot de Telegram
String botToken = "YOUR_BOT_TOKEN"; // Reemplaza con tu token de bot
String chatID = "YOUR_CHAT_ID"; // Reemplaza con tu ID de chat

void setup() {
  Serial.begin(115200);
  
  // Conexión a la red WiFi
  conectarWiFi();
  
  // Enviar mensaje de prueba a Telegram
  enviarMensaje("ESP32 conectado a Telegram!");
}

void loop() {
  // Aquí se puede agregar la lógica para enviar más mensajes según sea necesario
}

void conectarWiFi() {
  Serial.print("Conectando a ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);

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

  Serial.println("");
  Serial.println("WiFi conectado");
  Serial.print("IP asignada: ");
  Serial.println(WiFi.localIP());
}

void enviarMensaje(String mensaje) {
  if(WiFi.status() == WL_CONNECTED) { // Verificar la conexión WiFi
    HTTPClient http;
    String url = "https://api.telegram.org/bot" + botToken + "/sendMessage?chat_id=" + chatID + "&text=" + mensaje;
    
    http.begin(url); // Iniciar la conexión HTTP
    int httpCode = http.GET(); // Realizar la solicitud GET

    if(httpCode > 0) {
      String payload = http.getString();
      Serial.print("Mensaje enviado, respuesta del servidor: ");
      Serial.println(payload);
    } else {
      Serial.print("Error en la solicitud HTTP: ");
      Serial.println(http.errorToString(httpCode).c_str());
    }

    http.end(); // Finalizar la conexión HTTP
  } else {
    Serial.println("Error: No conectado a WiFi");
  }
}


Publicado

en

,

Etiquetas:

Comentarios

4 respuestas a «Enviar Mensajes desde un ESP32 a Telegram»

  1. Avatar de SUAREZ
    SUAREZ

    Y COMO AVERIGUO EL CHAT_ID?

    1. Avatar de ger

      Para averiguar el chat_id en Telegram, sigue estos pasos:

      Abrir un chat con el bot: Primero, debes haber creado o agregado un bot en Telegram usando BotFather. Una vez lo tengas, envíale un mensaje para iniciar la conversación.

      Obtener el chat_id: Puedes hacerlo de dos formas:

      A través de la API de Telegram: Abre tu navegador e ingresa la siguiente URL, reemplazando YOUR_BOT_TOKEN por el token de tu bot (proporcionado por BotFather):

      bash

      https://api.telegram.org/botYOUR_BOT_TOKEN/getUpdates

      Cuando alguien envíe un mensaje al bot, recibirás una respuesta en formato JSON que incluye el chat_id de la conversación. Busca un fragmento como este:

      json

      «chat»: {
      «id»: 123456789,
      «first_name»: «Nombre»,
      «last_name»: «Apellido»,
      «type»: «private»
      }

      El valor 123456789 es el chat_id.

      ALTERNATIVA: Usar bots de terceros: También puedes usar bots de terceros como IDBot. Simplemente envíales el comando /getid, y te proporcionarán tu chat_id directamente.

  2. Avatar de Ramón Cotillas
    Ramón Cotillas

    Me parece que esto está bastante incompleto. No tiene sentido enviar mensajes a Telegram desde un ESP32 sin usar una librería específica como UniversalTelegramBot.h, que para eso están. Usar HTTPClient directamente es reinventar la rueda y es propenso a errores. Lo correcto sería usar las herramientas que ya existen en vez de hacer todo a mano.

    1. Avatar de ger

      Gracias por el aporte Ramón , pero en realidad, usar HTTPClient directamente es una opción perfectamente válida y muchas veces más ligera que depender de una librería adicional como UniversalTelegramBot.h, que arrastra bastante más memoria y complejidad innecesaria para casos simples.

Responder a Ramón Cotillas Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

¿Quieres avanzar con tu proyecto?