Node-RED es un motor de flujos con enfoque IoT, que permite definir gráficamente flujos de servicios, a través de protocolos estándares como REST, MQTT, Websocket, AMQP… ademas de ofrecer integración con apis de terceros, tales como Twitter, Facebook, Yahoo!…
Node-RED puede instalarse en multitud de Sistemas Operativos y Hardware, el principal requisito es que pueda instalarse Node.js: https://nodejs.org/es/
Versiones soportadas de node.js: https://nodered.org/docs/faq/node-versions
Instalación de Node-RED: https://nodered.org/docs/getting-started/
- Docker: https://nodered.org/docs/getting-started/docker
- Local: https://nodered.org/docs/getting-started/local
- Windows: https://nodered.org/docs/getting-started/windows
- Raspberry Pi: https://nodered.org/docs/getting-started/raspberrypi
- AWS: https://nodered.org/docs/getting-started/aws
- Microsoft Azure: https://nodered.org/docs/getting-started/azure
Instalar Node-RED en Raspberry Pi
Node-Red no viene instalado en Raspberry Pi pero se puede hacer desde add/remove software.
La forma es desde Menú – Preferencias – Software Recomendado. También se instala de esta manera, se puede actualizar usando sudo apt-get upgrade.
Luego se puede ejecutar manualmente con el comando “node-red-star” o :
Para iniciar Node-RED en el arranque de Raspberry Pi de forma automática usar:
- sudo systemctl enable nodered.service
Más información https://nodered.org/docs/hardware/raspberrypi
Para comprobar que funciona abrir en un navegador http://ip-raspberry:1880
Para encontrar más nodos y ejemplos de flows ver https://flows.nodered.org/ estos nodos se pueden instalar desde el palette.
Los nodos también se pueden instalar mediante npm. Para añadir nodos adicionales primero debe instalar la herramienta npm, ya que no está incluida en la instalación predeterminada de Raspbian. Esto no es necesario si ha actualizado a Node.js 8.x.
npm es el sistema de gestión de paquetes por defecto para Node.js
Los siguientes comandos instalan npm y luego lo actualizan a la última versión.
- sudo apt-get install npm (Instala npm)
- sudo npm install -g npm (Actualiza npm a la última versión en modo global)
Para poder ver la paleta e instalar nodos, reiniciar el servicio:
- sudo systemctl restart nodered.service
Y luego para instalar un nodo:
- cd ~/.node-red
- npm install node-red-{example node name}
node-red-admin es la herramienta de línea de comandos le permite administrar de forma remota una instancia de Node-RED: https://nodered.org/docs/user-guide/node-red-admin
Para instalar node-red-admin: sudo npm install -g node-red-admin
Para ver todos los nodos instalados: node-red-admin list
Instalación Recomendada de Node-Red en Raspberry Pi
La instalación recomendada para tener la última version de Node-RED en Raspberry Pi: https://nodered.org/docs/getting-started/raspberrypi
Comprobar la versión de node.js y npm instalada:
- npm –version
- node –version
Ejecutar el script, ojo cuesta un tiempo instalar:
- bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Este script sirve para instalar Node.js, npm y Node-RED en una Raspberry Pi. El script también se puede utilizar para actualizar una instalación existente cuando hay una nueva versión disponible.
El script que se descarga y ejecuta puede verse en: https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered
Este script eliminará las versiones de Node.js anteriores a la versión 7.x, y Node-RED y si es necesario, reemplaza con con Node.js 10.x LTS (dubnium) y el último Node-RED de Npm.
También mueve cualquier nodo Node-RED que esté instalado globalmente en su usuario ~/.node-red/node_modules, y los agrega a su package.json, para que puede administrarlos con el administrador de paletas.
También intenta ejecutar ‘npm rebuild’ para actualizar los nodos adicionales que haya instalado que puede tener un componente binario nativo. Si bien esto normalmente funciona bien, necesitas para comprobar que tiene éxito para su combinación de nodos instalados.
Estos son los pasos que realiza:
- Stop Node-RED
- Remove old version of Node-RED
- Remove old version of Node.js
- Install Node.js
- Clean npm cache
- Install Node-RED core
- Move global nodes to local
- Install extra Pi nodes
- Npm rebuild existing nodes
- Add shortcut commands
- Update systemd script
Los errores de instalación se pueden ver en: /var/log/nodered-install.log
Más información:
- https://nodered.org/docs/getting-started/raspberrypi
- http://pdacontroles.com/instalacion-completa-node-red-en-raspberry-pi/
- https://diyprojects.io/node-red-installation-discovery-raspberry-pi3/
Instalar Node-RED en CentOS
La instalación en local se hace siguiendo este enlace: https://nodered.org/docs/getting-started/local
Es recomendable crear un usuario nodered y hacer la instalación con ese usuario.
Para instalar Node-RED es necesario una versión soportada de Node.js: https://nodered.org/docs/faq/node-versions
Para versiones de Linux basadas en RPM como Red HAT, fedora o CentOS usar esta instalación: https://github.com/node-red/linux-installers. Funciona perfectamente.
Usar este script: bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/rpm/update-nodejs-and-nodered)
Y luego activar el inicio automático en el arranque: sudo systemctl enable nodered.service
Para actualizar usar el mismo script que el de instalación.
Instalación Manual en CentOS
Sigue leyendo solo si eres usuario avanzado, sino te recomiendo que instales Node-RED con el script.
Primero instalar node.js en CentOS:
- https://linuxize.com/post/how-to-install-node-js-on-centos-7/
- https://www.digitalocean.com/community/tutorials/how-to-install-node-js-on-centos-8-es
Hay dos formas de instalar nodejs:
- usando yum con el repositorio
- Usando la utilidad n de npm
Para instalar la última version con yum: https://tecadmin.net/install-latest-nodejs-and-npm-on-centos/
Usando la utilidad n de npm para actualizar a la última versión de nodejs con estos comandos:
- Clear NPM’s cache:
sudo npm cache clean -f - Install a little helper called ‘n’
sudo npm install -g n - Install latest stable Node.js version
sudo n stable
Más información: https://tecadmin.net/upgrade-nodejs-via-npm/
Para poder instalar add-ons: sudo yum install gcc-c++ make
Para actualizar npm: npm install -g npm
Y luego instalar node-RED (use the node package manager, npm, that comes with Node.js): sudo npm install -g –unsafe-perm node-red
Running Node-RED: https://nodered.org/docs/getting-started/running
- poner node-red
- abrir firewall sudo firewall-cmd –permanent –add-port=1880/tcp
- firewall-cmd –reload
Arrancar node-red en el arranque: https://nodered.org/docs/hardware/raspberrypi#adding-autostart-capability-using-systemd
Más información para la instalación: https://ketandesai.co.uk/os/install-node-red-on-centos-7/
Hay que cambiar /lib/systemd/system/nodered.service el usuario pi por el usuario root en este caso o el usuario que ha instalado node-red
User=root
Group=root
WorkingDirectory=/root
Creo un usuario del grupo sudores llamado nodered y contraseña para que ejecute los servicios en el servidor!!!
Para actualizar node-red instalado en local https://nodered.org/docs/getting-started/local usar el comando: sudo npm install -g –unsafe-perm node-red
NOTA: no olvidar actualizar a la última versión de nodejs.
Para configurar:
Para securizar:
Comandos básicos de npm: https://vortexbird.com/comandos-basicos-de-npm/
Instalar Node-RED en Local
Para instalar Node-RED en local, ya sea Windows, Linux o MacOS seguir https://nodered.org/docs/getting-started/local
Iniciar Node-RED en el inicio: https://nodered.org/docs/faq/starting-node-red-on-boot
Instalación en Windows:
- https://www.alexmedina.net/instalar-nodered-windows/
- http://pdacontroles.com/instalacion-node-red-en-windows/
Instalar Node-RED en Docker
Node-RED en docker: https://nodered.org/docs/getting-started/docker
Docker hub oficial de Node-RED desde la version 1.x: https://hub.docker.com/r/nodered/node-red/
Imagen de Node-RED: https://github.com/node-red/node-red-docker/blob/master/README.md
Para versiones antiguas: https://hub.docker.com/r/nodered/node-red-docker
La forma más sencilla de ejecutar Node-RED en docker:
- docker run -it -p 1880:1880 –name mynodered nodered/node-red
Las imágenes Node-RED se basan en imágenes oficiales de Node JS Alpine Linux para mantenerlas lo más pequeñas posible. El uso de Alpine Linux reduce el tamaño de la imagen construida, pero elimina las dependencias estándar que se requieren para la compilación del módulo nativo.
Una vez que está Node-RED ejecutándose con Docker, debemos asegurarnos de que los nodos o flujos agregados no se pierdan si se destruye el contenedor. Estos datos de usuario pueden conservarse montando un directorio de datos en un volumen fuera del contenedor. Esto puede hacerse usando un montaje de enlace o un volumen de datos con nombre.
Node-RED utiliza el directorio /data dentro del contenedor para almacenar los datos de configuración del usuario.
Para guardar el directorio de usuario Node-RED dentro del contenedor en un directorio host fuera del contenedor, puede usar el siguiente comando. Para permitir el acceso a este directorio de host, el usuario de node-red (uid predeterminado = 1000) dentro del contenedor debe tener el mismo uid que el propietario del directorio de host. Esto puedes ser forzado con el comando sudo chown -R 1000:1000 path/to/your/node-red/data. Más información https://github.com/node-red/node-red-docker/wiki/Permissions-and-Persistence
docker run -it -p 1880:1880 -v /home/pi/.node-red:/data –name mynodered nodered/node-red
Montar un volumen de datos dentro del contenedor en esta ruta de directorio significa que la configuración de usuario pueden guardarse fuera del contenedor e incluso compartirse entre instancias de contenedor.
En este ejemplo, el directorio host /home/pi/.node-red está vinculado al directorio contenedor /data
El contenedor utiliza el directorio /data como el directorio de configuración del usuario. Para agregar nodos adicionales, puede abrir el shell en el contenedor y ejecutar los comandos de instalación npm adecuados:
- docker exec -it mynodered /bin/bash (Abre un shell en el contenedor)
- cd /data
- npm install node-red-node-smooth (una vez en el contenedor npm instala el nodo)
- exit
- docker stop mynodered
- docker start mynodered (reiniciar contenedor)
Para montar /data en un path externo:
- docker run –restart always -d -p 1880:1880 -v /opt/docker_volumes/nodered_data:/data –name nodered nodered/node-red
Para que funcione hay que dar permisos de escritura al directorio /opt/docker_volumes/nodered_data
Para actualizar el contendor:
- docker pull nodered/node-red
- docker stop mynodered
- docker start mynodered
Para cambiar la time zone del contenedor:
- docker run -it -p 1880:1880 –name mynodered -e TZ=Europe/London nodered/node-red
Docker de node-red en raspberry pi: https://domology.es/docker-de-node-red-en-raspberry-pi/
Más información: https://nodered.org/docs/getting-started/docker
Enlazar Contenedores
Puede vincular contenedores «internamente» dentro del docker runtime utilizando la opción –link.
Por ejemplo, tengo un contenedor de un broker MQTT simple disponible como:
- docker run -it –name mybroker eclipse-mosquitto
No es necesario exponer el puerto 1883 a nivel global a menos que desee.
A continuación, ejecute docker, pero esta vez con un parámetro de enlace (nombre: alias)
- docker run -it -p 1880:1880 –name mynodered –link mybroker:broker nodered/node-red
Ejecutar Node-RED
Una vez instalado Node-RED ejecutar el comando node-red
La salida del registro le proporciona varias piezas de información:
- Las versiones de Node-RED y Node.js
- Cualquier error cuando intentó cargar los nodos de la paleta
- La ubicación de su archivo de configuración y directorio de usuarios
- El nombre del archivo de flujos que está utilizando.
Nodo-RED utiliza el fichero flows_<hostname>.json como el archivo de flujos predeterminado. Puede cambiar esto proporcionando el nombre del archivo de flujos como argumento para el comando node-red
Uso de la línea de comandos de node-red: https://nodered.org/docs/getting-started/local#command-line-usage
Más información: https://nodered.org/docs/getting-started/local
Pingback: Saber más Curso Raspberry Pi y Node-RED | Aprendiendo Arduino
Pingback: Saber Más Node-RED Developer | Aprendiendo Arduino
Pingback: Saber Más Fundamentos IoT CEFIRE | Aprendiendo Arduino
Pingback: Saber Más Fundamentos IoT para Formación Profesional | Aprendiendo Arduino