Salta el contingut

Node-RED

Què és?

Node-RED és una eina de programació visual basada en flux (flow-based programming) construïda sobre Node.js. Permet connectar dispositius, APIs i serveis de manera senzilla mitjançant una interfície de drag-and-drop al navegador.

Característiques principals

  • Programació visual amb nodes
  • Extensa biblioteca de nodes (palettes)
  • Integració nativa amb MQTT, HTTP, WebSocket
  • Fàcil integració amb serveis IoT
  • Exportació/importació de fluxos en format JSON

Referència oficial: Node-RED Docker

Instal·lació amb Docker

1. Crear xarxa Docker (si no existeix)

docker network create xarxa_IOT

2. Crear carpetes

sudo mkdir -p /opt/docker/node-red/data/
chown 1000:1000 /opt/docker/node-red/data/
chmod 750 /opt/docker/node-red/data/
cd /opt/docker/node-red/

L'usuari 1000 és l'usuari node-red dins del contenidor.

3. Docker Compose

services:
  nodered:
    image: nodered/node-red:4.1.6-22
    container_name: nodered
    restart: unless-stopped
    ports:
      - "1880:1880"
    environment:
      - TZ=Europe/Madrid
    volumes:
      - /opt/docker/node-red/data:/data
    networks:
      - xarxa_IOT

networks:
  xarxa_IOT:
    external: true

4. Iniciar el servei

docker compose up -d

Accés

  • URL: http://ip:1880

Accés per port forwarding (sense obrir el port)

Executar la comanda ssh des del nostre ordinador:

ssh -i .ssh/clauprivada ubuntu@adreçaip -L 1880:localhost:1880
Mentre la connexió ssh estigui establerta, tenim el port 1880 obert en el nostre localhost, i el tràfic es redirigeix al localhost:1880 del servidor Per tant, podem anar a la url:

  • URL: http://localhost:1880

Configurar autenticació

Per defecte, Node-RED no requereix autenticació. Per habilitar-la:

1. Generar hash de password

docker exec -it nodered node-red admin hash-pw

Introduir el password i copiar el hash generat (format $2b$...).

2. Editar settings.js

Editar l'arxiu /opt/docker/node-red/data/settings.js i afegir:

adminAuth: {
    type: "credentials",
    users: [{
        username: "admin",
        password: "$2b$08$HASH_GENERAT",
        permissions: "*"
    },
    {
        username: "viewer",
        password: "$2b$08$ALTRE_HASH",
        permissions: "read"
    }]
},

3. Reiniciar el contenidor

docker restart nodered

Instal·lar nodes addicionals

Des de la interfície web

  1. Anar a Menu (≡) → Manage palette
  2. Pestanya Install
  3. Cercar el node desitjat i clicar Install

Des de la línia de comandes

docker exec -it nodered npm install node-red-contrib-influxdb
docker restart nodered

Nodes útils per IoT

Node Descripció
node-red-contrib-influxdb Connexió amb InfluxDB
node-red-contrib-modbus Comunicació Modbus
node-red-dashboard Crear dashboards web
node-red-contrib-opcua Comunicació OPC-UA
node-red-contrib-telegrambot Integració amb Telegram

Exemple: Rebre dades MQTT i enviar a InfluxDB

  1. Afegir node mqtt in i configurar:
  2. Server: mqtt:1883
  3. Topic: sensors/#

  4. Afegir node json per parsejar el missatge

  5. Afegir node influxdb out i configurar:

  6. Server: http://influxdb3:8181
  7. Database: IoT

  8. Connectar els nodes i fer Deploy

Ports

Port Descripció
1880 Interfície web i API