What is MQTT?
MQTT stands for Message Queuing Telemetry Transport. It’s a lightweight messaging protocol designed for IoT devices. Here’s why it matters:
Why MQTT for IoT?
1. Lightweight 📦
- Small message overhead (2 bytes minimum)
- Works on devices with limited memory
- Efficient bandwidth usage
2. Publish/Subscribe Model 📢
- Devices don’t need to know who’s listening
- Multiple subscribers can receive the same message
- Decouples producers from consumers
3. Quality of Service (QoS) ⭐
- QoS 0: Fire and forget (fastest, no guarantee)
- QoS 1: At least once delivery (guaranteed, may duplicate)
- QoS 2: Exactly once delivery (guaranteed, no duplicates)
4. Retained Messages 💾
- Broker stores last message on a topic
- New subscribers get the latest value immediately
- Perfect for device state
5. Last Will and Testament ⚠️
- Device can set a message to publish if it disconnects unexpectedly
- Useful for detecting offline devices
The MQTT Architecture
MQTT uses a broker-based architecture:
- Publisher: Device or application that sends messages
- Broker: Server that receives and routes messages
- Subscriber: Application that receives messages
- Topic: String that identifies the message channel (e.g.,
iot/devices/sensor-01/temperature)
How Data Flows
Watch how messages move through an MQTT system:
Topic Design
MQTT topics are hierarchical strings separated by slashes. Good topic design makes your system scalable:
Example Topic Structure:
iot/devices/{deviceId}/telemetry
iot/devices/{deviceId}/status
iot/devices/{deviceId}/commands
iot/alerts/{deviceId}
Why this structure?
- Hierarchical: Easy to subscribe to groups (
iot/devices/+/telemetrygets all devices) - Scalable: Can add new device types without changing code
- Clear: Each level has meaning
- Wildcards: Use
+for single-level wildcard,#for multi-level
The System You’ll Build
Here’s what your complete system will look like:
Interactive Diagram
This interactive diagram requires JavaScript to be enabled.
Steps:
- Python simulator publishes telemetry data (temperature, humidity, battery) to MQTT topics every 2 seconds
- Mosquitto MQTT broker receives messages and routes them to all subscribers
- Node-RED subscribes to topics, validates data, updates dashboard, and triggers alerts
Key Concepts
1. Publish/Subscribe Pattern
- Devices publish without knowing who’s listening
- Applications subscribe to topics they care about
- Broker handles routing automatically
2. Topics as Channels
- Topics are like TV channels
- Multiple devices can publish to the same topic
- Multiple subscribers can listen to the same topic
3. Quality of Service
- Choose QoS based on your needs
- QoS 0: Fast, no guarantee (sensor readings)
- QoS 1: Guaranteed delivery (commands)
- QoS 2: Exactly once (critical data)
4. Retained Messages
- Last message on a topic is stored
- New subscribers get it immediately
- Perfect for device state
What’s Next?
In the next page, you’ll start the MQTT broker using Docker Compose. You’ll see how easy it is to get Mosquitto running locally.