Comunicación MQTT con Node-RED

Última actualización:

Introducción

MQTT es un protocolo ligero de mensajería de publicación/suscripción muy utilizado en aplicaciones de Internet de las cosas (IoT). En lugar de comunicarse directamente entre sí, los dispositivos envían mensajes a un broker MQTT bajo un tema, y otros clientes se suscriben a ese tema para recibirlos.

Node-RED incluye nodos MQTT que permiten recibir y procesar mensajes IoT sin desarrollar una aplicación MQTT completa. En este tutorial configuraremos Node-RED en un dispositivo reComputer RK Series para suscribirnos a un tema del broker MQTT público de HiveMQ y publicaremos un mensaje JSON desde el terminal RK para verificar la conexión.

Seguridad: Este ejemplo utiliza el broker público compartido de HiveMQ por el puerto TCP 1883, sin TLS ni autenticación. Usa solo datos de prueba. No transmitas contraseñas, información personal ni datos industriales o de producción. En producción, utiliza un broker con autenticación y TLS.

Requisitos previos

ElementoRequisito
HardwareDispositivo reComputer RK Series
Sistema operativoLinux ARM64 basado en Debian
Node-REDInstalado y en ejecución; completa primero Primeros pasos con Node-RED
RedAcceso a Internet al broker MQTT público de HiveMQ
AccesoUn navegador para Node-RED y un terminal o conexión SSH al dispositivo RK

Cómo funciona

text
reComputer RK Terminal
(mosquitto_pub)
       |
       | Publish JSON to topic: rk3588/seeed/demo
       v
HiveMQ Public MQTT Broker
(broker.hivemq.com:1883)
       |
       | Subscribe to the same topic
       v
Node-RED on reComputer RK
MQTT in  -->  Debug
       |
       v
Debug sidebar: received JSON object

Paso 1: Abrir el editor Node-RED

Comprueba que Node-RED se esté ejecutando en el dispositivo RK:

bash
sudo systemctl status nodered.service --no-pager

Si es necesario, inicia el servicio:

bash
node-red-start

Si este comando muestra los registros continuamente, pulsa Ctrl+C para volver al terminal; Node-RED seguirá ejecutándose en segundo plano.

Consulta la dirección IP local del dispositivo:

bash
hostname -I

Desde un equipo de la misma red, abre el editor Node-RED:

text
http://<RK_DEVICE_IP>:1880

Sustituye <RK_DEVICE_IP> por la dirección IP real del dispositivo. Inicia sesión si habilitaste la autenticación del editor durante la configuración de Node-RED.

Paso 2: Añadir un nodo de entrada MQTT

  1. Abre Flow 1 o crea un flujo nuevo.
  2. Busca mqtt in en la paleta izquierda y arrastra el nodo morado mqtt in al espacio de trabajo.
  3. Haz doble clic en el nodo para abrir Edit mqtt in node.
  4. Junto a Server, pulsa el botón de añadir/editar, que puede ser + o un lápiz según la versión, para crear una configuración de broker MQTT.

Paso 3: Configurar el broker HiveMQ

En el diálogo de configuración del broker MQTT, introduce:

ParámetroValor
NameHiveMQ (nombre visible opcional)
Serverbroker.hivemq.com
Port1883
ProtocolMQTT V3.1.1
Client IDDejar vacío para generar un ID automáticamente
TLSDesactivado
Username / PasswordDejar vacío

Configuración de conexión del broker HiveMQ

Mantén las demás opciones predeterminadas y pulsa Add o Update, según la versión del editor, para guardar la configuración del broker.

El broker público es compartido. Elige un tema que difícilmente coincida con otras pruebas. Este ejemplo utiliza rk3588/seeed/demo. Si eliges otro tema, úsalo de forma coherente en la suscripción y el comando de publicación.

Paso 4: Configurar la suscripción MQTT

De nuevo en Edit mqtt in node, configura:

ParámetroValor
ServerHiveMQ
ActionSubscribe to single topic
Topicrk3588/seeed/demo
QoS0
Outputauto-detect (parsed JSON object, string or buffer)
NameSeeedStudio

Tema, QoS y formato de salida de la entrada MQTT

Pulsa Done para guardar el nodo.

Los temas MQTT distinguen entre mayúsculas y minúsculas. El tema de Node-RED debe coincidir exactamente con el utilizado por el publicador de línea de comandos. Si lo cambias por un tema único, actualiza también los comandos del paso 7.

Paso 5: Conectar MQTT In a Debug y desplegar

  1. Busca debug en la paleta y arrastra el nodo verde debug al espacio de trabajo.
  2. Conecta la salida de SeeedStudio (mqtt in) a la entrada del nodo debug.
  3. Abre los ajustes del nodo Debug y deja la salida en msg.payload.
  4. Pulsa Done y después Deploy en la esquina superior derecha.
  5. Abre el panel Debug messages.

El flujo resultante debería tener este aspecto:

text
[SeeedStudio (mqtt in)] ----> [debug node]

Una vez establecida la conexión MQTT, el nodo mqtt in debería mostrar el estado verde connected debajo.

Paso 6: Instalar el cliente MQTT de línea de comandos

En el terminal del dispositivo reComputer RK, instala las herramientas de línea de comandos de Mosquitto:

bash
sudo apt update
sudo apt install -y mosquitto-clients

El comando mosquitto_pub envía un mensaje MQTT al broker. Node-RED, que ya está suscrito al mismo tema, puede recibirlo.

Paso 7: Publicar un mensaje JSON de prueba

Ejecuta el siguiente comando en el terminal RK:

bash
mosquitto_pub \
  -h broker.hivemq.com \
  -p 1883 \
  -t "rk3588/seeed/demo" \
  -m '{"device":"RK3588","temperature":25.6}'

Este comando publica un mensaje JSON en el tema rk3588/seeed/demo mediante el broker público de HiveMQ.

Para obtener una salida más detallada en el terminal, utiliza la opción -d:

bash
mosquitto_pub -d \
  -h broker.hivemq.com \
  -p 1883 \
  -t "rk3588/seeed/demo" \
  -m '{"device":"RK3588","temperature":25.6}'

Paso 8: Verificar el mensaje recibido en Node-RED

Vuelve al editor Node-RED y revisa el panel Debug messages. El nodo de entrada MQTT debería reenviar el mensaje al nodo Debug.

El mensaje debería contener los siguientes datos:

json
{
  "device": "RK3588",
  "temperature": 25.6
}

Como Output del nodo de entrada MQTT está configurado para detectar JSON automáticamente, Node-RED puede mostrar el contenido como un objeto JavaScript analizado. El panel también identifica el tema como rk3588/seeed/demo.

Flujo MQTT conectado y JSON recibido en Debug messages

La recepción correcta confirma esta ruta de comunicación:

Terminal reComputer RK → broker público de HiveMQ → Node-RED MQTT in → Debug

Conclusión

Has configurado Node-RED en un dispositivo reComputer RK Series para conectarse a un broker MQTT, suscribirse a un tema y recibir un mensaje JSON publicado desde el terminal del dispositivo. Esto proporciona una base sencilla para desarrollar aplicaciones IoT basadas en MQTT en la plataforma RK.

En tutoriales posteriores, el flujo MQTT puede ampliarse para procesar datos de sensores, publicar mensajes con un nodo mqtt out o integrarse con otros protocolos industriales y paneles.

Referencias