Node-RED es una herramienta creada por IBM y fuertemente orientada a IOT, se trata de un software bastante sencillo de utilizar sobre todo con Raspberry Pi.
Node-RED es una herramienta muy potente que sirve para comunicar hardware y plataformas de software de una forma muy rápida y sencilla. Simplifica enormemente la tarea de programar del lado del servidor gracias a la programación visual.
Fue creada por Nick O’Leary y Dave Conway-Jones del grupo IBM. Su objetivo es dar solución a la complejidad que surge cuando queremos integrar nuestro hardware con otros servicios, básicamente es una colección de nodos cada uno con una función específica y que en si mismo es una capa de software que cubre la complejidad de su trabajo haciendo la vida del programador mas simple, estos nodos se conectan entre si lo que origina un flujo de datos entre nodos. Aparte de los nodos disponibles por defecto existen repositorios de nodos donde los usuarios desarrollan nodos de acuerdo a sus propias necesidades y los publican para que podamos agregarlos a NODE-RED.
Su funcionamiento tiene los pilares de NodeJS y la librería de JavaScript D3.js.
NodeJS proporciona la potencia suficiente para que Node-RED sea fiable y escalable. NodeJS es un software muy potente que permite la programación en JavaScript del lado del servidor.
Sus ventaja más importante es que está optimizado para poder tratar múltiples conexiones concurrentes de una manera óptima. Es el mayor ecosistema de código abierto que existe en el mundo y está siendo utilizado por empresas como PayPal y Netflix.
Por otro lado, D3.js es el encargado de la interfaz web, Node-RED es accesible a través de un navegador es decir, sólo necesitamos acceder a una página web para poder crear nuestros propios sistemas, no hace falta instalar ningún entorno de desarrollo o IDE todo se trabaja desde el navegador, podremos arrastrar y conectar nodos con diferentes funcionalidades para crear flujos de datos que hagan una determinada cosa.
Por ejemplo, podemos suscribirnos a un topic de MQTT, recibir un dato de temperatura y humedad y mostrarlo en un panel de control a través de una página web.
Si bien no es necesario tener que escribir una línea de código, esto no quiere decir que no debamos conocer la programación, al contrario.
Se requiere unos altos conocimientos de lógica y programación para desarrollar proyectos con Node-RED sobre todo si consideramos que podemos conectar con servicios de terceros como FTTT, ThingSpeak, Google Home, ThingerIO, etc.
Node-RED es de código abierto y está mantenido por IBM, se puede instalar en cualquier sistema operativo incluyendo Raspbian para Raspberry Pi.
Como no tenemos que profundizar en tecnologías complejas difíciles de implementar y programar esto permite crear prototipos muy rápidamente sin tener que invertir horas y horas programando en un lenguaje de alto nivel.
Para ver su funcionamiento vemos un ejemplo simple donde un sensor HDC1000 (Temperatura y Humedad) envía datos a un ESP32, también vamos a controlar de manera remota un LED conectado en el pin 5 de la placa con el ESP32 todo esto conectado a la red Wi-Fi funcionando mediante MQTT.
Los nodos necesarios para hacer esto son los siguientes.También se ha definido un DashBoard donde los los datos son mostrados y también podemos actuar sobre el estado del LED.
Se puede acceder a la herramienta NOD-RED desde cualquier lugar con el navegador apuntado a la dirección IP donde se encuentre y el puerto 1880, el DashBoard se encuentra en la misma dirección con el agregado 1880/ui.
El código para el ESP32 es el siguiente.
El servidor MQTT usado en este ejemplo se ejecuta en una Raspberry PI al igual que NODE-RED que se conecta a ese servidor y todo el conjunto es subido a la red Wi-Fi desde donde es accedido por cualquier navegador.
Como se puede ver en el vídeo una vez que los datos están publicados se los puede consultar incluso desde cualquier móvil en cualquier lugar del mundo.
Mas info en Esta dirección de correo electrónico está siendo protegida contra los robots de spam. Necesita tener JavaScript habilitado para poder verlo.