Primeros pasos en Nodered

Objetivos

 

  • Empezando con Nodered.
  • Primer Flow Nodered
  • Nodos y propiedades.
  •  

    Material requerido

     

     Vista mayor  Una Raspberry Pi

     

    Empezando con Nodered

     

    Cuando entras a Nodered por primera vez, ves una extraña pantalla con bloques de colorines a la izquierda con aspecto amenazador:

    pantalla bienvenida nodered

    En realidad, te acostumbraras en seguida. Los bloques de la izquierda, o Nodos, representan distintos módulos que realizan tareas concretas que iremos viendo. Además, están agrupados en función de su objetivo y si te fijas al principio donde dice “common” y más abajo “function” se pueden colapsar y expandir mediante la flecha a fin de organizar los agrupamientos

    Si te vas moviendo mas abajo en la columna de nodos, veras que hay mas grupos como “network”, “sequence”, “parser” etc. Cada uno de los nodos de una categoría te permite realizar una función concreta y, esto es importante, debes saber que no estas limitado a los que te viene de serie sino que puedes añadir un numero cada vez mayor de categorías y nodos adicionales.

    Nodered está diseñado de forma modular en base a código Open Source y anima a que se desarrollen nodos adicionales que puedes descargar e importar a tu paleta para incrementar tu abanico de opciones, pero ya iremos hablando de esto más adelante.

    De momento y para ir cogiendo confianza vamos a hacer el Hello world en Nodered.

     

    Tu primer Flow en Nodered

     

    Lo primero es que los programas no se llaman programas en Nodered, se llaman Flows (Flujos). ¿Por qué nos castigan así? Bueno, en primer lugar, todas las herramientas tienden a desarrollar un lenguaje propio, pero en segundo lugar es importante entender que el paradigma de Nodered es el de flujos de trabajo, que se representan visualmente como nodos y conexiones entre ellos. En otras nomenclaturas a esto se le llama Procesos, y es una técnica potente de programación, que simula el flujo de información a lo largo de una vía imaginaria que sigue la información.

    También es importante entender que los nodos de Nodered trabajan con mensajes que llevan una carga útil y que pueden procesar (Convertir) y reenviar al siguiente nodo de acuerdo a ciertas reglas predefinidas (Calma, enseguida iremos viendo un ejemplo)

    Vale, pues. Una vez soltado el pequeño rollito de conceptos vamos con un ejemplo de como sacar un mensaje a consola en Nodered. Busca en el panel de nodos a la izquierda el bloque “common” un nodo llamado inject y arrástralo a la zona de trabajo:

    area de trabajo

    Nodered le cambiará el nombre y podrá timestamp cuando lo sueltes para despistar. Este modulo sirve para generar diferentes mensajes. Veamos cómo, haz doble clic en medio del bloque y te saldrán las propiedades del nodo:

    panel de propiedades del nodo

    Todos los nodos tienen al menos estas dos propiedades básicas. El payload, o carga útil, y un topic, aunque podemos definir más o menos según nos interese, pero por ahora pincha el desplegable a la izquierda de timestamp y veremos sus posibilidades:

    ejemplo de seleccion

    Timestamp es una marca de fecha / hora, pero también tenemos otras opciones como número, booleanos y la que nos interesa ahora, string. Si eliges string te permitirá escribir un mensaje de texto sencillo como “Prometec”

    string

    Para validar pulsa el botón rojo que pone “Done” y salvara el contenido que hayas escrito y veras que se refleja en el nombre que figura en el nodo de la pantalla principal:

    cambio visble de propiedades

    Hemos configurado el nodo inject para que su payload sea una string de valor “Prometec”. Toca a hora enviarla a la consola de texto y para eso vamos a usar en nodo “debug” que está justo debajo del inject. Arrástralo a la derecha del nodo prometec.

    Finalmente pincha en el circulito a la derecha de prometec y sin soltar conéctalo con el circulito a la entrada de debug:

    area de trabajo

    Cuando conectas así dos nodos significa que la salida del origen se envía a la entrada del segundo para su proceso (Y de ahí el nombre de Flujo). El nodo debug envía el mensaje contenido en payload a la salida elegida (Por defecto a la consola de debug) con un doble clic en el nodo aparece la ventana de propiedades del nodo

    cambiando propiedades

    La salida puede ser una serie de cosas (Compruébalo) pero aquí vamos a dejar el valor por defecto que es que imprima el valor del payload.

    Para poner en marcha el programa, digo flujo, tienes que pulsar el botón rojo arriba a la derecha que reza “Deploy”. Los mil primeros problemas que tendras porque algo no funcione serán porque te has olvidado de hacer el deploy. Pero cuando lo hagas, si pulsas el botoncito cuadrado a la izquierda:

    enviar mensaje

    Cada vez que pulses el botón se enviara el mensaje

    Cada vez que pulses el botón enviaras el mensaje predefinido en el payload : “Prometec” a la consola que está a la derecha (Asegúrate elegir el tercer icono del debug)

    mensajes inyectados

    Bueno pues ya tenéis vuestro primer Flow en Nodered, enhorabuena. Ahora si queremos salvar nuestro programa (Para documentar el progreso humano, principalmente) pincha en las 3 rayitas a la derecha del Deploy y un desplegable te permitirá elegir import y export que es la forma rara de llamar cargar y guardar (La nomenclatura siempre tocándonos los pinreles)

    menu desplegable

     

    Añadiendo una función

     

    Bueno, si te  fijas en el texto que se muestra en la consola, verás tres líneas:

    salida de informacion

    La primera es el formato humano de la fecha y el ID del nodo que lo genera (Creo), La segunda línea indica que es lo que imprime (El payload del mensaje) y la tercera es el formato interno de fecha como el numero de segundos transcurridos desde el 1 de enero de 1970 (Típico de Linux)

    Está muy bien, pero a modo de ejercicio y para mostraros el nodo función, que es de los mas interesantes, vamos a hacer el ejercicio de convertir este numero que representa la fecha, en una string de fecha hora en representación legible para los primates racionales como 23-11-2022

    Para eso tienes que saber que el nodo función, te permite aplicar un programa JavaScript sobre el mensaje que recibe, para transformarlo y hacer con el lo que sea, o simplemente ejecutar un código JavaScript. Busca en la columna derecha de nodos la sección “function” y arrastrar el primero, function, a la zona de flujos y sitúalo entre el nodo inject y el debug  de modo que las líneas que lo unen se marque con trazos discontinuaos y lo sueltas, de modo que quede unido entre los dos:

     

  • En caso de que no tengas suficiente espacio entre los primeros nodos, simplemente, aleja el uno del otro haciendo clic y arrastrándolo hacia donde quieras para hacer espacio.
  • Comprobaras que el vinculo es como de goma extensible[/fancy-ul] [/three-fourth].
  •  

    Acabaras con algo así, con el módulo de función insertado en medio:

    insertando un nodo function en medio

    Vamos a usar el nodo function para hacer que nos transforme la fecha numérica del mensaje, en un String de tipo y formato fecha. Para ello haz clic clic en el módulo function para sacar sus propiedades. Asígnale el nombre que prefieras y copia el JavaScript siguiente en la pestaña “On Message”, como se ve en la imagen:

    msg.payload = new Date(msg.payload).toISOString();
    return msg;

    cambiando paylod

    Este código JavaScript recibe el payload del mensaje entrante y lo convierte en una cadena de texto con formato fecha. Pulsa Done y luego Deploy y cuando pulses en el boto del nodo inject veras:

    cambios en la salida

    Una de las virtudes de Nodered, es que dispone de la capacidad de ejecutar código JavaScript en nodos de función, lo que te permite una potencia excepcional de tratamiento de esas cadenas de textos. Aquí os dejo un pequeño video con el proceso completo por si algo no ha quedado muy claro: