Intermediate 25 min

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:

Publish Subscribe Update Trigger IoT Device MQTT Broker Node-RED Dashboard Alerts

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/+/telemetry gets 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.

Python Simulator Publishes telemetry Mosquitto MQTT Broker Port 1883 Node-RED MQTT In Validate & Transform Dashboard Alert Rules

Steps:

  1. Python simulator publishes telemetry data (temperature, humidity, battery) to MQTT topics every 2 seconds
  2. Mosquitto MQTT broker receives messages and routes them to all subscribers
  3. 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.

Progress 14%
Page 1 of 7
Previous Next