- Formas prácticas de llevar datos MQTT a Excel: scripts en Python, exportación con MQTT Explorer y flujos de datos en Azure IoT.
- Control total del pipeline con orígenes, transformaciones y destinos, incluyendo persistencia y esquemas.
- Exporta a CSV o JSON y canaliza a almacenamiento en la nube sin perder mensajes ni estructura.
- Soluciona incidencias típicas de exportación: formatos, datos incompletos y grandes volúmenes.
Si trabajas con dispositivos IoT y tienes que llevar telemetrías a una hoja de cálculo, lo normal es preguntarse cómo transformar mensajes MQTT en un archivo Excel de forma fiable. La buena noticia es que hay varias rutas sólidas: desde scripts ligeros en Python hasta herramientas gráficas y pipelines industriales en la nube. Aquí te explico, con detalle y sin rodeos, qué opciones tienes y cuándo conviene cada una.
Independientemente de tu experiencia -incluso si estás empezando-, puedes elegir soluciones que van desde “conectar y exportar” hasta arquitecturas con orígenes, transformaciones y destinos. Te mostraré métodos prácticos (Python y MQTT Explorer) y también cómo aprovechar flujos de datos de Azure IoT cuando el proyecto escala, sin olvidarnos de trucos, problemas habituales y cómo resolverlos.
¿Por qué llevar datos MQTT a Excel y qué encaja mejor en cada caso?
En escenarios personales o de laboratorio, un script sencillo es suficiente; en pruebas y depuración, una GUI como MQTT Explorer te saca del apuro en segundos; y si tu empresa necesita flujos estables, con filtrado, enriquecimiento y entrega garantizada, entonces conviene un flujo de datos gestionado, por ejemplo con Azure IoT Operations.

Opción 1: Script en Python que vuelca MQTT a Excel (rápido y controlado)
Una solución ligera y efectiva consiste en un pequeño programa en Python que se conecta al broker, se suscribe a uno o varios temas y guarda mensajes en una hoja Excel. Este enfoque es perfecto cuando quieres portabilidad, cero dependencias de interfaces y control fino de qué, cómo y cuánto se guarda, similar a técnicas para exportar resultados de scripts.
Existe un ejemplo público llamado mqtt2excel que ilustra este patrón: se elige el broker, el nombre del fichero de Excel y cuánto quieres almacenar. Si no indicas cantidad, el script capta un número limitado de mensajes (por ejemplo, los 10 primeros que vayan llegando). Si estás suscrito a dos temas y entran nueve mensajes del primero y uno del segundo, esos serán los diez registros que acaben en la planilla.
Antes de usarlo, necesitas Python instalado y dos librerías: una para escribir Excel y otra para el cliente MQTT. La típica combinación es xlwt (para XLS) junto a la librería Paho MQTT. Instalación de ejemplo:
pip install xlwt
pip install paho-mqtt
Una vez tengas las dependencias, ajustas el ejemplo con tu broker, el nombre del fichero y los temas. Puedes indicar un tope de registros para que el programa pare automáticamente cuando complete la captura. Un pseudoejemplo:
from MQTT2Excel import MQTT2Excel
broker = "BROKER_O_DIRECCION"
salida = "lecturas-demo.xls"
m2e = MQTT2Excel(broker, salida)
m2e.setRecordsNumber(50) # total de mensajes combinados de todos los temas
m2e.addTopics("TOPICO1")
# Si necesitas más temas:
# m2e.addTopics("TOPICO2")
m2e.start()
Al ejecutarlo, irá volcando cada mensaje con su marca temporal. Cuando llegue al número de registros indicado, se detiene y te deja el archivo listo para abrirlo en Excel. Si tu broker exige usuario/clave o TLS, puedes ampliarlo fácilmente añadiendo unas pocas líneas.
Repositorio de referencia: github.com/gsampallo/mqtt2excel. Aunque es un ejemplo, sienta muy bien las bases para personalizarlo a tu caso.
Opción 2: Exportar con MQTT Explorer a CSV o JSON (ideal para depurar y compartir)
MQTT Explorer es una aplicación gráfica muy útil para visualizar, probar y entender tus mensajes MQTT. Permite conectar a brokers, explorar el árbol de temas, publicar pruebas y filtrar datos con una interfaz sencilla. Para Excel, lo interesante es que exporta lo recibido a formatos estándar como CSV o JSON.
Características clave a tener en cuenta: gestión de conexiones, exploración y suscripción a temas, publicación, vista estructurada de payloads y filtros/búsquedas. En la práctica, es mano de santo para depurar y para sacar “fotografías” de datos que luego abres en Excel o en tu herramienta de análisis favorita.
Pasos típicos para exportar datos con MQTT Explorer: conectas al broker, te mueves al tema que te interesa, eliges la opción de exportar y seleccionas formato (CSV o JSON). Puedes aplicar filtros por rango temporal, por tema o por contenido antes de exportar, lo que te ahorra limpieza posterior.
¿Para qué se usa normalmente esta exportación? Para analizar offline, archivar histórico, integrarlo en otras herramientas o compartir con compañeros. Un CSV exportado se abre en Excel en un clic, y un JSON te encaja en pipelines o bases de datos sin esfuerzo.
Casos de uso habituales al exportar MQTT
Los motivos más comunes para extraer mensajes a ficheros externos suelen repetirse: análisis sin conexión, archivado, integración con otros sistemas, compartir con terceros, depuración y documentación. También es una vía rápida para migraciones de datos entre plataformas y respaldos pre-mantenimiento.
Ejemplos concretos: elaborar informes en Excel con gráficas y estadísticas, almacenar series históricas para auditorías, cargar JSON en un data lake o en tu base de datos, o enviar un CSV a alguien que no tiene acceso al broker. Durante pruebas, exportar una muestra suele ayudar a detectar valores anómalos y comprobar que publicas y recibes lo que toca.
Opción 3: Flujos de datos en Azure IoT Operations (cuando el proyecto crece)
Si tu organización necesita algo más robusto que un script o una exportación ad hoc, puedes orquestar flujos de datos gestionados en Azure IoT Operations. La idea es clara: definir un pipeline con origen, transformaciones opcionales y uno o varios destinos. Todo ello se maneja con perfiles y puntos de conexión reutilizables.
Antes de nada, conviene tener una instancia de Azure IoT Operations y, si lo precisas, definir perfiles de flujo de datos separados para repartir carga (evitando concentrar demasiados flujos en uno solo). Además de los perfiles, necesitarás puntos de conexión para los orígenes y destinos: MQTT local, Kafka, Event Hubs, OpenTelemetry o almacenamiento como Data Lake o Fabric OneLake.
Crear o actualizar un flujo puede hacerse vía CLI, Bicep o manifiestos de Kubernetes. Por ejemplo, con Azure CLI se aplica un archivo JSON con las propiedades del flujo, indicando modo, operaciones y ajustes de origen, transformación y destino. Esta flexibilidad te permite versionar la configuración y automatizar despliegues.
Orígenes: MQTT o Kafka, filtros de tema y suscripciones compartidas
Un origen se define por la referencia a un punto de conexión y la lista de “dataSources”. En MQTT puedes usar filtros de tema con comodines (+ y #), mientras que en Kafka debes listar estáticamente cada tema. Es práctico porque puedes reutilizar el mismo endpoint en varios flujos, cambiando solo los temas a escuchar.
Sobre suscripciones compartidas con agentes de mensajes MQTT: si el perfil de flujo tiene varias instancias, se activa automáticamente el prefijo $shared y se reparte carga entre consumidores. No es necesario que tú añadas $shared a mano salvo que lo quieras forzar, y en general es mejor dejar que la plataforma lo gestione.
Si usas un “recurso” como origen, el esquema se infiere de su definición y los datos entran igualmente por el broker MQTT local por debajo. Ten en cuenta la regla operativa: si el punto de conexión predeterminado del agente MQTT no se emplea como origen, deberá utilizarse como destino.
Respecto al “esquema de origen”, actualmente se emplea para mostrar los puntos de datos en la interfaz, pero no para validar ni deserializar mensajes de entrada. Es útil para tener claridad en la UI, aunque la tipificación efectiva se hace al serializar si así lo configuras.
Transformaciones: enriquecer, filtrar, mapear y crear nuevas propiedades
Las transformaciones son opcionales; si no te hace falta modificar nada, puedes omitirlas. Cuando se usan, siguen fases claras: primero enriqueces, después filtras y finalmente mapeas/renombras/creas propiedades nuevas. Enriquecer significa cruzar con un dataset de referencia alojado en el estado de la plataforma (por ejemplo, añadir ubicación y fabricante a partir de un identificador).
Durante el filtrado, aplicas condiciones sobre los campos de origen para dejar pasar solo lo que te interesa. En el mapeo puedes mover campos, convertir tipos o calcular derivadas (por ejemplo, temperatura en Celsius), y también renombrar puntos de datos o añadir propiedades nuevas para pasos posteriores.
Si deseas serializar con garantías antes de enviar al destino, defines un esquema y un formato de serialización. Para almacenamientos como Microsoft Fabric o Azure Data Lake, se recomienda Parquet o Delta con un esquema explícito para coherencia y consulta eficiente.
Detalle práctico: puedes acceder a metadatos MQTT en fórmulas, como el topic o las user properties, usando sintaxis específica (por ejemplo, @$metadata.topic). Esta flexibilidad te permite “rutar” y transformar no solo por payload, también por información de encabezado.
Persistencia en disco para no perder mensajes al reiniciar
Cuando la continuidad importa, puedes solicitar persistencia en disco (MQTT v5) para que, si el corredor o el flujo se reinicia, se recupere el estado. Esto funciona cuando el flujo usa el agente/broker MQTT como origen y el broker tiene la persistencia activada con modo dinámico habilitado para colas de suscriptores.
Al habilitar esta opción por flujo, solo los pipelines que la necesitan consumen recursos de persistencia. Así evitas pérdidas en interrupciones de energía o reinicios y mantienes rendimiento óptimo en el resto.
Destinos: de un tema MQTT a Data Lake, ADX o almacenamiento local
El destino se configura con un endpoint y una lista de “dataDestinations”. En MQTT o Event Grid es un tema; en Kafka/Event Hubs, un tema/hub; en Data Lake, un contenedor; en Azure Data Explorer, una tabla; y en almacenamiento local, una carpeta. Este concepto hace que el mismo punto de conexión sea reutilizable por varios flujos, cambiando solo “dónde” cae cada dato.
Para MQTT, además tienes “temas de destino dinámicos” con variables como ${inputTopic} o ${inputTopic.index}, que te permiten construir el topic de salida usando segmentos del tema de entrada. Ojo: si una variable no se puede resolver (porque falta el segmento), el mensaje se descarta y se registra una advertencia; y no se admiten comodines en destinos.
Ejemplo de lógica de flujo y verificación del pipeline
Imagina un flujo que lee de un tema MQTT, enriquece con datos de ubicación, convierte una medición a Fahrenheit y filtra lecturas anómalas. Después, entrega a un tema “factory/…” construido dinámicamente con el segundo segmento del tópico de entrada. Esta topología encaja con entornos industriales con múltiples líneas y sensores.
Para comprobar que un flujo funciona de extremo a extremo, un enfoque probado es levantar un puente MQTT bidireccional hacia un bus (por ejemplo, Event Grid) y verificar que los mensajes llegan y respetan esquema, filtros y mapeos. La verificación con mensajes sintéticos más una exportación de muestra facilita validar formato y campos.
Exportar configuración y automatizar despliegues (CLI, Bicep, Kubernetes)
Puedes administrar estos flujos tanto desde la interfaz de operaciones como desde infraestructura como código. Con la CLI aplicas un JSON con la configuración; con Bicep defines recursos anidados (perfil, dataflow, referencias de endpoints); y con Kubernetes describes un CRD con el spec de operaciones. Este enfoque declarativo te permite versionar cambios y escalar sin cambios manuales frágiles.
En Bicep, por ejemplo, referenciarías la instancia de IoT Operations, el custom location y el perfil por defecto, y luego crearías el recurso “dataflow” con operaciones Source, BuiltInTransformation y Destination. Lo mismo se traslada a YAML en Kubernetes, apuntando al profileRef adecuado en el namespace de la solución.
Problemas comunes al exportar y cómo sortearlos
Al usar herramientas como MQTT Explorer, puede que la opción de exportar no aparezca o esté inactiva. Actualiza a la última versión, confirma que estás conectado y que has seleccionado datos o un tema concreto antes de buscar el botón de exportación.
Otro error típico es exportar en el formato equivocado o con datos incompletos. Revisa la configuración de exportación, los filtros activos y, si manejas volúmenes grandes, divide por ventanas de tiempo o por temas para evitar cuelgues.
Si el fichero exportado no abre o parece corrupto, prueba a abrirlo con otra aplicación, reintenta la exportación y verifica el espacio en disco. Cuando la app se queda colgada, reiniciarla o reinstalarla suele “limpiar” bloqueos temporales.
En pipelines gestionados, vigila la alineación entre esquema y formato (Parquet/Delta) y la existencia del destino (tabla, contenedor, carpeta). Los temas de destino con variables no resueltas provocan descartes de mensaje, así que conviene monitorizar warnings.
Buenas prácticas de seguridad y privacidad en plataformas
En entornos corporativos verás pantallas de consentimiento de cookies y ajustes de privacidad, como ocurre en sitios profesionales donde se muestran anuncios u ofertas de empleo. Antes de acceder a consolas o apps embebidas, acepta o rechaza cookies no esenciales según tu política, y recuerda que siempre puedes cambiar preferencias después.
Algunas aplicaciones empresariales (por ejemplo, catálogos técnicos o hubs de conocimiento) cargan interfaces complejas que requieren JavaScript y autenticación. Si ves mensajes del tipo “cargando aplicación…”, verifica permisos, scripts habilitados y red corporativa; no es un fallo del pipeline, sino de la capa web.
Contexto industrial: PLCs y telemetría en tiempo real
En fabricación, los PLCs son el corazón del control de procesos; son ordenadores industriales robustos que gobiernan líneas de montaje, robots o cualquier proceso que requiera fiabilidad y diagnóstico. Muchos despliegues modernos puentean PLC→gateway→MQTT para exponer mediciones y eventos de forma estandarizada.
Para analistas, poder sacar una muestra a Excel resulta clave, ya sea para auditorías, control de calidad o investigación de incidencias. Por eso conviven los tres niveles: exportación ad hoc para análisis exprés, scripts repetibles para turnos de mantenimiento y pipelines en la nube para explotación continua.
Consejos si estás empezando con tu propio dispositivo IoT
Si estás creando un dispositivo y necesitas llevar los datos a una hoja de cálculo, empieza por lo esencial: ¿qué broker usas, qué temas publicas y con qué frecuencia llegan los mensajes? Con esa información, elegir entre script, GUI o flujo gestionado es mucho más fácil.
Para un primer prototipo, MQTT Explorer + exportación CSV te dará resultados inmediatos; si quieres automatizar recogidas regulares, el script en Python es muy agradecido; y si hay que escalar con transformación, gobernanza y destinos múltiples, valora seriamente un flujo de datos en Azure IoT. Además, si planeas llevar los datos a análisis, aprende a integrar datos de Excel con Power BI. En cada etapa, la clave es asegurar consistencia de formato y que no se pierdan mensajes en reinicios.
Este recorrido te deja tres rutas bien cubiertas: la rapidez y control de Python, la comodidad de exportar con MQTT Explorer y la potencia de un pipeline en Azure IoT con orígenes, transformaciones (enriquecer, filtrar y mapear), persistencia y destinos versátiles. Sea cual sea tu punto de partida, tendrás tus datos MQTT en Excel o en formatos compatibles sin dolores de cabeza, y con opciones para crecer cuando el proyecto lo pida.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.