Riego condicionado por la meteorología con OpenWeather y Node-RED
Dos programadores, una sola cadena de decisión
El modo manual respeta al humano
Motivos, no solo booleanos
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Raspberry Pi (Docker) — cópialo libremente:
const LAT = 41.6000; // latitude of the farm (placeholder)
const LON = 1.8000; // longitude of the farm (placeholder)
const API_KEY = env.get("OPENWEATHER_API_KEY");
msg.mode = msg.mode || "auto"; // "auto" (scheduler) or "manual"
msg.url =
"https://api.openweathermap.org/data/2.5/forecast" +
`?lat=${LAT}&lon=${LON}&appid=${API_KEY}&units=metric&cnt=8`;
// cnt=8 -> next 24 h in 3-hour blocks
return msg;
// ===========================================================================
// FUNCTION 2 — "Decide irrigation"
// Analyzes the OpenWeather response: cancels if rain is forecast or there
// is frost risk. Manual mode ignores the rain (the farmer's decision).
// ===========================================================================
/*
const RAIN_THRESHOLD_MM = 2.0; // mm accumulated in 24 h that cancel the cycle
const FROST_THRESHOLD_C = 1.0; // forecast minimum in ºC that cancels the cycle
const blocks = msg.payload.list || [];
let totalRain = 0;
let minTemp = 99;
for (const b of blocks) {
totalRain += (b.rain && b.rain["3h"]) ? b.rain["3h"] : 0;
minTemp = Math.min(minTemp, b.main.temp_min);
}El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Qué endpoint de OpenWeather usa el flujo?
El endpoint de previsión de 5 días/3 horas con cnt=8, que cubre las próximas 24 horas y está disponible en el plan gratuito. La API key se lee de la variable de entorno OPENWEATHER_API_KEY del contenedor de Node-RED, nunca se guarda en el flujo.
¿Qué pasa si la API de OpenWeather no está disponible?
El nodo http request devuelve un error y la función de decisión nunca llega a poner msg.regar, así que el valor seguro por defecto es omitir el ciclo automático y avisar por Telegram. El agricultor siempre puede forzar un ciclo manual.
¿Puedo cambiar los umbrales sin editar el flujo?
En el ejemplo son constantes al principio del nodo function por claridad. En producción los movemos a contexto de flujo o a variables de entorno para que los umbrales de lluvia y helada sean editables desde el dashboard.