En la entrada anterior, NodeRED I: Instalación y ejemplo base, realice una breve descripción de NodeRED, cómo levantar NoderRED en un contenedor Docker y un ejemplo básico. En la presente entrada, NodeRED2: nodos principales, describiré cómo usar ciertos nodos en un flujo de trabajo.
Los ejercicios que presento en la entrada son ejercicios sencillos cuyo objetivo es mostrar la funcionalidad de los nodos empleados. Lógicamente, existirán nodos que aparezcan en todos los ejemplos; como por ejemplo: el nodo inyector, para insertar valores e iniciar el flujo; y, el nodo debug, para escribir por consola un valor determinado y así poder depurar un flujo.
Los objetivos de los ejemplos son los siguientes:
- Ejemplo 1: profundizar en el uso del nodo de inyección.
- Ejemplo 2: definición de un flujo de trabajo el cual realiza una petición HTTP, trabaja con un fichero CSV y filtra valores para mostrar un mensaje.
- Ejemplo 3: definición de un flujo de trabajo el cual realiza una bifurcación (nodo switch).
Ejemplo 1: inyector programable.
Para la realización de una inyección de datos, se emplea el nodo de inyección en el cual se define en el objeto msg el valor que se quiere inyectar al flujo; y, para definir el intervalo de repetición, en el campo «Repeat» ubicado en la parte inferior del cuadro, definimos la frecuencia de repetición. En el ejemplo, hemos definido un intervalo de 3 segundos en el cual se inyecta el valor timestamp. El nodo siguiente es un nodo de tipo debug el el cual escribirá en consola en valor timestamp. Desde un punto de vista gráfico, la definición del flujo de trabajo queda representado en la siguiente imagen con la captura de pantalla de NodeRED:

Ejemplo 2: tratamiento de CSV
En el siguiente ejemplo, complicamos la funcionalidad y el número de nodos. El objetivo del flujo es el siguiente: realiza la descarga de un fichero CSV mediante una petición HTTP; escribir cada línea del fichero en consola; filtrar los valores del contenido del fichero; modificar el valor filtrado; y, por último, escribir en consola el valor modificado.
Los nodos empleados para realizar el flujo de trabajo son los siguientes:
- Nodo de red HTTP Request.- Dicho nodo realiza la invocación al servicio HTTP mediante una petición GET a una URL determinada y realiza la definición del tipo de salida.
- Nodo de parseo CSV.- Dicho nodo realiza el parseo del fichero definiendo el carácter separador de las columnas, el tipo de salida y qué salida define el nodo.
- Nodo función filter.- Dicho nodo realiza la lectura de un valor de entrada especificado en el objeto msg.paylod.mag y su valor de filtro, en nuestro caso, verifica todos los valores mayores o iguales a 7.
- Nodo función cambio.- Dicho nodo realiza la modificación de un valor, sustituyendo el valor de entrada correspondiente al campo msg.payload por el string «PANIC!».
- Nodo función debug.- Dicho nodo realiza la escritura de las trazas de depuración.
Desde un punto de vista gráfico, el flujo de trabajo descrito queda representado en la siguiente captura de pantalla con los elementos y la salida por la consola.

Ejemplo 3: bifurcaciones en flujos de trabajo
Para finalizar, definimos un flujo de trabajo compuesto de dos flujos. El primer flujo es aquel que trabaja con el nodo función plantilla el cual aplica una plantilla de texto al valor inicial insertado; dicha plantilla con el parseo del valor de entrada, se escribe en la consola de debug. El segundo flujo, define un flujo de trabajo con una bifurcación.
Los nodos empleados para realizar el flujo de trabajo son los siguientes:
- Nodo función plantilla.- Dicho nodo aplicará una plantilla de texto a los datos de entrada para tener una salida de un tipo determinado.
- Nodo función switch.- Dicho nodo define las N posibles salida en función de la lógica definida.
- Nodo función cambio.- Dicho nodo realiza una operación de suma incrementando en 10 el valor de entrada.
Desde un punto de vista gráfico, el flujo de trabajo descrito queda representado en la siguiente captura de pantalla con los elementos y la salida por la consola:

Con los ejemplos descritos nos permiten realizar una extrapolación del tipo de flujos de trabajo que podemos realizar con NodeRED para interconectar dispositivos y definir flujos de trabajo con una secuencia lógica de operaciones compleja. En las siguiente entradas, seguiré mostrando más ejemplos.
En la siguiente entrada, NodoRed III: nodo función, describiré mediante ejemplos la funcionalidad del nodo función.