Biblioteca Node-RED

Node-RED dispone de una biblioteca de nodos, flujos y colecciones que la comunidad alimenta, donde obtener muchos recursos para la programación de Node-RED.

Los nodos de Node-RED se empaquetan como módulos y se publican en el repositorio público de npm https://www.npmjs.com/. Una vez publicados en npm, se pueden agregar a la biblioteca de flujo mediante un formulario.

Node-RED Library: https://flows.nodered.org/

Para añadir un nodo a Node-RED: https://nodered.org/docs/getting-started/adding-nodes

  • Usando el editor en gestor de paleta: https://nodered.org/docs/user-guide/editor/palette/manager 
  • Instalar desde npm con el comando npm install <nombre-paquete>
  • Con el fichero package.json que se genera en los proyectos. npm agregará automáticamente módulos adicionales instalados a la sección de dependencias del archivo package.json en su directorio de usuario.

Para actualizar los nodos:

  • La forma más fácil de buscar actualizaciones de nodos es abrir el Administrador de paleta en el editor.
  • También puede buscar actualizaciones desde la línea de comandos usando npm. En su directorio de usuario, ~/.node-red ejecute el comando: npm outdated y luego para los paquetes actualizables usar npm install <name-of-module>@latest

Cualquiera que sea la opción que adopte, deberá reiniciar Node-RED para cargar las actualizaciones.

Más información sobre package.json: https://nodejs.org/en/knowledge/getting-started/npm/what-is-the-file-package-json/ 

Si quieres crear tu propio nodo: https://nodered.org/docs/creating-nodes/first-node 

Core Nodes

La paleta Node-RED incluye un conjunto predeterminado de nodos que son los bloques de construcción básicos para crear flujos.

Todos los nodos incluyen documentación que puede ver en la pestaña de la barra lateral Información cuando selecciona un nodo.

Core nodes: https://nodered.org/docs/user-guide/nodes

Cuando instala Node-RED, se inicia con un conjunto predeterminado de nodos. Hay 8 categorías principales de nodos en la instalación predeterminada: entradas, salidas, funciones, social, almacenamiento, análisis, avanzado y Raspberry Pi (si se instala en una Raspberry Pi). 

Más información: http://noderedguide.com/node-red-lecture-4-a-tour-of-the-core-nodes/ 

Nodos Más Usados

A 2/12/2020 hay 2924 nodos.

A 23/06/22 hay 3923 nodos.

Los nodos más descargados: https://flows.nodered.org/search?type=node&sort=downloads 

A 2/12/2020 hay 1731 flows.

A 23/06/22 hay 2202 flows.

Los más descargados: https://flows.nodered.org/search?type=flow&sort=downloads 

A 2/12/2020 hay 297 colecciones.

A 23/06/22 hay 672 colecciones.

Los más descargados: https://flows.nodered.org/search?type=collection&sort=downloads 

Usuarios Node-RED

Usuarios interesantes a los que seguir en https://flows.nodered.org/ 

Colecciones en Librería Node-RED

En la librería de Node-RED disponemos de colecciones, que son agrupaciones de nodos y flujos para agrupar y tener guardados.

Ejemplo de colección: https://flows.nodered.org/collection/cQjGjy9o32Rj

Colecciones interesantes:

Flujos en Librería Node-RED

En la librería de Node-RED disponemos de Flows creados por los usuarios y que comparten en https://flows.nodered.org/search?type=flow

Algunos Flujos destacados:

Monitorizar Raspberry Pi

Este flujo muestra en un dashboard la CPU, Memoria, uso del disco y temperatura del CPU de la Raspberry Pi donde está Node-RED. También hay dos botones para reiniciar y apagar el sistema. Es necesario instalar el nodo de Dashboard.

Flujo: https://flows.nodered.org/flow/fa6e4749ff7f9067fd6b5330bc54f9e3

Timer in Dashboard

Buen ejemplo de un timer en Dashboard: https://flows.nodered.org/flow/f24cb20846f57eec19ed617b25cb61ae

Este temporizador en NodeRED se puede implementar como un único subflujo configurable a través de variables de entorno. Para configurar el subflujo, debe proporcionar la iteración del temporizador (cada temporizador debe tener su propio número como: 1 | 2 |… n) y valores para la payload en el inicio y la parada (cadena).

Más información:

Nodos necesarios:

Schneider POWERLOGIC PM5150 via MODBUS TCP

Flow: https://flows.nodered.org/flow/7c058a46b095af5b8bd469c7c5328454

Subflow para leer variables del power meter PM5150 de Schneider.

Usa el nodo https://flows.nodered.org/node/node-red-contrib-modbus contra Schneider Power Logic PM5000 series: https://www.se.com/ww/en/product-range/61281-powerlogic-pm5000-series/

Se hace una función para leer y sacar un objeto json con los datos que devuelve el nodo de Modbus.

Nodos Adicionales

Hay más de 3000 nodos, algunos de los más interesantes son:

Extra Nodes: https://github.com/node-red/node-red-nodes 

Más información sobre nodos interesantes:

Nodos en Node-RED por Categorías

Básicos

Nodo Generador de Datos

Un nodo Node-RED para crear una cadena de valores de datos ficticios a partir de una plantilla. Útil para casos de prueba.

Nodo: https://flows.nodered.org/node/node-red-node-data-generator 

Node RBE

Un nodo Node-RED que proporciona informes por excepción (RBE) y capacidad de banda muerta. RBE = Report by Exception

El nodo se bloquea a menos que el valor entrante cambie – modo RBE, o cambie en más de una cierta cantidad (valor absoluto o porcentaje) – modos de banda prohibida.

Básicamente este nodo hace de filtro, de detector de flanco y puede servir para implementar histéresis.

Nodo: https://flows.nodered.org/node/node-red-node-rbe

Explicar: https://cookbook.nodered.org/basic/report-by-exception 

Nodo Exec

El nodo exec le permite tomar cualquier comando del sistema existente, programa de Python o script que haya escrito y ejecutarlo desde node-red e incorporar los resultados en su flujo. Ejecuta un comando de sistema y devuelve su salida. 

El nodo puede ser configurado para esperar hasta que el comando se complete, o para enviar su salida a medida que el comando la genera.

Para más información leer la información del nodo en Node-RED

El comando que se ejecuta puede ser configurado en el nodo o proporcionado por el mensaje recibido.

Más información: http://www.steves-internet-guide.com/using-the-exec-node/ 

Una mejora: https://flows.nodered.org/node/node-red-node-daemon. Similar al nodo exec pero este llama al comando en el momento de inicio y luego conduce cualquier entrada al nodo al STDIN del comando en ejecución, y alimenta cualquier STDOUT a la primera salida. Útil para monitorear procesos basados en la línea de comandos.

Otra alternativa: https://flows.nodered.org/node/node-red-contrib-bigexec

Ejecutar un Script de Python

Ejecutar un script de Python usando el nodo exec.

Leer: https://www.rodened.com/posts/how-to-use-python-in-node-red-1/

También se le pueden pasar argumentos y el script de python debe estar preparado para recogerlos en el formato.

Existe un nodo que ayuda a hacerlo: https://flows.nodered.org/node/node-red-contrib-pythonshell

Instalar python y crear entornos virtuales desde Node-RED: https://flows.nodered.org/flow/778859ca2503db35ff0e12341508efef/in/vL27qorhYRSn

Flujo para ejecutar python con nodo exec y template: https://flows.nodered.org/flow/0a6e073bcd6bda364fafd32699837cc7

También se pueden escribir funciones en python usando estos nodos:

Ejemplo:

[{"id":"8a505abb.d39b08","type":"tab","label":"pythontest","disabled":false,"info":""},{"id":"f4c14ccb.34202","type":"inject","z":"8a505abb.d39b08","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":140,"y":240,"wires":[["e7344e2.b6687b"]]},{"id":"e7344e2.b6687b","type":"template","z":"8a505abb.d39b08","name":"","field":"payload","fieldType":"msg","format":"python","syntax":"plain","template":"import time\n\nwhile True:\n    print(time.ctime())\n    time.sleep(10)\n","output":"str","x":320,"y":240,"wires":[["ab959ca2.a43e"]]},{"id":"ab959ca2.a43e","type":"file","z":"8a505abb.d39b08","name":"","filename":"pythontest.py","appendNewline":false,"createDir":false,"overwriteFile":"true","encoding":"none","x":510,"y":240,"wires":[["7cbbdbb3.3de674"]]},{"id":"7cbbdbb3.3de674","type":"exec","z":"8a505abb.d39b08","command":"python3 pythontest.py","addpay":false,"append":"","useSpawn":"true","timer":"","oldrc":false,"name":"","x":740,"y":240,"wires":[["44900928.37bb68"],[],[]]},{"id":"44900928.37bb68","type":"debug","z":"8a505abb.d39b08","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":970,"y":240,"wires":[]}]

HTTP Request

Hacer peticiones de HTTP desde Node-RED. Estos nodos están instalados por defecto.

HTTP requests

Nodo JSON

JSON, es una forma estándar de representar un objeto JavaScript como una cadena. Las API web suelen utilizarlo para devolver datos.

Si una propiedad de mensaje contiene una cadena JSON, primero se debe analizar en su objeto JavaScript equivalente antes de poder acceder a las propiedades que contiene. Node-RED proporciona un nodo JSON para realizar esta conversión.

Conversión desde/hacia JSON: https://cookbook.nodered.org/basic/convert-json 

Más información: http://www.steves-internet-guide.com/working-with-json-data-node-red/ 

Nodo File

Nodo file, lee y escribe ficheros locales en el host donde está instalada la instancia de Node-RED.

El nombre del archivo debe ser una ruta absoluta, de lo contrario será relativo al directorio de trabajo del proceso Node-RED, que normalmente es .node-red

Uso de nodo file storage en docker.

  • ruta de fichero en docker es /data
  • ruta por defecto /usr/src/node-red/

Nodo Lógica Booleana

Un conjunto de nodos lógica booleana mejorado para Node-RED: flow interruption node, blinker node, invert node, filter node, etc… con valores persistentes después del reinicio y más.

Nodos: https://flows.nodered.org/node/node-red-contrib-boolean-logic-ultimate 

Nodo Moment

Nodo interesante para manejo de fechas:

Con este nodo solucionas el problema de la fecha, que coge la fecha del contenedor o servidor si no está bien configurada.

Nodo Buffer Parser

Nodos de Node-RED para convertir valores hacia y desde búfer/matriz. Admite Big/Little Endian, BCD, intercambio de bytes y mucho más

Muy interesante para tratamiento de datos

Nodo: https://flows.nodered.org/node/node-red-contrib-buffer-parser 

Timers y Loops

Timer Switch 

Un temporizador de Node-RED fácil, intuitivo y preciso que le permite encender/apagar algo varias veces al día y admite horarios de tan solo 1 segundo.

Timer switch https://flows.nodered.org/node/node-red-contrib-timerswitch muy interesante para temporizaciones.

Uso con dashboard: https://www.instructables.com/id/Day-Timer-Using-Node-Red-With-Persistant-Memory/ 

Loop

Nodos Node-RED para ayudar al flujo de bucles.

Este módulo tiene 3 nodos:

Counter loop: https://flows.nodered.org/node/node-red-contrib-loop-processing 

Nodo Interval Length

Un nodo Node Red para medir la longitud del intervalo entre mensajes sucesivos

Nodo: https://flows.nodered.org/node/node-red-contrib-interval-length

Nodo BigTimer

BigTimer es un nodo de temporización Node-Red que ofrece una gama de funciones de temporización. Los BigTimers se pueden utilizar individualmente o en grupos. Soporte completo para crepúsculo/atardecer y variaciones también control día/semana/mes (y días especiales). El nodo ofrece salidas adecuadas para MQTT, voz y bases de datos. 

Nodo: https://flows.nodered.org/node/node-red-contrib-bigtimer

Más información: https://tech.scargill.net/big-timer/

Nodo Cron/Temporizar eventos

Un nodo programador flexible (cron, eventos solares, fechas simples) para Node-RED con control dinámico total y soporte de zona horaria

Nodo: https://flows.nodered.org/node/node-red-contrib-cron-plus

Más Básico: https://flows.nodered.org/node/node-red-contrib-cron

Flujo de cron programable desde Dashboard: https://flows.nodered.org/flow/79a66966a6cc655a827872a4af794b94

Nodo Chronos

Programación, manejo de colas, enrutamiento, filtrado y manipulación de nodos basados en el tiempo Node-RED.

Nodo: https://flows.nodered.org/node/node-red-contrib-chronos 

Nodo iCalc

Este módulo Node RED obtiene los eventos de una URL ical o de un servidor caldav.

Nodo: https://flows.nodered.org/node/node-red-contrib-ical-events 

Nodo ActionFlows

Crea patrones de diseño extensibles, en bucle y reutilizables para flujos. 

ActionFlows trae bucles fáciles de usar y características OOP (programación orientada a objetos) al paradigma de programación de flujo de Node-RED. Tres nodos le permiten crear flujos extensibles, con alcance, en bucle y priorizados. Las utilidades incluyen evaluaciones comparativas de rendimiento con precisión de nanosegundos. 

Para comprender ActionFlows, revise cada sección comenzando con Conceptos básicos a continuación y los ejemplos de cada sección.

Nodo: https://flows.nodered.org/node/node-red-contrib-actionflows 

Stop Timer

Envía el mensaje a través de la primera salida después de la duración del temporizador. Un nuevo mensaje recibido antes de que expire el temporizador reemplazará el mensaje existente y el temporizador se reiniciará, a menos que el nuevo mensaje tenga un payload de ‘stop’ o ‘STOP’, que detendrá el temporizador.

Nodo: https://flows.nodered.org/node/node-red-contrib-stoptimer-varidelay

Utilidades

Nodo Toggle

Toggle switch node para Node-red. Nodopara cualquier conmutador (físico o virtual), almacenando su estado y proporcionando operación de alternancia sin necesidad de utilizar nodos de función o variables de flujo / globales.

Nodo: https://flows.nodered.org/node/node-red-contrib-toggle

Nodo Enrutado de Mensajes

Un nodo Node Red para enrutar mensajes entre nodos.

Nodo: https://flows.nodered.org/node/node-red-contrib-msg-router 

Nodo Summariser

Nodo para hacer cálculos de arrays como suma, contar, etc…

Nodo: https://flows.nodered.org/node/node-red-contrib-summariser

Nodo Máquina de Estados

Nodo: https://flows.nodered.org/node/node-red-contrib-xstate-machine

Nodo para Manipular Nodos

Nodos Node-Red para manipular flujos usando la API nodejs

Nodo: https://flows.nodered.org/node/node-red-contrib-flowman  

Nodo VNC

Nodo para conectar a un servidor y mandar eventos de teclado, ratón, etc…

Nodo: https://flows.nodered.org/node/node-red-contrib-vnc

Comunicaciones

Nodo socketio

Socket.IO es una biblioteca de JavaScript para aplicaciones web en tiempo real. Permite la comunicación bidireccional en tiempo real entre servidores y clientes web. Tiene dos partes: una biblioteca del lado del cliente que se ejecuta en el navegador y una biblioteca del lado del servidor para Node.js. Ambos componentes tienen una API casi idéntica. Como Node.js, está impulsado por eventos.

Nodo: https://flows.nodered.org/node/node-red-contrib-socketio 

Otros:

Nodo Utilidades Browser

Nodos Node-RED para la funcionalidad del navegador, como carga de archivos, cámara y micrófono. Muy interesante para subir datos, tomar datos de la cámara y del micrófono.

Nodo: https://flows.nodered.org/node/node-red-contrib-browser-utils 

Cliente Telnet

Un nodo Node-red para gestionar un diálogo con un servidor telnet sobre IP. Está destinado a simplificar el envío de consultas a un servidor y tratar las respuestas de forma asincrónica

Nodo: https://flows.nodered.org/node/node-red-contrib-telnet-client 

RedLink

Redlink es una forma de conectar muchas instancias de Node-Red juntas usando conexiones de «servicio» soft para crear esencialmente un cluster de «servicio» usando hardware dispar para crear una gran red de Node-Red.

Redlink no utiliza un sistema de mensajería tradicional, en realidad crea una malla jerárquica de servicios web interconectados utilizando HTTPS-POST como transporte y un concepto de enrutamiento similar a OSPF.

Nodo: https://flows.nodered.org/node/node-red-contrib-redlink

LDAP Login

Nodo Node-RED para Microsoft Active Directory (LDAP).

Nodo: https://flows.nodered.org/node/node-red-contrib-ldap-login

Comunicaciones Industriales

Nodo Modbus TCP

Nodos de modbusTCP:

Recomendado https://flows.nodered.org/node/node-red-contrib-modbus

Con el nodo https://flows.nodered.org/node/node-red-contrib-modbus no solo puedo leer modbus sino que puedo montar un servidor modbus.

Como usar este nodo:

Para leer datos lo mejor es usar modbus-flex-getter donde la entrada es un objeto json con estos datos:

  • unitid (0..255 tcp | 0..247 serial) – overrides default Unit-ID
  • fc (1..4)
  • start address (0:65535)
  • quantity (1:65535) of coils/inputs/registers to be read from the start address

Modbus-getter y Modbus-read indicas en el nodo los registros a leer. Importante: If you have more than 10 nodes on one communication configuration, use the Modbus-Flex-Getter or think about multiple connections to your Modbus device, please! You can do polling with the Modbus-Getter and Modbus-Flex-Getter, too by using an injecting node with an interval.

Vídeo manejar Modbus: https://www.youtube.com/watch?v=uillyhwBoEU 

Nodo Open PLC

Este paquete permite configurar e interactuar con una instancia de OpenPLC desde Node-RED.

Open-PLC: https://flows.nodered.org/node/node-red-contrib-openplc

Nodo OPC DA

Un nodo Node-RED para hablar con dispositivos de automatización utilizando el protocolo OPC-DA

Nodo: https://flows.nodered.org/node/node-red-contrib-opc-da

Nodo OPC UA

Nodos: 

KNX

Controle su instalación KNX a través de Node-Red. KNX IN/OUT de nodo único con importador de direcciones de grupo ETS opcional. Fácil de usar y altamente configurable.

KNX en Node-RED: https://flows.nodered.org/node/node-red-contrib-knx-ultimate

BBDD

Nodo MySQL

Un nodo Node-RED para leer y escribir en una base de datos MySQL

Nodo de mysql: https://flows.nodered.org/node/node-red-node-mysql

Código del nodo de mysql: https://github.com/node-red/node-red-nodes/tree/master/storage/mysql 

Ejemplo: https://flows.nodered.org/flow/13c55d1aa11e864609e24fa534a1fa26

Ejemplo de uso: https://tech.scargill.net/tag/mqtt-and-mysql-on-node-red/ 

Insertar en BBDD. Función, que inserta el texto, usuario y localización de payload:

 texto = msg.payload.text;
 localizacion = msg.payload.location;
 usuario = msg.payload.user
 msg.topic = "INSERT INTO `tabla` (`Texto`, `Localizacion`, `Usuario`) VALUES ('" + texto + "', '" + localizacion + "', '" + usuario + "')";
 return msg; 

Nodo MongoDB

Un nodo Node-RED para guardar datos en una base de datos MongoDB.

Nodo MongoDB: https://flows.nodered.org/node/node-red-node-mongodb

SQL-Lite

Un nodo Node-Red para leer y escribir una base de datos sqlite local.

Flujo: https://flows.nodered.org/node/node-red-node-sqlite

SQL-lite https://randomnerdtutorials.com/sqlite-with-node-red-and-raspberry-pi/

Tutorial: http://developers.sensetecnic.com/article/using-sqlite-with-fred/

Nodo BBDD Connection Manager

Administrador de conexiones generalizado de Node-Red para permitir la agrupación de conexiones. 

Actualmente maneja los siguientes tipos de conexión:

  • postgreSQL
  • Casandra
  • DataStax
  • monetdb
  • neo4j
  • db2

Nodo: https://flows.nodered.org/node/node-red-contrib-connectionmanager

Nodo JSON DB

Nodo-RED Nodo para almacenar/recuperar fácilmente información almacenada en un archivo .json. Se implementa un almacenamiento en caché diferido para cargar la colección solo cuando sea necesario. Además, es posible configurar la colección para que solo escriba en el archivo json cuando Node-RED se detiene o se vuelve a implementar un flujo.

Nodo: https://flows.nodered.org/node/node-red-contrib-json-db

Ejemplo: https://flows.nodered.org/flow/fcd5e92e53d30abf73dcc9a21534e3d8 

Redes Sociales

Twitter

Nodo Twitter: https://flows.nodered.org/node/node-red-node-twitter

Nodo Twitter Stream: https://flows.nodered.org/node/node-red-contrib-twitter-stream 

Facebook

Nodo Facebook: https://flows.nodered.org/node/node-red-contrib-facebook

Nodo Facebook Messenger Writer: https://flows.nodered.org/node/node-red-contrib-facebook-messenger-writer 

Instagram

Nodo: https://flows.nodered.org/node/node-red-node-instagram 

IoT

Web Nodes

Una colección de nodos Node-RED para servicios web populares.

Paquete: https://flows.nodered.org/node/node-red-node-web-nodes 

Nodo no Oficial de Google Cloud

Nodo: https://flows.nodered.org/node/node-red-contrib-google-cloud 

Nodo TTN

Los nodos TTN para Node-RED reciben eventos y mensajes de dispositivos, así como también envían mensajes a los dispositivos.

TTN: https://www.thethingsnetwork.org/ 

Nodo: https://flows.nodered.org/node/node-red-contrib-ttn 

Decrypt Payload: https://flows.nodered.org/flow/845bb5b8cf788939dd261f472c289f77

Anuncio publicitario

5 comentarios en “Biblioteca Node-RED

  1. Pingback: Saber Más Node-RED Developer | Aprendiendo Arduino

  2. Pingback: Biblioteca Node-RED -

  3. Pingback: Saber Más Fundamentos IoT para Formación Profesional | Aprendiendo Arduino

  4. Pingback: Diario del Curso IoT, Smart Cities y Node-RED | Aprendiendo Arduino

  5. Pingback: Diario Curso: Raspberry Pi y Node-RED. 2ª ed | Aprendiendo Arduino

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.