Consulta Node-RED
Consulta Node-RED
Consulta Node-RED
Sistemas Embebidos
Diego González
La estructura mínima que maneja esta herramienta son los nodos, los mismos que son
arrastrados a través de la interfaz gráfica, la cual permite desarrollar una tarea en
concreto, tales como recibir una llamada HTTP, un mensaje MQTT o la activación de
un pulsador. Todos estos nodos se organizan en flujos que agrupan nodos que se
conectan entre ellos. Todo de una forma visual, sin la necesidad de programar. Dichos
flujos pueden ser definidos a través de protocolos estándares como REST, MQTT,
Websocket, AMQP, al igual que puede utilizar APIS de terceros tales como Twitter,
Facebook, Google, etc.
La guía oficial de Node-RED establece que, para la creación de un nodo se debe tener
en cuenta los siguientes parámetros:
Ser bien definidos en su propósito: Un nodo que expone todas las opciones
posibles para una API es potencialmente menos útil que un grupo de nodos con
un único propósito.
Ser simple de usar, independientemente de la funcionalidad subyacente:
Oculta la complejidad y evita el uso de jergas o conocimiento del dominio
específico.
Ser indulgente con los tipos de propiedades de mensaje que acepta: Las
propiedades de los mensajes pueden ser de tipo string, numbers, booleans,
Buffers, objects, arrays o null. Un nodo debería hacer la acción correcta cuando
se enfrente cualquier tipo de variable antes descrito.
Ser consiste en lo que ellos envían: Los nodos deberían documentar que
propiedades añaden a los mensajes y debería ser consistente y previsible en su
comportamiento.
Situarse al principio, a la mitad o al final de un flujo, no todos a la vez.
Capturar errores: Si un nodo lanza un error no capturado, Node-RED detendrá
todo el flujo ya que el estado del sistema ya se desconoce. Siempre que sea
posible, los nodos deben detectar errores o registrar manejadores de errores para
cualquier llamada asincrónica que realicen.
Un flujo Node-RED consiste en un fichero con el siguiente aspecto:
Dicha estructura está bajo el formato JSON, el mismo que puede ser utilizado para
diversas tareas de reconocimiento de datos.
A la hora de construir nodos es importante clasificarlos, dicho esto se tiene la siguiente
clasificación.
Nodos que sólo admiten entradas: Sólo admiten datos de entrada para ser
enviados a algún sitio como pueda ser una base de datos o un panel de control.
Nodos que sólo admiten salidas: Son los nodos que sólo ofrecen datos tras
recibirlos a través de diferentes métodos como por ejemplo un mensaje MQTT.
Nodos que admiten entradas y salidas: Estos nodos nos permiten la entrada de
datos y luego ofrecen una o varias salidas. Por ejemplo, podemos leer una
temperatura, transformarla en grados Celsius y enviarla a otro nodo.
Cada nodo se conecta con otro y establece comunicación a través de msg, lo cual les
permite estar en recibimiento y envío de datos con total libertad, de esa manera se evita
la pérdida de información.
Tipos de Nodos
Inject: para disparar un flujo manualmente. Inyecta una payload a un topic.
Debug: sirve para mostrar mensajes en la zona de debug de Node-RED. Puede
habilitarse o deshabilitarse.
Function: permite programar un nodo mediante JavaScript, pero es mejor
buscar nodos hechos que hagan la función deseada, por ejemplo, un
temporizador.
Change: se usa para modificar las propiedades de un mensaje sin usar funciones
Switch: permite que los mensajes sean enrutados a diferentes ramas de un flujo
mediante un conjunto de reglas contra el mensaje.
Template: se usa para generar texto usando las propiedades de un mensaje.
Ejemplo 1 Node-RED
Este flujo es sencillo, lo que hará es mostrar un texto por el panel de debug. Se arrastra
un nodo inject de la categoría input y un nodo debug de la categoría output al flujo. Se
tiene que conectar entre ellos arrastrando el punto de la parte derecha del nodo inject
sobre el punto de la parte izquierda del nodo debug.
A continuación, se va a editar el nodo inject. Haciendo doble click sobre el nodo se
abrirá un panel donde se muestra diferentes parámetros. En este panel se tiene que
seleccionar del menú desplegable donde pone Payload, la opción que pone String. En el
campo de texto se puede poner cualquier cosa como por ejemplo Hola mundo 🙂.
Para guardar la aplicación sólo se que dar a Deploy, el cual ha pasado de estar en un
color gris oscuro a rojo.
Para probar este primer flujo con Node-RED se tiene que abrir el panel de debug que
está situado en la parte derecha. Luego, se debe hacer click sobre la parte izquierda del
nodo inject.
Esto hará que en el panel debug aparezca el mensaje escrito en la configuración del
nodo inject.
Ejemplo 2 Node-RED
Para este ejemplo se utilizará el nodo MQTT para elaborar un sistema de alarma para
puertas, el cuál enviará datos a un servidor, el mismo que estará conectado a un
nodemcu (ESP8266) o a un Arduino.
Se tiene que arrastrar el nodo mqtt que se encuentra en la categoría input al flujo.
Ahora hay que configurarlo. Aquí es donde se ve la potencia de Node-RED. Cuando se
utiliza una tecnología, siempre se centra en lo superficial. En el caso de MQTT lo único
que se tiene que hacer es configurar el broker y el topic.
Al tratarse de un nodo de entrada, lo que hace es recibir los mensajes publicados en un
topic es decir, se suscribe al topic. Se hace doble click sobre el nodo para que abra el
panel de configuración.
En el panel de configuración MQTT se configurará primero el broker MQTT. Se hace
click en el lápiz que aparece en Server.
Esto abre un nuevo panel de configuración. Se coloca un nombre al broker MQTT por
ejemplo ALARMA PUERTA. En Server se debe colocar la IP donde está instalado el
broker MQTT y el puerto que utiliza, normalmente es el 1883.
Después de esta acción se regresa al panel de configuración del nodo mqtt y
automáticamente, habrá seleccionado el broker MQTT que se acaba de crear. Por
último, se rellena el campo de Topic. Debe ser el mismo que se colocó en Arduino o el
ESP8266, /casa/puerta/alarma. Una vez sea obtenido, se hace click en Done.
Node-RED Dashboard
Node-RED tiene un dashboard o tablero de instrumentos para crear y visualizar
dashboards para interactuar con los dispositos Iot. Antes que nada, es importante saber
que el nodo encargado de dicha tarea es Freeboard, el cual permite realizar nuestros
propios dashboard.
A continuación, se puede observar todos los widgets disponibles para dashboard que se
puede utilizar a la hora de elaborar uno de ellos.
Organización y Diseño de Dashboards
La pestaña dashboard (Tabs) permite organizar un dashboard por Pestañas (Tabs) y
grupos (Groups) dado que no tiene una herramienta de diseño propia, pero se considera
que esta manera es muy practica para diseñar sin preocuparse por la compatibilidad de
diseño en las pantallas de diferentes resoluciones en dispositivos como smartphones pc
y tablets.
Visualización desde PC
Dicho lo anterior este dashboard es compatible con cualquier dispositivo, lo que hoy en
día genera mejor adaptabilidad con el diseño de aplicaciones web para IoT.
Ejemplo Arduino + MQTT + Node-RED+ Dashboard
Para este ejemplo se realizará un dashboard usando dos potenciómetros que manden
datos a varios topic y se muestre en el dashboard, así como un led que pueda prenderse
y apagarse al pulsar un botón del dashboard y dos leds que se enciendan cuando se
supere el umbral de temperatura. Además, todos los datos serán almacenados en una
base de datos MariaDB previamente instalada.
En este flujo se ha usado nodos mqtt, los cuales son asignados a una IP de destino (base
de datos), además que en este flujo se hace peticiones de consultas, que ha su vez tienen
condiciones para activar sondas, luego de haber realizado dicha acción.
En este flujo se tiene un nodo de entrada fecha, el cual es conectado con otro nodo que
se encarga de transformarlo a un formato de fecha adecuado. Básicamente cada nodo
mqtt se conecta con nodos de tipo botón para realizar el encendido, apagado de sensores
y sondas.
En este flujo los nodos mqtt se conectan a los nodos de dashboard, los cuales permitirán
observar en tiempo real el desplazamiento de la temperatura, la humedad y las sondas.
Por último, este flujo se encarga de conectar todos los nodos mqtt a un nodo debug, el
cual permitirá visualizar los resultados esperados para cada acción establecida con
anterioridad.
Por último, es una muestra de toda la interfaz gráfica que se ha desarrollado con el
empleo correcto de cada nodo con su respectiva función, evitando fallos y obteniendo
resultados esperados con éxito.
Bibliografía
Aprendiendo Arduino. (s.f.). Recuperado el 17 de Enero de 2020, de Aprendiendo Arduino:
https://aprendiendoarduino.wordpress.com/tag/node-red-flow/
Barreiro, R. (15 de Diciembre de 2016). Blog de Sofia2 IoT Platform. Recuperado el 17 de
Febrero de 2020, de Blog de Sofia2 IoT Platform:
https://about.sofia2.com/2016/12/15/creacion-de-dashboards-con-node-red/
Dario, J. (s.f.). Programación Visual con Node-Red: Conectando el Internet de las Cosas con
Facilidad. Recuperado el 17 de Enero de 2020, de Programación Visual con Node-Red:
Conectando el Internet de las Cosas con Facilidad:
https://www.toptal.com/nodejs/programacion-visual-con-node-red-conectando-el-
internet-de-las-cosas-con-facilidad
Node-RED. (s.f.). Recuperado el 17 de Enero de 2020, de Node-RED: https://nodered.org/
PDAControl. (s.f.). Instalación Node Red dashboard. Recuperado el 17 de Febrero de 2020, de
Instalación Node Red dashboard: http://pdacontroles.com/instalacion-node-red-dashboard