Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

Autor: Oscar Gonzalez

Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

Tiempo de lectura: 21 minutos

En ésta guía aprenderás cómo instalar Node-RED en Raspberry Pi para automatizar procesos IoT con MQTT y Arduino ESP8266/ESP32

Introducción a MQTT con Node-RED, Raspberry Pi y Arduino

  • 0

0 Principiante

Introducción

Si quieres automatizar procesos de una forma sencilla, Node-Red te proporciona todas las herramientas para eso. Desde sencillos flujos hasta complejos sistemas, en éste tutorial de Node-Red veremos de qué se trata, cómo funciona y unos ejemplos prácticos utilizando Raspberry Pi y Arduino.

Node-Red puede funcionar en una gran cantidad de sistemas diferentes, pero para el propósito de este tutorial, nos centraremos en utilizar Node-Red en una Raspberry Pi. Es una forma muy económica de tener un sistema centralizado y fácil de mantener con bajo consumo eléctrico. Ten en cuenta que lo interesante de un servidor es que esté siempre encendido, por lo tanto el consumo requerido es un dato importante a tener en cuenta.

Pero sin más dilación, ¡empecemos por el principio!

¿Qué es Node-RED?

Node-RED es un entorno de programación visual de código abierto que funciona a través de un navegador y que permite relacionar funciones en forma de flujo. Los diferentes nodos se pueden interconectar entre sí visualmente y te permite realizar todo tipo automatizaciones.

Node-RED es especialmente potente y flexible para interconectar todo de de hardware con servicios online y vice-versa. Aunque no solo se limita a eso, ya que también puede manejar con facilidad todo tipo de servicios en la nube, APIs etc y con su entorno crear una lógica de control.

Ejemplo de flujo con Node-RED

Ejemplo de flujo con Node-RED

Mediante los "flujos", podemos insertar datos en el sistema, tratarlos y generar una salida. Por lo tanto, lo que estamos haciendo es  una lógica de un proceso.

  • Entra un dato
  • Procesamos el datos
  • Generamos una salida

Éstas son las tres partes fundamentales de todo proceso en Node-Red. Sirve tanto para dispositivos de hardware, APIs y por supuesto servicios de internet en la nube.

Node-Red puede hacer un montón de cosas pero una de las más interesantes es el uso del protocolo MQTT para interconectar todo tipo de dispositivos físicos. 

¿Qué es MQTT y para qué sirve?

Seguro que has oído hablar de MQTT pero ¿qué es exactamente y para qué sirve?

Pongamos un ejemplo sencillo. Normalmente si quieres interconectar dispositivos y transmitir datos a través de Internet, una buena forma a priori, podrías ser utilizar una API REST sobre el protocolo HTTP. Eso por supuesto funciona bien en dispositivos con cierta capacidad de computación, como puede ser una Raspberry Pi o tarjetas microcontroladoras con procesadores potentes como los 32-bit de ARM por ejemplo. Pero plantea una serie de problemas.

El protocolo HTTP es bastante pesado y requiere de cierta potencia de computación además de consumir bastante ancho de banda. Otro problema es que es difícil centralizar comunicaciones, debiendo notificar por el mismo método a cada cliente. Y eso no es nada cómodo ni eficiente.

En los proyectos denominados IoT, se requiere que sean de bajo consumo, que consuman poco ancho de banda y que en el caso de una comunicación de "uno a muchos" como en una red de sensores por ejemplo, sea un proceso automático.

Aquí es cuando destaca el protocolo de comunicaciones MQTT gracias a su sencillez y eficiencia. 

Esquema de funcionamiento de BrokerMQTT

Esquema de funcionamiento de BrokerMQTT

Cómo funciona MQTT

MQTT (Message Queuing Telemetry Transport) es un protocolo de red abierto, ligero y de suscripción de publicación que transporta mensajes entre diferentes dispositivos. El centro de todos los mensajes corresponde al Broker

El protocolo suele funcionar sobre TCP/IP y está diseñado para conexiones en los que se requiere un mínimo uso de ancho de banda y alta tolerancia a fallos de comunicación.

El protocolo MQTT define dos tipos de entidades dentro de su red: un servicio central encargado de gestionar los mensajes y los clientes. El servicio central MQTT es un servidor que recibe todos los mensajes de los clientes y luego los encamina a los clientes de destino apropiados. Hace la función de enrutador y el más popular y que usaremos en éste tutorial será Mosquitto

Por otro lado, un cliente MQTT puede ser cualquier dispositivo que se conecta a un enrutador MQTT a través de una red. Puede ser tanto un dispositivo físico pero también cualquier otro servicio o programa que sea capaz de intercambiar datos mediante MQTT.

En la siguiente página veremos como preparamos el sistema base utilizando una Raspberry Pi.