Regar con horario fijo es regar a ciegas: el mismo riego de un día fresco y nublado se queda corto en una ola de calor y sobra el día antes de una tormenta. La solución no es un sensor más, sino usar los datos del tiempo que ya podemos obtener gratis. En esta guía explicamos los dos niveles que usamos: omitir el riego si va a llover, y ajustar la duración según la evapotranspiración.

Resumen rápido
- Nivel 1: consultar la previsión de precipitación y saltarse el riego si es suficiente.
- Nivel 2: calcular los minutos con la fórmula ETc = ET0 × Kc.
- Fuentes gratuitas: integración de AEMET y datos de Open-Meteo.
- Siempre conserva un límite máximo de minutos como seguridad.
1. Conceptos clave sin complicarse
| Término | Qué es | Unidad |
|---|---|---|
| ET0 (evapotranspiración de referencia) | Agua que pierde una superficie de césped bien regada por evaporación y transpiración | mm/día |
| Kc (coeficiente de cultivo) | Factor que ajusta ET0 a cada cultivo y etapa | Sin unidad |
| ETc | Agua que necesita realmente tu cultivo | mm/día |
| Lluvia efectiva | Parte de la lluvia que aprovecha el suelo | mm |
Fórmula: ETc = ET0 × Kc. Y recuerda que 1 mm equivale a 1 litro por m².
2. Coeficientes de cultivo orientativos
Valores aproximados basados en las tablas de la FAO; varían con la etapa de desarrollo y el clima local.
| Cultivo | Kc en pleno desarrollo (orientativo) |
|---|---|
| Lechuga | 1,0 |
| Tomate | 1,15 |
| Pimiento | 1,05 |
| Calabacín | 0,95 |
| Césped (clima templado) | 0,8–0,95 |
| Frutales adultos | 0,8–1,1 según especie |
| Aromáticas mediterráneas | 0,5–0,7 |
3. Nivel 1: saltarse el riego si va a llover
Home Assistant ofrece la integración de AEMET OpenData (requiere una clave gratuita de AEMET) y también la integración de Open-Meteo. Ambas crean una entidad weather. Desde hace unas versiones, la previsión no se lee como atributo, sino con el servicio weather.get_forecasts:
yaml
automation:
- alias: "Riego zona 1 con previsión de lluvia"
triggers:
- trigger: time
at: "06:00:00"
actions:
- action: weather.get_forecasts
target:
entity_id: weather.aemet
data:
type: daily
response_variable: prevision
- variables:
lluvia_hoy: "{{ prevision['weather.aemet'].forecast[0].precipitation | default(0) | float(0) }}"
- if:
- condition: template
value_template: "{{ lluvia_hoy < 3 }}"
then:
- action: switch.turn_on
target:
entity_id: switch.valvula_zona_1
- delay: "00:15:00"
- action: switch.turn_off
target:
entity_id: switch.valvula_zona_1
Con esto, si la previsión indica 3 mm o más, el riego se omite. Ajusta el umbral a tu criterio: 3 mm de lluvia es una cantidad discreta; en climas secos puede ser más prudente omitir solo con lluvias mayores.

Consejo: la previsión falla. Combínala con un sensor de lluvia o con sensores de humedad del suelo para confirmar lo que realmente ha caído.
4. Nivel 2: obtener la ET0 diaria
AEMET no expone ET0 directamente en la integración, pero Open-Meteo ofrece una API gratuita con la variable et0_fao_evapotranspiration. Podemos leerla con un sensor REST (sustituye LATITUD y LONGITUD por tus coordenadas):
yaml
rest:
- resource: "https://api.open-meteo.com/v1/forecast?latitude=LATITUD&longitude=LONGITUD&daily=et0_fao_evapotranspiration&timezone=auto"
scan_interval: 21600
sensor:
- name: "ET0 prevista hoy"
value_template: "{{ value_json.daily.et0_fao_evapotranspiration[0] }}"
unit_of_measurement: "mm"
Revisa la documentación de Open-Meteo para confirmar el nombre de las variables y sus condiciones de uso antes de ponerlo en producción.
5. Convertir ET0 en minutos de riego
Definimos los datos de cada zona en ayudantes (input_number) y calculamos los minutos con una plantilla:
| Dato de la zona | Ejemplo |
|---|---|
| Cultivo (Kc) | Tomate: 1,15 |
| Superficie | 6 m² |
| Caudal de la zona | 1,5 L/min |
| ET0 prevista hoy | 5,5 mm |
| Eficiencia del riego por goteo (orientativa) | 0,9 |
Cálculo:
- ETc = 5,5 × 1,15 = 6,3 mm.
- Litros = 6,3 × 6 = 37,9 L.
- Litros con eficiencia = 37,9 ÷ 0,9 ≈ 42 L.
- Minutos = 42 ÷ 1,5 = 28 minutos.
En plantilla:
yaml
template:
- sensor:
- name: "Minutos riego zona 1"
unit_of_measurement: "min"
state: >
{% set et0 = states('sensor.et0_prevista_hoy') | float(0) %}
{% set kc = 1.15 %}
{% set m2 = 6 %}
{% set caudal = 1.5 %}
{% set eficiencia = 0.9 %}
{% set lluvia = states('sensor.lluvia_prevista_hoy') | float(0) %}
{% set mm = [et0 * kc - lluvia, 0] | max %}
{{ [ (mm * m2 / eficiencia / caudal) | round(0), 45 ] | min }}
Fíjate en dos detalles: se resta la lluvia prevista y se aplica un tope de 45 minutos como seguridad. Si el sensor de lluvia previsto no existe, créalo a partir de la previsión del apartado 3.
6. Usar el resultado en la automatización
yaml
actions:
- action: switch.turn_on
target:
entity_id: switch.valvula_zona_1
- delay:
minutes: "{{ states('sensor.minutos_riego_zona_1') | int(0) }}"
- action: switch.turn_off
target:
entity_id: switch.valvula_zona_1
Si el resultado es 0 minutos, la válvula se abre y se cierra de inmediato. Añade una condición para no ejecutar nada cuando el valor sea 0.
7. Alternativa lista para usar
Si no quieres montar todo esto a mano, existe una integración comunitaria para HACS llamada Smart Irrigation, que calcula la duración de riego a partir de datos meteorológicos. Su configuración y proveedores de datos compatibles cambian con el tiempo, así que consulta su documentación actual antes de decidirte.
8. Comparativa de estrategias
| Estrategia | Complejidad | Ahorro de agua | Riesgo de error |
|---|---|---|---|
| Horario fijo | Muy baja | Nulo | Alto (riego innecesario o insuficiente) |
| Horario + omitir si llueve | Baja | Medio | Medio |
| Sensores de humedad | Media | Alto | Bajo si están calibrados |
| Cálculo con ET0 y previsión | Media–alta | Alto | Bajo si los datos de zona son correctos |
| ET0 + sensores de humedad | Alta | El más alto | El más bajo |
Preguntas frecuentes
¿Puedo hacerlo sin ningún sensor físico? Sí, con la previsión y la ET0 de Open-Meteo, pero un sensor de humedad sirve para verificar y corregir.
¿Cada cuánto conviene recalcular? Una vez al día, antes del riego, es suficiente. Actualizar más a menudo no aporta precisión.
¿Qué pasa si falla internet? Deja un riego por horario básico como «plan B» con los minutos más conservadores.
Conclusión
La previsión y la evapotranspiración convierten un riego mecánico en uno que responde al clima. Empieza por el nivel 1, que se monta en pocos minutos y ya evita riegos innecesarios, y añade el nivel 2 cuando tengas medidos el caudal y la superficie de cada zona con la guía de riego por goteo.