The Protocol Decision
Choosing the wrong IoT messaging protocol wastes bandwidth on cellular, drains batteries, and creates architectural debt. Here is a firmware engineer's perspective focused on the device side.
MQTT
Best for most IoT use cases. 2-byte fixed header, persistent sessions surviving network dropouts, QoS 0/1/2, native AWS IoT Core support, and keepalives as low as 10 seconds. Use clean_session=false to survive reconnects.
HTTPS
Best for batch uploads, OTA downloads, and low-frequency telemetry. Request-response only — no server push. TLS handshake adds ~3-5KB overhead per connection on cellular. Works through all firewalls.
AMQP
Best for enterprise integration and Azure IoT Hub. Rich routing and dead-letter queues, but large client libraries (~80KB+) make it unsuitable for MCUs. AWS IoT Core does not natively support AMQP.
Decision
Use MQTT over TLS with QoS 1 for real-time telemetry and commands. Use HTTPS for OTA downloads and infrequent bulk uploads. Avoid AMQP on resource-constrained devices unless you have a specific broker requirement.
← Back to all posts