📌 Resumen rápido (TL;DR)
- Recibe alertas de riego en Telegram cuando tu campo necesita agua. Tutorial completo con ESP32, sensor de humedad y bot de Telegram paso a paso.
💡 ¿Qué sensores IoT se usan en agricultura de precisión?
Los sensores IoT agrícolas más usados miden humedad del suelo, temperatura, pH y conductividad eléctrica. Envían datos en tiempo real al móvil y permiten automatizar el riego y la fertilización.
❓ Preguntas frecuentes

📑 Contenido de este artículo
- Tu campo te avisa cuando tiene sed
- Material necesario
- Paso 1: Crear el bot de Telegram
- Paso 2: Código del ESP32
- Paso 3: Calibrar y personalizar
- Paso 4: Instalar en campo
- Paso 5: Añadir múltiples zonas
- Ideas avanzadas
- Mejoras avanzadas: histórico y gráficas en Telegram
- Solución de problemas comunes
- Artículos relacionados que te pueden interesar
- Artículos relacionados
- Preguntas frecuentes
- Ejemplo de mensajes que recibirás en Telegram
Tu campo te avisa cuando tiene sed
Imagina recibir un mensaje en tu móvil que dice: «Zona olivos: humedad del suelo al 22%. Se recomienda regar 45 minutos». No un mensaje genérico, sino uno basado en lo que está midiendo un sensor enterrado en tu parcela en ese momento. Eso es exactamente lo que vamos a montar en este tutorial.
💡 Pro Tip
La agricultura de precisión puede aumentar la productividad hasta un 25%. Explora todas nuestras guías. Ver más →
Vamos a usar un ESP32 con un sensor de humedad del suelo que envía alertas a Telegram cuando la humedad baja de un umbral que tú defines. El coste total del hardware es de unos 20€ y la configuración se completa en una tarde.
Material necesario
Para este proyecto necesitas un ESP32 DevKit (5-10€), un sensor capacitivo de humedad del suelo v2.0 (2-3€), cables dupont (2€), una conexión WiFi con internet en tu campo (o router 4G) y un smartphone con Telegram instalado. El coste total del hardware ronda los 15-20€.
| Tipo curso | Duración | Certificado | Online |
|---|---|---|---|
| Cert. profesionalidad Nv.1 | 200-400h | ✅ Oficial | ⚠️ Parcial |
| Cert. profesionalidad Nv.2 | 400-920h | ✅ Oficial | ⚠️ Parcial |
| Especialidad formativa | 40-200h | Diploma | ✅ Disponible |
Fuente: .
Paso 1: Crear el bot de Telegram
Telegram permite crear bots (programas automatizados) que envían y reciben mensajes. Crear uno es gratuito y solo lleva 2 minutos.
Abre Telegram en tu móvil y busca @BotFather (es el bot oficial de Telegram para crear bots). Envía el comando /newbot. BotFather te pedirá un nombre para tu bot. Escribe algo como «Mi Huerta IoT». Luego te pedirá un nombre de usuario único que termine en «bot». Escribe algo como «mi_huerta_riego_bot».
BotFather te dará un token de acceso, una cadena larga de números y letras. Guarda este token en un lugar seguro, lo necesitarás en el código del ESP32. Es algo así como: 1234567890:ABCdefGhIJKlmNoPQRsTUVwxYZ.
Ahora necesitas tu Chat ID para que el bot sepa a quién enviar los mensajes. Busca @userinfobot en Telegram y envíale cualquier mensaje. Te responderá con tu ID numérico (algo como 987654321). Anota este número.
Paso 2: Código del ESP32
Este código lee el sensor de humedad cada 15 minutos y envía un mensaje a Telegram si la humedad está por debajo del umbral configurado. También envía un resumen diario a las 8:00 de la mañana con el estado del suelo.
#include <WiFi.h>
#include <HTTPClient.h>
#include <time.h>
// === CONFIGURACIÓN: EDITA ESTOS VALORES ===
const char* ssid = "TU_RED_WIFI";
const char* password = "TU_CLAVE_WIFI";
const char* botToken = "TU_TOKEN_BOT";
const char* chatId = "TU_CHAT_ID";
// Sensor
const int sensorPin = 34;
int valorSeco = 2800;
int valorMojado = 1200;
float umbralAlerta = 25.0; // Porcentaje mínimo antes de alertar
// Control de tiempo
unsigned long ultimaLectura = 0;
unsigned long ultimaAlerta = 0;
const unsigned long intervaloLectura = 900000; // 15 minutos
const unsigned long intervaloMinAlerta = 3600000; // 1 hora entre alertas
bool alertaEnviada = false;
int ultimaHoraResumen = -1;
float leerHumedad() {
int lectura = analogRead(sensorPin);
float h = (float)(valorSeco - lectura) / (float)(valorSeco - valorMojado) * 100.0;
if (h < 0) h = 0;
if (h > 100) h = 100;
return h;
}
void enviarTelegram(String mensaje) {
HTTPClient http;
String url = "https://api.telegram.org/bot" + String(botToken)
+ "/sendMessage?chat_id=" + String(chatId)
+ "&text=" + mensaje + "&parse_mode=HTML";
http.begin(url);
int httpCode = http.GET();
if (httpCode > 0) {
Serial.println("Telegram enviado OK");
} else {
Serial.println("Error enviando Telegram");
}
http.end();
}
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Conectando WiFi...");
}
Serial.println("WiFi conectado: " + WiFi.localIP().toString());
// Configurar hora (zona España peninsular)
configTime(3600, 3600, "pool.ntp.org");
enviarTelegram("Sistema de riego IoT iniciado. Monitorizando humedad del suelo.");
}
void loop() {
unsigned long ahora = millis();
if (ahora - ultimaLectura >= intervaloLectura || ultimaLectura == 0) {
ultimaLectura = ahora;
float humedad = leerHumedad();
Serial.printf("Humedad: %.1f%%\n", humedad);
// Alerta de baja humedad
if (humedad < umbralAlerta && (ahora - ultimaAlerta > intervaloMinAlerta)) {
String alerta = "ALERTA RIEGO\n";
alerta += "Humedad del suelo: " + String(humedad, 1) + "%\n";
alerta += "Umbral configurado: " + String(umbralAlerta, 0) + "%\n";
float litros = (umbralAlerta * 2 - humedad) * 0.5;
int minutos = max(15, (int)(litros * 10));
alerta += "Recomendacion: regar " + String(minutos) + " minutos";
enviarTelegram(alerta);
ultimaAlerta = ahora;
}
// Alerta de recuperación
if (humedad >= umbralAlerta + 10 && alertaEnviada) {
enviarTelegram("Humedad recuperada: " + String(humedad, 1) + "%. Suelo OK.");
alertaEnviada = false;
}
// Resumen diario a las 8:00
struct tm timeinfo;
if (getLocalTime(&timeinfo)) {
if (timeinfo.tm_hour == 8 && timeinfo.tm_hour != ultimaHoraResumen) {
String resumen = "RESUMEN DIARIO\n";
resumen += "Humedad actual: " + String(humedad, 1) + "%\n";
String estado = humedad < 25 ? "NECESITA RIEGO" : (humedad < 50 ? "Aceptable" : "Bien regado");
resumen += "Estado: " + estado;
enviarTelegram(resumen);
ultimaHoraResumen = timeinfo.tm_hour;
}
}
}
delay(1000);
}
Paso 3: Calibrar y personalizar
Antes de enterrar el sensor, necesitas calibrar los valores valorSeco y valorMojado para tu tipo de suelo. El proceso es el mismo que describimos en nuestro tutorial de ESP32 para huerta: medir la lectura ADC con el sensor en suelo seco y en suelo saturado de agua.
El umbralAlerta de 25% es un punto de partida razonable para la mayoría de cultivos de regadío. Para cultivos que toleran más sequía (olivo, almendro), puedes bajarlo a 15-20%. Para hortalizas sensibles (lechuga, fresas), súbelo a 35-40%.
Paso 4: Instalar en campo
Para la instalación en campo, coloca el ESP32 en una carcasa estanca IP65 (5-8€ en Amazon). Pasa los cables del sensor por un prensaestopas para mantener la estanqueidad. Alimenta con un power bank de 10.000 mAh (que durará 1-2 semanas con deep sleep) o con un panel solar de 6W + batería para alimentación indefinida.
Entierra el sensor de humedad a la profundidad adecuada según tu cultivo (15-20 cm para hortalizas, 30-40 cm para frutales). Asegúrate de que el contacto con el suelo es bueno: rellena el agujero alrededor de la sonda sin dejar bolsas de aire.
Paso 5: Añadir múltiples zonas
Si quieres monitorizar varias zonas, simplemente conecta más sensores al ESP32 (hasta 3-4 por unidad, usando los pines GPIO 34, 35, 32 y 33). Modifica el código para leer cada sensor y enviar alertas independientes para cada zona con su propio umbral.
Para parcelas más grandes donde un solo ESP32 no cubre todo, puedes desplegar varios ESP32 independientes, cada uno con su sensor, todos enviando alertas al mismo bot de Telegram. Diferéncialos añadiendo el nombre de la zona al mensaje de alerta.
Ideas avanzadas
Una vez que el sistema básico funcione, puedes ampliarlo con funcionalidades adicionales. Añadir control de riego: conecta un relé (2-3€) al ESP32 y una electroválvula (15-30€) a tu tubería de riego. El ESP32 puede abrir la válvula automáticamente cuando la humedad baje del umbral y cerrarla cuando suba por encima del nivel objetivo.
También puedes implementar comandos en Telegram: programa el bot para que responda a mensajes como «/humedad» (devuelve lectura actual), «/regar 30» (activa riego 30 minutos) o «/umbral 30» (cambia el umbral de alerta). Esto te da control remoto completo desde tu móvil.
Otra mejora útil es almacenar datos en una hoja de Google Sheets automáticamente (usando la API de Google con una Google Apps Script), creando un registro histórico de humedad del suelo sin coste adicional.
Mejoras avanzadas: histórico y gráficas en Telegram
Una vez que el sistema básico de alertas funcione, puedes añadir funcionalidades que lo conviertan en una herramienta de gestión de riego más completa sin salir de Telegram.
La primera mejora útil es almacenar un histórico de lecturas en la memoria del ESP32 (usando SPIFFS o LittleFS, el sistema de archivos interno) y enviar un gráfico semanal como imagen. El ESP32 puede generar un gráfico simple en formato texto (usando caracteres ASCII para simular barras) o, con algo más de programación, generar una imagen PNG mediante una API externa como QuickChart (quickchart.io) que convierte datos en gráficos y devuelve una URL de imagen que Telegram puede mostrar directamente.
Otra mejora valiosa es implementar comandos interactivos en Telegram. Programa el bot para responder a los siguientes comandos. El comando /estado devuelve la lectura actual de todos los sensores con indicador de estado (bien, aceptable, necesita riego). El comando /historico envía un resumen de las últimas 24 horas con valores mínimo, máximo y medio. El comando /umbral seguido de un número (por ejemplo, /umbral 30) permite cambiar el umbral de alerta remotamente sin reprogramar el ESP32. Y el comando /regar seguido de minutos (por ejemplo, /regar 30) activa una electroválvula conectada a un relé durante los minutos especificados (requiere hardware adicional: módulo relé de 3€ + electroválvula de 15-30€).
Con estos comandos, tu teléfono móvil se convierte en un controlador de riego remoto completo. Puedes consultar el estado de tu campo, ajustar parámetros y activar riego desde cualquier lugar del mundo, todo a través de Telegram que ya tienes instalado y sabes usar.
Solución de problemas comunes
Basándonos en la experiencia de usuarios que han implementado este sistema, estos son los problemas más frecuentes y sus soluciones.
El ESP32 no se conecta al WiFi: Verifica que el nombre de red y la contraseña están exactamente correctos (sin espacios extra). El ESP32 solo soporta WiFi 2.4 GHz, no 5 GHz. Si tu router emite ambas frecuencias con el mismo nombre, sepáralas. Acerca el ESP32 al router para la primera prueba y aléjalo gradualmente hasta encontrar el límite de alcance.
Las lecturas del sensor son erráticas: Comprueba las conexiones (cables sueltos son la causa más frecuente). Añade un condensador de 100nF entre VCC y GND del sensor para filtrar ruido eléctrico. Si el cable del sensor es largo (más de 2 metros), usa cable apantallado para reducir interferencias. Las lecturas también varían con la temperatura: es normal que la humedad aparente suba ligeramente por la noche (el suelo se enfría y la constante dieléctrica cambia).
Los mensajes de Telegram no llegan: Verifica que el token del bot y tu chat ID están correctos. Comprueba que el ESP32 tiene acceso a internet (no solo al WiFi, sino que el router tiene conexión a internet activa). Algunos routers bloquean tráfico HTTPS por defecto: verifica la configuración del firewall. Si usas un router 4G con SIM prepago, verifica que tienes saldo de datos disponible.
Artículos relacionados que te pueden interesar
Si este tema te resulta útil, te recomendamos consultar también nuestra tutorial de monitorización con ESP32, nuestra comparativa de sensores de humedad del suelo y nuestro artículo sobre software de riego inteligente.
Artículos relacionados
Para profundizar en los temas tratados en este artículo, te recomendamos:
- Guía de sensores de humedad del suelo
- Tutorial completo del sistema esp32
- Software de riego inteligente profesional
Preguntas frecuentes
¿Las alertas de Telegram funcionan si no tengo conexión en el campo?
El ESP32 necesita WiFi con internet para enviar mensajes a Telegram. Si tu campo no tiene WiFi, necesitarás un router 4G con SIM de datos. El consumo de datos es mínimo: cada mensaje de Telegram consume menos de 1 KB.
¿Puedo usar WhatsApp en lugar de Telegram?
Técnicamente sí, pero WhatsApp Business API es más compleja de configurar y tiene costes asociados. Telegram es la opción más práctica y gratuita para proyectos IoT. Otra alternativa es usar notificaciones push de Blynk, que no requieren configurar bots.
¿Qué pasa si el ESP32 se queda sin batería o pierde WiFi?
El sistema deja de enviar alertas hasta que se restaure la alimentación o la conexión. Para mayor fiabilidad, puedes programar un «heartbeat» diario: si no recibes el resumen de las 8:00, sabes que algo falla. Los ESP32 modernos se reconectan automáticamente al WiFi tras una desconexión temporal.




Ejemplo de mensajes que recibirás en Telegram
Para que te hagas una idea concreta de cómo funciona el sistema en el día a día, estos son ejemplos de los mensajes que recibirías en tu móvil durante una semana típica de verano en un olivar de regadío.
Lunes 8:00 – Resumen diario: «Buenos días. Humedad Zona Norte: 38%. Zona Sur: 29%. Zona Este: 44%. Temperatura suelo: 24°C. Todo en rango normal.» Martes 14:30 – Alerta: «⚠️ Zona Sur ha bajado al 22%. Está por debajo del umbral (25%). Recomendación: regar 45 minutos esta tarde.» Martes 20:15 – Recuperación: «✅ Zona Sur ha recuperado al 35% tras el riego. Todo normalizado.» Viernes 8:00 – Resumen diario con anomalía: «Buenos días. Humedad Zona Norte: 41%. Zona Sur: 33%. Zona Este: 18% ⚠️. La Zona Este ha bajado mucho, posible problema con el riego de ayer. Verificar goteros.»
El mensaje del viernes es especialmente valioso: detectar un fallo en el sistema de riego (goteros obstruidos, rotura de tubería) en horas en lugar de días puede salvar una cosecha. Sin el sensor, ese problema podría pasar desapercibido hasta que las hojas muestren síntomas visuales de estrés, momento en que el daño ya está hecho y la producción afectada.


Deja una respuesta