Cómo instalar Node-Red en Portainer

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:

Node Red Docker Compose
Node Red Docker Compose

Pulsamos el botón “Deploy the Stack” y automáticamente se descarga la imagen de Node-Red y se crea el contenedor.

Node Red container en Portainer
Node Red container en Portainer

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:

Node Red log
Node Red log

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:

http://raspberryip:1880

Al acceder podremos ver la pantalla de bienvenida de Node-Red

Node Red pantalla bienvenida
Node Red pantalla bienvenida

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.

Node Red mqtt out
Node Red mqtt out

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

Node Red Mqtt topic
Node Red Mqtt topic

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.

Node Red Mqtt broker node
Node Red Mqtt broker node

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

Node Red debug
Node Red debug

Añadimos el nodo “inject” y el nodo “mqtt out” al lienzo y los unimos.

Node Red inject mqtt out
Node Red inject mqtt out

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”

Node Red prueba mqtt
Node Red prueba mqtt

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.

Deja un comentario