En esta guía vamos a ver como instalar Node-Red en Portainer.
¿Qué es Node-Red?
Node-Red es una herramienta visual para programar automatizaciones basada en flows o flujos de trabajo.
HA dispone de automatizaciones, aunque resulta bastante tedioso sobre todo para una persona que no está familiarizada o no tiene conocimientos, pues hay que ir seleccionando opciones y rellenando campos, esto es algo que puede inducir a error muy fácilmente y hacer que nuestra automatización no funcione, además no es fácil depurar o realizar comprobaciones.
Node-Red consta de un panel de objetos y un lienzo, crear una automatización en Node-Red es tan sencillo como arrastrar el elemento que queremos usar al lienzo, además podemos poner debugs para conocer lo que está ocurriendo en cada punto en concreto, timestamps para que se ejecuten cada cierto tiempo y podemos gestionar eventos y colas de mensaje mqtt y mucho más.
Cómo instalar Node-Red en Portainer
Vamos a seguir el procedimiento habitual, accedemos a la sección “Stack” de Portainer y pulsamos en “Add stack”, en name introducimos “nodered” y pegamos en el editor las siguientes líneas:
version: '3.8'
services:
node-red:
container_name: nodered
image: nodered/node-red:latest
ports:
- "1880:1880"
restart: always
volumes:
- /docker/nodered/data:/data
environment:
- TZ=Europe/Madrid
Quedando de la siguiente forma:
Pulsamos el botón “Deploy the Stack” y automáticamente se descarga la imagen de Node-Red y se crea el contenedor.
Permisos en Node-Red
Node-Red necesita crear un fichero de configuración la primera vez, así que tenemos que darle permisos para que pueda crearlo, para ello paramos el contenedor pulsando en el botón “Stop” y lanzamos el comando:
sudo chown pi:pi -R /docker
Ahora iniciamos Node-Red pulsando el botón “Start” y en el log deberíamos de ver algo similar a la siguiente imagen:
Cómo acceder a Node-Red
Para accede a la interfaz gráfica de Node-Red tenemos que introducir en el navegador la dirección IP de nuestra raspberry seguida del puerto 1880:
Al acceder podremos ver la pantalla de bienvenida de Node-Red
Prueba Node-Red y MQTT
Ya vimos como instalar MQTT en Portainer, ahora vamos a probar que Node-Red es capaz de suscribirse a las colas y recibir mensajes.
Arrastramos los nodos “mqtt in” y “debug” al lienzo y los unimos.
El nodo debug va a imprimir todo lo que le llegue por la entrada, en este caso imprimirá “msg.payload” el payload del mensaje pero se puede cambiar para imprimir el mensaje entero en caso de necesitar más información.
Hacemos doble click en el nodo “mqtt in” para editarlo.
En el topic ponemos “prueba” esta es la cola a la que nos vamos a suscribir, de forma que todo lo que llegue a ella se enviará al nodo “debug”.
Y en server pulsamos en el icono del lápiz para configurar nuestro servidor Mqtt
Aquí solamente tenemos que modificar el server, poniendo la IP de la Raspberry (con localhost no funciAquí solamente tenemos que modificar el server, poniendo la IP de la Raspberry (con localhost no funciona) y en la pestaña “Security” ponemos el usuario y password que creamos cuando instalamos Mosquitto, finalmente pulsamos “Update” y “Done” para guardar los cambios.
instalamos Mosquitto, finalmente pulsamos “Update” y “Done” para guardar los cambios.
La configuración del servidor MQTT solo tendremos que realizarla la primera vez.
Cada vez que se realicen modificaciones en Node-Res hay que pulsar “Deploy” para que se apliquen los cambios.
Para ver lo que imprime el nodo “debug” hay que tener activa la pestaña “Debug
Añadimos el nodo “inject” y el nodo “mqtt out” al lienzo y los unimos.
Si ahora pulsamos el botón del nodo “inject” este envía por mqtt el timestamp (hora actual) a la cola “pruebas” a través del nodo “mqtt out”, al mismo tiempo el nodo “mqtt in” que está suscrito a la cola “prueba” recibe la información y la envía al nodo “debug”
Errores comunes en Node-Red
1.- Error: EACCES: permission denied, copyfile ‘/usr/src/node-red/node_modules/node-red/settings.js’ -> ‘/data/settings.js’
Si aparece en los logs este error, quiere decir que Node-Red no tiene permisos para crear el fichero de configuración, revisa la sección donde se explican los permisos de Node-Red.