Saltar al contenido principal

Conexión con EMQX

EMQX es un broker MQTT de código abierto con un motor de procesamiento de mensajes en tiempo real y de alto rendimiento, que impulsa el streaming de eventos para dispositivos IoT a gran escala. Como el broker MQTT más escalable, EMQX puede ayudarle a conectar cualquier dispositivo, a cualquier escala. Le permite mover y procesar sus datos de IoT en cualquier lugar. EMQX Cloud es un producto de middleware de mensajería MQTT para el ámbito del IoT alojado por EMQ. Como el primer servicio de mensajería MQTT 5.0 en la nube totalmente gestionado del mundo, EMQX Cloud ofrece una solución integral de operación y mantenimiento (O&M), junto con un entorno aislado único para servicios de mensajería MQTT. En la era del Internet de Todo, EMQX Cloud puede ayudarle a crear rápidamente aplicaciones para el sector del IoT y a recopilar, transmitir, procesar y almacenar fácilmente los datos de IoT. Gracias a la infraestructura proporcionada por los proveedores de servicios en la nube, EMQX Cloud presta servicio en decenas de países y regiones de todo el mundo, y ofrece servicios en la nube de bajo costo, seguros y fiables para aplicaciones de 5G e Internet de Todo.

Supuestos

  • Estás familiarizado con el protocolo MQTT, diseñado como un protocolo de transporte de mensajería de publicación/suscripción extremadamente ligero.
  • Usas EMQX o EMQX Cloud como motor de procesamiento de mensajes en tiempo real para el streaming de eventos de dispositivos IoT a gran escala.
  • Has preparado una instancia de ClickHouse Cloud para persistir los datos de los dispositivos.
  • Usamos MQTT X como herramienta de prueba de cliente MQTT para conectarnos a la Implementación de EMQX Cloud y publicar datos MQTT. También servirán otros métodos para conectarse al broker MQTT.

Obtenga su servicio de ClickHouse Cloud

Durante esta configuración, implementamos la instancia de ClickHouse en AWS, en N. Virginia (us-east-1), mientras que también se implementó una instancia de EMQX Cloud en la misma región. Durante el proceso de configuración, también deberá prestar atención a la configuración de la conexión. En este tutorial, elegimos “Anywhere”, pero si solicita una ubicación específica, deberá añadir a la whitelist la dirección IP del gateway NAT obtenida de su implementación de EMQX Cloud. A continuación, deberá guardar su nombre de usuario y contraseña para usarlos más adelante. Después de eso, tendrá una instancia de ClickHouse en ejecución. Haga clic en “Connect” para obtener la dirección de conexión de la instancia de ClickHouse Cloud. Haga clic en “Connect to consola SQL” para crear la base de datos y la tabla para la integración con EMQX Cloud. Puede consultar la siguiente sentencia SQL o modificarla según sea necesario.
CREATE TABLE emqx.temp_hum
(
   client_id String,
   timestamp DateTime,
   topic String,
   temp Float32,
   hum Float32
)
ENGINE = MergeTree()
PRIMARY KEY (client_id, timestamp)

Crear un servicio MQTT en EMQX Cloud

Crear un broker MQTT dedicado en EMQX Cloud es tan fácil como hacer clic unas cuantas veces.

Crea una cuenta

EMQX Cloud ofrece una prueba gratuita de 14 días tanto para la Implementación estándar como para la Implementación Professional en cada cuenta. Empieza en la página de registro de EMQX Cloud y haz clic en Start Free para registrar una cuenta si eres nuevo en EMQX Cloud.

Crear un clúster MQTT

Una vez que haya iniciado sesión, haga clic en “Cloud Console” en el menú de la cuenta y verá el botón verde para crear una nueva Implementación. En este tutorial, usaremos la Implementación Professional porque solo la versión Pro ofrece la funcionalidad de integración de datos, que puede enviar datos MQTT directamente a ClickHouse sin escribir una sola línea de código. Seleccione la versión Pro, elija la región N.Virginial y haga clic en Create Now. En solo unos minutos, tendrá un broker MQTT totalmente gestionado: Ahora haga clic en el panel para ir a la vista del clúster. En este dashboard, verá la información general de su broker MQTT.

Añadir credenciales de cliente

EMQX Cloud no permite conexiones anónimas de forma predeterminada, por lo que debes añadir credenciales de cliente para poder usar la herramienta cliente MQTT y enviar datos a este broker. Haz clic en ‘Authentication & ACL’ en el menú de la izquierda y, en el submenú, en ‘Authentication’. Haz clic en el botón ‘Add’ de la derecha e introduce un nombre de usuario y una contraseña para la conexión MQTT que usarás más adelante. Aquí usaremos emqx y xxxxxx como nombre de usuario y contraseña. Haz clic en ‘Confirm’ y ya tendrás listo un broker MQTT totalmente gestionado.

Habilitar gateway NAT

Antes de empezar a configurar la integración de ClickHouse, primero debemos habilitar el gateway NAT. De forma predeterminada, el MQTT broker se despliega en una VPC privada, que no puede enviar datos a sistemas de terceros a través de la red pública. Vuelva a la página Overview y desplácese hasta la parte inferior, donde verá el widget del gateway NAT. Haga clic en el botón Subscribe y siga las instrucciones. Tenga en cuenta que NAT Gateway es un servicio de valor añadido, aunque también ofrece una prueba gratuita de 14 días. Una vez creado, encontrará la dirección IP pública en el widget. Tenga en cuenta que, si selecciona “Connect from a specific location” durante la configuración de ClickHouse Cloud, deberá añadir esta dirección IP a la lista de permitidos.

Integración de EMQX Cloud con ClickHouse Cloud

La función EMQX Cloud Data Integrations se utiliza para configurar las reglas que gestionan los flujos de mensajes y los eventos de dispositivos de EMQX, y para responder a ellos. Data Integrations no solo proporciona una solución de arquitectura «configurable» clara y flexible, sino que también simplifica el proceso de desarrollo, mejora la experiencia de uso y reduce el grado de acoplamiento entre el sistema de negocio y EMQX Cloud. Además, ofrece una infraestructura superior para personalizar las capacidades propias de EMQX Cloud. EMQX Cloud ofrece más de 30 integraciones nativas con sistemas de datos populares. ClickHouse es una de ellas.

Crear recurso de ClickHouse

Haz clic en “Data Integrations” en el menú de la izquierda y luego en “View All Resources”. Encontrarás ClickHouse en la sección “Data Persistence”, o puedes buscarlo. Haz clic en la tarjeta de ClickHouse para crear un recurso nuevo.
  • Nota: añade una nota para este recurso.
  • Dirección del servidor: esta es la dirección de tu servicio de ClickHouse Cloud; recuerda incluir el puerto.
  • Nombre de la base de datos: emqx, que creamos en los pasos anteriores.
  • Usuario: el username para conectarte a tu servicio de ClickHouse Cloud.
  • Clave: la password de la conexión.

Crear una regla nueva

Durante la creación del recurso, verá una ventana emergente y, al hacer clic en ‘New’, accederá a la página de creación de reglas. EMQX proporciona un potente motor de reglas que puede transformar y enriquecer el mensaje MQTT sin procesar antes de enviarlo a sistemas de terceros. Esta es la regla que se utiliza en este tutorial:
SELECT
   clientid AS client_id,
   (timestamp div 1000) AS timestamp,
   topic AS topic,
   payload.temp AS temp,
   payload.hum AS hum
FROM
"temp_hum/emqx"
Leerá los mensajes del topic temp_hum/emqx y enriquecerá el objeto JSON añadiendo la información de client_id, topic y timestamp. Así, el JSON en bruto que envías al topic:
{"temp": 28.5, "hum": 0.68}
Puede usar la prueba de SQL para comprobar los resultados. Ahora haga clic en el botón “NEXT”. En este paso, se indica a EMQX Cloud cómo insertar los datos procesados en su base de datos de ClickHouse.

Agregar una acción de respuesta

Si solo tiene un recurso, no necesita modificar ‘Resource’ ni ‘Action Type’. Solo tiene que configurar la plantilla SQL. Este es el ejemplo utilizado en este tutorial:
INSERT INTO temp_hum (client_id, timestamp, topic, temp, hum) VALUES ('${client_id}', ${timestamp}, '${topic}', ${temp}, ${hum})
Esta es una plantilla para insertar datos en ClickHouse; aquí puede ver cómo se usan las variables.

Ver detalles de las reglas

Haz clic en “Confirm” y en “View Details”. Ahora todo debería quedar bien configurado. Puedes comprobar que la integración de datos funciona en la página de detalles de la regla. Todos los mensajes MQTT enviados al topic temp_hum/emqx se almacenarán en tu base de datos de ClickHouse Cloud.

Guardar datos en ClickHouse

Simularemos datos de temperatura y humedad y los enviaremos a EMQX Cloud a través de MQTT X; después, usaremos Data Integrations de EMQX Cloud para guardar los datos en ClickHouse Cloud.

Publicar mensajes MQTT en EMQX Cloud

Puede usar cualquier cliente o SDK de MQTT para publicar el mensaje. En este tutorial, usaremos MQTT X, una aplicación cliente de MQTT fácil de usar proporcionada por EMQ. Haga clic en “New Connection” en MQTTX y complete el formulario de conexión:
  • Name: nombre de la conexión. Use el que prefiera.
  • Host: la dirección de conexión del broker MQTT. Puede obtenerla en la página de vista general de EMQX Cloud.
  • Port: el puerto de conexión del broker MQTT. Puede obtenerlo en la página de vista general de EMQX Cloud.
  • Username/Password: use las credenciales creadas anteriormente, que en este tutorial deberían ser emqx y xxxxxx.
Haga clic en el botón “Connect”, en la esquina superior derecha, y la conexión debería establecerse. Ahora puede enviar mensajes al broker MQTT con esta herramienta. Datos de entrada:
  1. Establezca el formato del payload en “JSON”.
  2. Establezca el topic como: temp_hum/emqx (el topic que acabamos de configurar en la regla)
  3. Cuerpo JSON:
{"temp": 23.1, "hum": 0.68}
Haz clic en el botón Enviar de la derecha. Puedes cambiar el valor de la temperatura y enviar más datos al broker MQTT. Los datos enviados a EMQX Cloud deberían procesarse mediante el motor de reglas e insertarse en ClickHouse Cloud automáticamente.

Ver la monitorización de reglas

Comprueba la monitorización de reglas y verifica que el número de éxitos aumente en uno.

Compruebe los datos guardados

Ahora es el momento de echar un vistazo a los datos en ClickHouse Cloud. Idealmente, los datos que envíe mediante MQTTX irán a EMQX Cloud y quedarán guardados en la base de datos de ClickHouse Cloud con ayuda de la integración de datos nativa. Puede conectarse a la consola SQL desde el panel de ClickHouse Cloud o usar cualquier herramienta cliente para consultar datos de su ClickHouse. En este tutorial, usamos la consola SQL. Al ejecutar el SQL:
SELECT * FROM emqx.temp_hum;

Resumen

Sin escribir ni una sola línea de código, ahora tus datos de MQTT fluyen de EMQX Cloud a ClickHouse Cloud. Con EMQX Cloud y ClickHouse Cloud, no necesitas administrar la infraestructura y solo debes centrarte en desarrollar tus aplicaciones IoT, con los datos almacenados de forma segura en ClickHouse Cloud.
Última modificación el 10 de junio de 2026