Un bot de Telegram para alertas y control remoto del riego
Comandos de entrada, una función para gobernarlos todos
Estado construido desde el contexto de flujo
Las alarmas se envían solas
Un fragmento de la implementación
Tal cual del ejemplo desplegado en el Raspberry Pi (Docker) — cópialo libremente:
const AUTHORIZED_CHAT = Number(env.get("TELEGRAM_CHAT_ID"));
const chatId = msg.payload.chatId;
const text = (msg.payload.content || "").trim().toLowerCase();
if (chatId !== AUTHORIZED_CHAT) {
// Unknown chat: ignore it and leave a trace in the log
node.warn(`Command rejected from unauthorized chat: ${chatId}`);
return null;
}
const COMMANDS = ["/status", "/irrigate", "/stop", "/alarms"];
msg.cmd = COMMANDS.includes(text.split("@")[0]) ? text.split("@")[0] : "help";
msg.chatId = chatId;
return msg;
// ===========================================================================
// FUNCTION B — "Reply with status"
// Reads from context the latest values published by the other tabs.
// ===========================================================================
/*
const irrigationActive = flow.get("irrigation_active") || false;
const weather = flow.get("last_weather") || {};
const photovoltaic = flow.get("last_pv") || {}; // from the Fronius tab
const lines = [
irrigationActive ? "🟢 Irrigation RUNNING" : "⚪ Irrigation stopped",
`PV: ${photovoltaic.generated_w || "?"} W generated, ` +
`${photovoltaic.surplus_w || "?"} W of surplus`,El ejemplo completo es un programa entero — cabecera de conexionado, setup y bucle principal — listo para adaptar a tu aplicación.
Preguntas frecuentes
¿Cómo creo el bot y consigo el token?
Habla con @BotFather en Telegram, crea un bot nuevo y copia el token en la variable de entorno TELEGRAM_TOKEN del contenedor de Node-RED. Configura el nodo de credenciales de telegrambot para leerlo del entorno en lugar de pegarlo.
¿Cómo averiguo mi chat id para la lista blanca?
Envía cualquier mensaje a tu bot nuevo e inspecciona msg.payload.chatId en un nodo debug, o consulta el endpoint getUpdates de la Bot API. Pon ese número en TELEGRAM_CHAT_ID y el parser rechazará cualquier otro chat.
¿Es Telegram lo bastante fiable para alarmas críticas?
Trátalo como un canal de notificación, no como una capa de seguridad. Las protecciones cableadas (relés térmicos, presostatos) siguen actuando en local; Telegram le cuenta al humano lo que ya ha pasado y le permite parar o arrancar ciclos a distancia.