Saltar al contenido principal
Volver al blog
IoT MQTT Protocolos Arquitectura

MQTT vs HTTP para IoT: cuándo usar cada protocolo

MQTT vs HTTP para IoT: comparativa de protocolos, casos de uso, rendimiento y cuándo usar cada uno en proyectos reales.

JM
Javier Manzano
CEO & Co-founder • 10 de junio de 2026

Una de las primeras decisiones técnicas en un proyecto IoT es elegir el protocolo de comunicación. MQTT y HTTP son los dos candidatos principales, pero tienen filosofías completamente diferentes. Elegir mal puede significar baterías que se agotan en semanas en lugar de años, datos que se pierden sin que nadie se entere o arquitecturas que no escalan.

Esta guía te ayuda a tomar la decisión correcta basándote en criterios técnicos objetivos y experiencia real implementando ambos protocolos en producción.

MQTT: diseñado para IoT

MQTT (Message Queuing Telemetry Transport) fue creado en 1999 por IBM para monitorizar oleoductos via satélite. El contexto original lo dice todo: ancho de banda limitado, alta latencia, conexiones inestables y dispositivos con recursos muy limitados.

Características clave de MQTT

Modelo Pub/Sub: Los dispositivos publican mensajes en topics. Los consumidores se suscriben a los topics que les interesan. No hay conexión directa entre productor y consumidor: el broker gestiona toda la distribución.

Overhead mínimo: El header fijo de MQTT ocupa solo 2 bytes. Un mensaje típico con topic y payload ocupa 10-50 bytes. Compara con los 300-800 bytes de una petición HTTP equivalente.

Tres niveles de QoS:

  • QoS 0: Fire and forget (máxima eficiencia, sin garantía)
  • QoS 1: At least once (garantía de entrega, posibles duplicados)
  • QoS 2: Exactly once (máxima fiabilidad, mayor overhead)

Sesiones persistentes: El broker almacena mensajes para dispositivos desconectados y los entrega cuando se reconectan.

Last Will and Testament (LWT): El broker publica un mensaje predefinido si detecta que un dispositivo se ha desconectado inesperadamente. Perfecto para detección de fallos.

Keep-alive eficiente: Pings periódicos de pocos bytes para mantener la conexión viva a través de NATs y firewalls.

Cuándo usar MQTT

  • Dispositivos alimentados por batería (cada byte cuenta)
  • Conectividad móvil/LoRaWAN/NB-IoT con latencia variable
  • Datos que deben llegar en tiempo real (monitorización, alertas)
  • Comunicación bidireccional (enviar comandos al dispositivo)
  • Miles de dispositivos publicando datos al mismo broker
  • Dispositivos que se conectan y desconectan frecuentemente

HTTP: el protocolo universal

HTTP es el protocolo de la web. Todos los desarrolladores lo conocen, todas las herramientas lo soportan, todos los firewalls lo dejan pasar. Pero no fue diseñado para IoT.

Características clave de HTTP para IoT

Modelo Request/Response: El cliente inicia siempre la comunicación. El servidor no puede enviar datos al dispositivo de forma proactiva (sin WebSocket o SSE).

Overhead significativo: Headers HTTP típicos ocupan 300-800 bytes. Para un sensor que envía 10 bytes de datos, eso es un 98% de overhead.

Sin estado: Cada request es independiente. No hay concepto de sesión persistente ni de mensajes pendientes. Si el servidor quiere enviar algo al dispositivo, tiene que esperar a que el dispositivo haga polling.

Ecosistema maduro: APIs REST bien documentadas, autenticación OAuth2, herramientas de debugging, SDKs en todos los lenguajes, integración trivial con cualquier sistema.

TLS estándar: HTTPS funciona en todas partes. Certificados Let’s Encrypt gratuitos. No requiere configuración especial.

Cuándo usar HTTP

  • Dispositivos con alimentación constante y WiFi/Ethernet
  • Envío de datos infrecuente (una vez al día, cada hora)
  • Payloads grandes (imágenes, logs, archivos de configuración)
  • Integración con APIs REST existentes
  • Actualizaciones de firmware OTA
  • Gateways y dispositivos edge con recursos abundantes

Comparación técnica detallada

Overhead de red

MétricaMQTTHTTP
Header mínimo2 bytes~300 bytes
ConexiónUna vez (persistente)Cada request (o keep-alive)
TLS handshakeUna vezCada conexión (sin keep-alive)
Mensaje típico (10 bytes payload)~20 bytes total~350 bytes total
Ratio payload/overhead50%3%

Para un sensor que envía una lectura cada 5 minutos durante un mes:

  • MQTT: ~20 bytes * 8.640 mensajes = 173 KB
  • HTTP: ~350 bytes * 8.640 requests = 3 MB

Eso es 17x más datos con HTTP. En redes con coste por MB (NB-IoT, LTE-M), la diferencia es real en la factura.

Consumo de batería

El consumo de radio es el principal drenaje de batería en dispositivos IoT. Menos bytes = menos tiempo de radio activa = más vida de batería.

EscenarioMQTT QoS 0HTTP POST
Envío cada 5 min~3 años batería~6 meses batería
Envío cada hora~5 años batería~2 años batería
Envío 1x día~7 años batería~5 años batería

Estos son valores aproximados para un dispositivo típico con batería de 3.600 mAh y radio LoRaWAN/NB-IoT.

Latencia

EscenarioMQTTHTTP
Dispositivo al broker/server10-50 ms100-500 ms
Broker a suscriptor<10 msN/A (polling)
Comando al dispositivo<100 msEsperar al próximo poll
Notificación de desconexiónInmediata (LWT)Solo por timeout

MQTT gana claramente en escenarios bidireccionales. Si necesitas enviar un comando a un dispositivo y recibir confirmación en menos de un segundo, HTTP con polling no es viable.

Fiabilidad

CaracterísticaMQTTHTTP
Entrega garantizadaQoS 1/2Retry manual
Mensajes pendientesSesión persistenteNo nativo
Detección desconexiónLWT (segundos)Timeout (minutos)
DuplicadosQoS 2 los eliminaIdempotencia manual
Orden de mensajesGarantizado por QoSNo garantizado

Escalabilidad

MétricaMQTT (AWS IoT Core)HTTP (API Gateway)
Conexiones simultáneasMillonesN/A (stateless)
Mensajes/segundoMillonesMiles-Millones (con auto-scaling)
Fan-out (1 mensaje a N suscriptores)NativoRequiere implementación
Coste por mensaje$1 por millón~$3.50 por millón (API Gateway)

Arquitectura híbrida: lo mejor de ambos mundos

En la práctica, la mayoría de proyectos IoT industriales usan ambos protocolos:

Dispositivos → MQTT → Broker → Procesamiento

                               API REST (HTTP)

                    Dashboards / Apps / Integraciones
  • MQTT para la comunicación dispositivo-cloud: eficiente, bidireccional, tolerante a desconexiones
  • HTTP/REST para la API del backend: dashboards, apps móviles, integraciones con sistemas de terceros

Esta es exactamente la arquitectura que implementamos en Spherag: dispositivos publican via MQTT a AWS IoT Core, el procesamiento ocurre en Lambda/Kinesis, y los datos se exponen via API REST + WebSocket para el dashboard.

Casos donde MQTT es claramente mejor

1. Telemetría de alta frecuencia

Un sensor industrial enviando vibración a 100 Hz (100 mensajes/segundo). Con HTTP, cada mensaje necesitaría un round-trip completo. Con MQTT, los mensajes fluyen por la conexión persistente con overhead mínimo.

2. Redes de sensores con batería

Dispositivos LoRaWAN o NB-IoT que deben funcionar años con una batería. Cada byte extra reduce la vida útil. MQTT con QoS 0 minimiza el consumo.

3. Comandos remotos a dispositivos

Necesitas abrir una válvula, cambiar la configuración de un sensor o actualizar un parámetro. Con MQTT, el dispositivo está suscrito a un topic de comandos y recibe la instrucción inmediatamente. Con HTTP, tendrías que esperar a que el dispositivo haga polling.

4. Detección de desconexiones

En monitorización de infraestructura crítica, necesitas saber en segundos si un dispositivo se ha desconectado. El LWT de MQTT lo hace automáticamente. Con HTTP, solo te enterarías cuando el siguiente poll no llega (que puede ser minutos u horas después).

Casos donde HTTP es mejor o igual

1. Dispositivos con conectividad WiFi estable

Un gateway con WiFi/Ethernet y alimentación constante puede usar HTTP sin penalización significativa. Si solo envía datos cada minuto, el overhead extra es irrelevante.

2. Envío de archivos grandes

Firmware updates, logs comprimidos, imágenes de cámaras. HTTP con chunked transfer o multipart es más adecuado que MQTT para payloads de KB o MB.

3. Integración con sistemas legacy

Si tu sistema destino solo acepta HTTP/REST, un gateway que traduce MQTT a HTTP es la solución más pragmática.

4. Prototipado rápido

Para un MVP rápido con pocos dispositivos, HTTP puede ser más sencillo de implementar si el equipo ya tiene experiencia con APIs REST.

MQTT sobre WebSocket: el bridge perfecto

Un caso especial: MQTT sobre WebSocket permite que navegadores web se suscriban directamente a topics MQTT. Esto es ideal para dashboards en tiempo real que necesitan recibir datos del broker sin un backend intermedio.

Dispositivo → MQTT → Broker

Browser → MQTT over WebSocket → Broker

AWS IoT Core soporta MQTT sobre WebSocket nativamente, lo que permite que un dashboard React se suscriba a los mismos topics que el backend sin código adicional en el servidor.

Recomendaciones prácticas

  1. Si tienes dispositivos con batería: MQTT, sin discusión
  2. Si necesitas bidireccionalidad: MQTT
  3. Si envías datos cada pocos segundos: MQTT
  4. Si solo envías datos 1x al día con WiFi: HTTP está bien
  5. Si son archivos grandes: HTTP para los archivos, MQTT para la señalización
  6. Si no sabes qué elegir: MQTT. Es más versátil y no tendrás que migrar cuando los requisitos crezcan

Implementación con Soamee

En Soamee implementamos arquitecturas MQTT y AWS IoT para proyectos de IoT industrial. Si necesitas ayuda para elegir y diseñar la arquitectura de comunicación de tu proyecto IoT, agenda una consultoría gratuita.

No te pierdas nada

JM

Javier Manzano

CEO & Co-founder en Soamee

Apasionado por la tecnología y el desarrollo de software. Comparto conocimientos y experiencias para ayudar a otros desarrolladores a crecer.

¿Te ha gustado este artículo?

Si necesitas ayuda con tu proyecto de desarrollo, estamos aquí para ti.

Agenda call gratuita →