reTerminal DM MQTT con Node-RED
Información breve sobre MQTT
MQTT y Node-RED
MQTT (Message Queuing Telemetry Transport) es un protocolo de mensajería ligero que está diseñado para permitir la comunicación entre dispositivos en un contexto de máquina a máquina (M2M) o Internet de las Cosas (IoT). MQTT fue desarrollado por IBM en 1999 y posteriormente se convirtió en un estándar abierto. MQTT está diseñado para ser una forma simple y eficiente de enviar pequeños paquetes de datos entre dispositivos. Utiliza un patrón de mensajería de publicación/suscripción donde los mensajes se publican en un broker y luego se entregan a todos los suscriptores que se han suscrito a un tema particular. Esto permite que los dispositivos se comuniquen entre sí sin tener que conocer las direcciones IP de los demás u otros detalles de red. MQTT es particularmente útil en situaciones donde los dispositivos están conectados a través de redes poco confiables, como redes de bajo ancho de banda o alta latencia, porque utiliza una pequeña cantidad de ancho de banda y tiene una sobrecarga baja. También admite niveles de Calidad de Servicio (QoS), lo que permite diferentes niveles de confiabilidad en la entrega de mensajes. MQTT se ha convertido en una opción popular para aplicaciones IoT y M2M debido a su simplicidad y eficiencia, y es compatible con una amplia gama de dispositivos y plataformas.
Un broker MQTT es un servidor que actúa como punto central para el intercambio de mensajes MQTT entre dispositivos en una red IoT o M2M basada en MQTT. Recibe mensajes publicados por dispositivos y los distribuye a otros dispositivos que se han suscrito a los mismos temas.
MQTT es uno de los muchos protocolos que Node-RED admite, lo que lo convierte en una excelente herramienta para construir aplicaciones IoT basadas en MQTT. Node-RED proporciona nodos integrados para MQTT, lo que permite a los usuarios conectarse a un broker MQTT y publicar o suscribirse a mensajes. Los nodos MQTT se pueden configurar fácilmente usando la interfaz de Node-RED, y los usuarios pueden especificar la dirección del broker, puerto, ID del cliente, nombre de usuario y contraseña. Los nodos también admiten niveles QoS de MQTT, que se pueden configurar para asegurar una entrega confiable de mensajes. En Node-RED, los usuarios pueden crear flujos que manejen mensajes MQTT entrantes y realicen varias acciones basadas en la carga útil del mensaje. Por ejemplo, un flujo podría suscribirse al tema MQTT de un sensor de temperatura, analizar el valor de temperatura y luego enviar una alerta si la temperatura excede un cierto umbral. Node-RED también proporciona varios nodos para integrar con otros servicios y dispositivos IoT, como endpoints HTTP, bases de datos y servicios en la nube. Esto permite a los usuarios construir fácilmente aplicaciones IoT complejas que pueden comunicarse con una amplia gama de dispositivos y servicios.
En general, Node-RED proporciona una forma simple e intuitiva de construir aplicaciones IoT basadas en MQTT, gracias a sus nodos MQTT integrados y soporte para otros servicios y dispositivos IoT.
Comenzando con el nodo MQTT en reTerminal DM
Dado que el nodo MQTT está integrado con Node-RED, puedes usar el nodo MQTT sin ningún paso adicional para instalar nodos. Sin embargo, necesitarás tener un broker mqtt para publicar o suscribirte a mensajes en un tema. Por lo tanto, los siguientes pasos incluirán cómo instalar un Broker MQTT local en reTerminal DM y luego utilizar el Broker MQTT para enviar y recibir mensajes.
prerequisito
Hardware
- 1 x reTerminal DM
- 1 x Computadora Host
El ordenador host debe poder tener conexión a Internet con el reTerminal DM para realizar los siguientes pasos de configuración.
Software
- Broker MQTT Eclipse Mosquitto
Instalar Broker MQTT Eclipse Mosquitto
En esta sección instalaremos Eclipse Mosquitto, que es un broker MQTT de código abierto ampliamente utilizado en aplicaciones IoT y M2M. Está desarrollado por la Eclipse Foundation y está disponible bajo la Licencia Pública de Eclipse. Mosquitto está diseñado para ser ligero y eficiente, lo que lo hace muy adecuado para su uso en dispositivos de bajo consumo y en entornos con ancho de banda de red limitado. Soporta el protocolo MQTT 5.0 más reciente, así como versiones anteriores como MQTT 3.1.1.
En primer lugar, por favor procede a refrescar tu conocimiento sobre el acceso a reTerminal DM vía SSH, puedes consultar los pasos aquí
Una vez que hayas accedido al reTerminal DM con SSH puedes proceder con los pasos a continuación:
PASO 1: Actualiza la lista de paquetes ejecutando el siguiente comando:
sudo apt-get update
PASO 2: Instala Mosquitto ejecutando el siguiente comando:
sudo apt-get install mosquitto
PASO 3: Instala las herramientas cliente de Mosquitto ejecutando el siguiente comando:
sudo apt-get install mosquitto-clients
PASO 4: Una vez que la instalación esté completa, puedes iniciar el servicio Mosquitto ejecutando el siguiente comando:
sudo systemctl start mosquitto
PASO 5: Para verificar si Mosquitto se está ejecutando, puedes ejecutar el siguiente comando:
sudo systemctl status mosquitto
Por defecto, Mosquitto está configurado para escuchar en el puerto 1883
para tráfico MQTT. Puedes probar la instalación suscribiéndote a un tema usando las herramientas cliente de Mosquitto, de la siguiente manera:
Abre una nueva sesión SSH y ejecuta el siguiente comando para suscribirte a un tema:
mosquitto_sub -h localhost -t test
En otra sesión SSH, ejecuta el siguiente comando para publicar un mensaje al mismo tema:
mosquitto_pub -h localhost -t test -m "Hello, world!"
Deberías ver el mensaje "Hello, world!" aparecer en la primera ventana de sesión SSH donde ejecutaste el comando mosquitto_sub.
¡Y eso es todo! Has instalado exitosamente Mosquitto en tu reTerminal DM y lo has probado usando las herramientas cliente de Mosquitto. Ahora profundicemos en la forma Node-RED de las comunicaciones MQTT
Nodo MQTT con reTerminal DM
En Node-RED, hay MQTT in y MQTT out que representan Suscribir y Publicar respectivamente.

Editar los Flujos
Los siguientes pasos son solo con fines tutoriales, donde utilizaremos mqtt-in
para suscribirnos a los mensajes publicados en el mismo tópico por mqtt-out
.
PASO 1: Arrastra mqtt in
al panel del Editor de Flujo

PASO 2: Configura el Servidor Modbus
y el nodo mqtt in
PASO 2-1: Haz doble clic en mqtt in
para abrir el panel del editor de nodos

PASO 2-2: Haz clic en el icono del lápiz
para la opción de configuración del servidor

Una vez que hayas hecho clic en el icono del lápiz
deberías ver el panel de configuración Agregar nuevo nodo de configuración mqtt-broker

PASO 2-3: En la pestaña Conexión
por favor configura el siguiente campo en consecuencia

Por ahora, puedes dejar las pestañas Security y Messages sin modificar.
PASO 2-4: Configurar el tema para suscribirse, aquí usamos test-mqtt
, y dejar todo lo demás como predeterminado, luego hacer clic en el botón Done
.

PASO 2-5: los siguientes pasos introducirán el nodo debug
, que en este caso se usa para ver y depurar la salida del tema suscrito desde mqtt in
, como se muestra en la imagen a continuación
PASO 2-5-1: Así que por favor arrastra un nodo debug
al panel Flow Editor
PASO 2-5-2: Conecta el nodo debug
con el nodo mqtt in
PASO 2-5-3: Haz clic en el botón del pequeño insecto
en el Option and Config panel
para abrir la consola de depuración
en el Option and Config panel
PASO 2-5-4: Haz clic en el botón Deploy
para desplegar el flujo

Dado que aún no hemos configurado ningún publicador de topics MQTT, no se mostrará ningún mensaje en la consola de depuración.
PASO 3: Configurar el nodo mqtt out
PASO 3-1: Haz doble clic en el nodo mqtt out
para abrir el Panel del editor de nodos

PASO 3-1: Así que por favor arrastra un nodo mqtt out
al panel Editor de flujo
como se muestra en la imagen a continuación
PASO 3-1-1: Debes seleccionar el mismo Servidor que hemos configurado en el PASO 2-3:
que es localhost:1883
PASO 3-1-2: Debes configurar el mismo nombre de Tema que la configuración del tema del PASO 2-4:
que es test-mqtt
.
PASO 3-1-3: de manera similar, el QoS debe alinearse con la configuración de mqtt in
como 2
PASO 3-1-4: Haz clic en Done
para completar la configuración

PASO 4: Configurar el nodo inject
PASO 4-1: Arrastra el nodo inject
al panel Editor de flujo

PASO 4-2: Haz doble clic en el nodo inject
para abrir el Panel del editor de nodos
, deberías ver la configuración predeterminada del nodo inject
PASO 4-2-1: haz clic en la x
en la línea msg.topic para eliminarla
PASO 4-2-2: haz clic en la opción timestamp
para abrir una lista desplegable en la línea msg.payload

PASO 4-2-3: Selecciona la opción string
en la lista desplegable

PASO 4-2-4: En el cuadro de mensaje por favor ingresa this is the message
como el mensaje que vamos a enviar al tema test-mqtt
, y luego haz clic en Done

PASO 4-2-5: Conecta el nodo inject
con el nodo mqtt out
y haz clic en Deploy

Resultado Final
Felicitaciones, has experimentado y aprendido exitosamente cómo usar el protocolo MQTT con reTerminal DM y node-RED ahora, tus resultados finales deberían ser similares a la imagen mostrada a continuación

Puedes copiar el siguiente código JSON para importar los Nodos
[
{
"id": "8d317d539464f080",
"type": "tab",
"label": "MQTT",
"disabled": false,
"info": "",
"env": []
},
{
"id": "128fa85f993944d6",
"type": "mqtt in",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"datatype": "auto-detect",
"broker": "b6a7c986cb61ea54",
"nl": false,
"rap": true,
"rh": 0,
"inputs": 0,
"x": 300,
"y": 220,
"wires": [
[
"a022e0bf3404fdd9"
]
]
},
{
"id": "a022e0bf3404fdd9",
"type": "debug",
"z": "8d317d539464f080",
"name": "debug 2",
"active": true,
"tosidebar": true,
"console": false,
"tostatus": false,
"complete": "false",
"statusVal": "",
"statusType": "auto",
"x": 500,
"y": 220,
"wires": []
},
{
"id": "9d0098383c96ee8b",
"type": "mqtt out",
"z": "8d317d539464f080",
"name": "",
"topic": "test-mqtt",
"qos": "2",
"retain": "",
"respTopic": "",
"contentType": "",
"userProps": "",
"correl": "",
"expiry": "",
"broker": "b6a7c986cb61ea54",
"x": 520,
"y": 320,
"wires": []
},
{
"id": "3c967b7d5cc112fc",
"type": "inject",
"z": "8d317d539464f080",
"name": "",
"props": [
{
"p": "payload"
}
],
"repeat": "3",
"crontab": "",
"once": true,
"onceDelay": 0.1,
"topic": "",
"payload": "this is the message",
"payloadType": "str",
"x": 340,
"y": 320,
"wires": [
[
"9d0098383c96ee8b"
]
]
},
{
"id": "b6a7c986cb61ea54",
"type": "mqtt-broker",
"name": "",
"broker": "localhost",
"port": "1883",
"clientid": "",
"autoConnect": true,
"usetls": false,
"protocolVersion": "4",
"keepalive": "60",
"cleansession": true,
"birthTopic": "",
"birthQos": "0",
"birthPayload": "",
"birthMsg": {},
"closeTopic": "",
"closeQos": "0",
"closePayload": "",
"closeMsg": {},
"willTopic": "",
"willQos": "0",
"willPayload": "",
"willMsg": {},
"userProps": "",
"sessionExpiry": ""
}
]
Explora más nodos en reTerminal DM con node-RED
Soporte Técnico y Discusión de Productos
¡Gracias por elegir nuestros productos! Estamos aquí para brindarte diferentes tipos de soporte para asegurar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.