Node-RED con Home Assistant
Qué cubre este artículo sobre Node-RED y Home Assistant
- Cómo conectar Node-RED con Home Assistant.
- Cómo controlar entidades y reaccionar ante cambios de estado.
- Cómo se ven las automatizaciones complejas en Node-RED.
- Cómo integrar inteligencia artificial en flows de domótica.
- Ejemplos prácticos para iluminación, climatización, seguridad y energía.
Introducción: Node-RED con Home Assistant explicado
Home Assistant tiene automatizaciones propias, pero son limitadas. Node-RED como complemento permite lógica compleja: encadenamientos si-entonces con múltiples condiciones, horarios, retrasos y decisiones basadas en IA. Esta combinación es el estándar para automatización domótica avanzada.
Este artículo está dirigido a usuarios que quieren ampliar Home Assistant con Node-RED. Encontrarás los conceptos básicos en Instalar Node-RED y Automatización del hogar.
¿Por qué necesito Node-RED con Home Assistant?
Las automatizaciones de Home Assistant se basan en YAML y son lineales. Si necesitas “Si temperatura > 25 Y nadie en casa Y brilla el sol, entonces bajar persianas”, YAML se vuelve confuso. Node-RED lo hace visual: sensor → condiciones → acción, todo como un flow.
Node-RED con Home Assistant brevemente
Node-RED se conecta a Home Assistant mediante WebSocket. Ves todas las entidades, puedes reaccionar ante cambios de estado e invocar servicios. Los flows son visuales y más potentes que las automatizaciones YAML.
La idea central es simple: Home Assistant proporciona datos, Node-RED proporciona la lógica.
A quién está dirigido este artículo
- Usuarios de Home Assistant que necesitan automatizaciones más complejas.
- Aficionados a domótica que quieren integrar IA en su automatización.
- Usuarios de Node-RED que desean conectar Home Assistant.
- Autohospedadores que controlan su domótica de forma independiente.
Conocimientos previos en Home Assistant y Node-RED son útiles.
Términos importantes
- Node-RED - Editor de flows. Cuándo es útil: para lógica compleja.
- Home Assistant - Plataforma de domótica. Cuándo es útil: la base del sistema.
- Entity - Dispositivo/sensor en HA. Cuándo es útil: qué se controla.
- Service - Acción en HA. Cuándo es útil: qué se invoca.
- WebSocket - Conexión HA ↔ Node-RED. Cuándo es útil: para tiempo real.
- Ollama - Servidor de modelos local. Cuándo es útil: para IA en flows.
Configuración: Node-RED + Home Assistant
1. Add-on de Home Assistant (método más sencillo)
Si usas Home Assistant OS:
- Configuración → Complementos → Tienda de complementos
- Busca “Node-RED” e instala
- Activa “Iniciar al arranque”
- Abre Node-RED
La conexión se configura automáticamente.
2. Docker (manual)
version: "3.8"
services:
homeassistant:
image: homeassistant/home-assistant:latest
container_name: homeassistant
restart: unless-stopped
ports:
- "8123:8123"
volumes:
- ha_config:/config
networks:
- smarthome
nodered:
image: nodered/node-red:latest
container_name: nodered
restart: unless-stopped
ports:
- "1880:1880"
volumes:
- nodered_data:/data
networks:
- smarthome
volumes:
ha_config:
nodered_data:
networks:
smarthome:
driver: bridge
3. Conectar Node-RED con HA
# En Node-RED: Paleta → Instalar
node-red-contrib-home-assistant-websocket
Luego en Node-RED:
- Añade un nodo
events: state. - Haz clic en el engranaje → “Agregar nuevo servidor”.
- URL de Home Assistant:
http://homeassistant:8123 - Token de acceso desde Home Assistant (Perfil → Tokens de acceso de larga duración).
Nodos importantes
| Nodo | Propósito |
|---|---|
| events: state | Reacciona ante cambio de estado |
| events: all | Todos los eventos |
| call service | Invocar servicio (light.turn_on) |
| current state | Leer estado actual |
| trigger: state | Disparador al cambiar estado |
| poll state | Consultar estado periódicamente |
| wait until | Esperar hasta que se cumpla una condición |
| api | Invocar cualquier API de HA |
Ejemplo práctico 1: Luz por movimiento
[events: state: binary_sensor.movimiento_pasillo]
│
▼ (state == "on")
[time range: 18:00 - 06:00] ← solo por la noche
│
▼
[call service: light.turn_on]
Entity: light.pasillo
Data: {"brightness": 128}
│
▼
[delay: 5 minutes]
│
▼
[call service: light.turn_off]
Entity: light.pasillo
Ejemplo práctico 2: Automatización de climatización
[poll state: sensor.temperatura_exterior] (cada 5 min)
│
▼
[function: Decisión]
const temp = msg.payload;
const interna = global.get("temperatura_interna") || 21;
if (temp > 25 && interna > 23) {
msg.payload = "enfriar";
} else if (temp < 5 && interna < 19) {
msg.payload = "calentar";
} else {
msg.payload = "nada";
}
│
▼
[switch]
├─ enfriar → [call service: climate.set_hvac_mode cool]
├─ calentar → [call service: climate.set_hvac_mode heat]
└─ nada → [call service: climate.set_hvac_mode off]
Ejemplo práctico 3: Reconocimiento de presencia con IA
[events: state: person.max]
│
▼
[function: Recopilar contexto]
const context = {
person: msg.payload,
hora: new Date().toLocaleTimeString(),
dia: new Date().toLocaleDateString('es', {weekday: 'long'}),
iluminacion: global.get("estado_luz"),
temperatura: global.get("temperatura")
};
msg.payload = JSON.stringify(context);
│
▼
[HTTP Request: Ollama]
"Basándote en el contexto, ¿qué debería ocurrir?
Contexto: {{msg.payload}}
Opciones: luz_on, musica_on, calefaccion_on, nada
Responde como JSON."
│
▼
[function: Procesar JSON]
│
▼
[switch: action]
├─ luz_on → [call service: light.turn_on]
├─ musica_on → [call service: media_player.play]
└─ calefaccion_on → [call service: climate.set_temperature]
Ejemplo práctico 4: Gestión de energía
[poll state: sensor.precio_electricidad] (cada 15 min)
│
▼
[function: Analizar precio]
const precio = parseFloat(msg.payload);
msg.barato = precio < 0.25; // céntimos/kWh
msg.caro = precio > 0.40;
│
▼
[switch]
├─ barato → [call service: switch.turn_on lavadora]
│ [call service: switch.turn_on lavavajillas]
└─ caro → [call service: switch.turn_off no_esencial]
Ejemplo práctico 5: Monitoreo de seguridad
[events: state: group.todos_sensores]
│
▼
[function: Verificar alarma]
const state = msg.payload;
const hora = new Date().getHours();
const noche = hora < 6 || hora > 22;
if (state === "on" && noche) {
msg.alarma = true;
msg.razon = "Movimiento nocturno detectado";
}
│
▼
[switch: alarma?]
│
▼ (sí)
[call service: notify.notify]
"Alarma! {{msg.razon}}"
│
▼
[call service: light.turn_on]
Todas las luces
│
▼
[call service: camera.snapshot]
Capturar foto
IA en flows de domótica
Comandos en lenguaje natural
[HTTP In: /api/voice-command]
│
▼
[HTTP Request: Ollama]
"Interpreta el comando: '{{msg.payload.command}}'
Entidades disponibles: {{entities}}
Responde como JSON: {action, entity, params}"
│
▼
[function: Procesar JSON e invocar servicio]
const cmd = JSON.parse(msg.payload);
msg.service = cmd.action;
msg.entity = cmd.entity;
msg.data = cmd.params;
│
▼
[call service]
Detección de anomalías
// Function Node: Detectar patrones inusuales
const verlauf = context.get("verlauf") || [];
verlauf.push({ temp: msg.payload, zeit: Date.now() });
if (verlauf.length > 100) verlauf.shift();
// Enviar a IA para análisis
msg.payload = `Historial de temperatura: ${JSON.stringify(verlauf.slice(-20))}
¿Detectas anomalías? Responde: normal/anomalia + justificación`;
return msg;
Consideraciones de seguridad
- Access Token: Genera un token dedicado para Node-RED con permisos mínimos.
- No expongas: Node-RED y Home Assistant no deben estar directamente expuestos en Internet.
- Acciones críticas: Para operaciones sensibles (alarmas, cerraduras), requiere confirmación manual. Consulta Aprobación humana.
- Validación: Revisa siempre las salidas de la IA antes de ejecutar acciones.
Problemas comunes
- Entity-IDs incorrectas: Las entidades se llaman
light.wohnzimmer, noWohnzimmer. - Token expirado: Los Long-Lived Access Tokens pueden caducar. Regenera uno nuevo.
- Demasiados eventos:
events: allpuede ser abrumador. Filtra específicamente. - Race Conditions: Dos flows que controlan la misma entidad pueden entrar en conflicto.
- Sin plan B: Si Node-RED falla, las automatizaciones críticas deben ejecutarse en Home Assistant.
Enlaces relacionados
- Guía de Node-RED - Node-RED en detalle.
- Instalar Node-RED - Instalación.
- Integración de IA en Node-RED - IA en flows.
- Automatización del hogar - Smart Home con IA.
- Integración con Home Assistant - Home Assistant como plataforma.
- Ollama - Servidor de modelos local.
Puntos clave:
- Node-RED + Home Assistant = automatización inteligente del hogar potente.
- node-red-contrib-home-assistant-websocket para la conexión.
- events: state para disparadores, call service para acciones.
- IA con Ollama para decisiones inteligentes.
- Lógica compleja de forma visual en lugar de YAML.
Preguntas frecuentes
¿Cómo conecto Node-RED con Home Assistant?
¿Node-RED o automatizaciones de Home Assistant?
¿Cómo encuentro Entity-IDs?
¿Cómo integro IA en flows del hogar inteligente?
¿Es seguro?
¿Qué sucede si Node-RED falla?
¿Cuál es el rendimiento?
¿Cómo debugueo flows?
Fuentes y referencias
- node-red-contrib-home-assistant-websocket - Integración con Home Assistant.
- Home Assistant - Plataforma de hogar inteligente.
- Node-RED - Editor de flows.
- Home Assistant Automations - Automatización en Home Assistant.


