1.5 KiB
| tags | |
|---|---|
|
MQTT
Message Queuing Telemetry Transport
Messaging protocol that runs on top of TCP/IP like HTTP. Particularly well suited for IoT devices.
Has publisher/subscriber architecture. Devices publish data to a broker which manages topics. Other devices subscribe to those topics. Broker would typically run on a server as the central messaging hub.
MQTT handles connection drops gracefully - if an ESP32 temporarily loses Wi-Fi, it can queue messages and send them when reconnected. The protocol uses minimal bandwidth (just a few bytes of overhead vs HTTP's much larger headers), which means lower power consumption on your ESP32s. MQTT also maintains persistent connections rather than creating new ones for each data point, reducing network overhead and latency.
The main Linux client for setting up an MQTT is mosquitto.
There are different Quality of Service levels you can use to manage how messages are sent and what to do in event of failure:
- fire and forget
- acknowledged delivery
- acknowledged only once delivery
- retained message (broker remembers last message)
- last will and testament (automatica notification if device disconnects unexpectedly)
Example use case
As an example, my usecase would be to have several ESP32 micro-controllers in
different rooms publish humidity data to a small computer that acts as broker.
This computer will also subcribe to the topics belonging to each room e.g
bathroom_sensor, bedroom_sensor and store this data in a database.