文章目录
MQTT 介绍
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是一种轻量级的发布 / 订阅模式(Pub/Sub) 消息传输协议,专为低带宽、不稳定网络环境设计,广泛应用于物联网(IoT)、移动设备、传感器网络等场景(如空气净化器、智能家居设备的远程控制)。
MQTT 核心特性
- 轻量级:协议头部精简(最小仅 2 字节),数据传输效率高,适合硬件资源有限的设备(如传感器、嵌入式设备)。
- 发布 / 订阅模式:消息发送者(发布者)与接收者(订阅者)解耦,无需直接建立连接,通过 “主题(Topic)” 传递消息。
- 支持 QoS(服务质量):提供三级消息可靠性保障,适应不同网络环境。
- 异步通信:设备可间歇性联网,重连后仍能接收离线期间的关键消息。
- 双向通信:支持设备向服务器上报数据(如传感器数据)和服务器向设备下发指令(如控制命令)。
MQTT 核心组件
- 发布者(Publisher)
- 发送消息的设备 / 应用(如空气净化器上报 PM2.5 数据、小程序发送控制指令)。
- 无需知道谁会接收消息,只需指定消息的 “主题(Topic)”。
- 订阅者(Subscriber)
- 接收消息的设备 / 应用(如服务器接收设备数据、小程序接收设备状态更新)。
- 通过订阅 “主题(Topic)” 声明自己感兴趣的消息。
- broker(服务器 / 代理)
- 核心组件,负责接收发布者的消息,根据主题分发给所有订阅者。
- 功能:消息路由、QoS 管理、会话保持、客户端认证等。
- 常见实现:Eclipse Mosquitto、EMQX、AWS IoT Core、阿里云 IoT 平台等。
- 主题(Topic)
- 消息的分类标识,采用层级结构(类似文件路径),用斜杠(
/)分隔,例如:device/airpurifier/123/status(设备 123 的状态上报)device/airpurifier/123/command(向设备 123 下发指令)
- 支持通配符订阅:
+:匹配单个层级,如device/+/123/status匹配所有类型设备的 123 号设备状态。#:匹配多个层级(必须在末尾),如device/airpurifier/#匹配该设备的所有主题。
- 消息的分类标识,采用层级结构(类似文件路径),用斜杠(
QoS(服务质量)等级
MQTT 定义了 3 种 QoS 等级,用于平衡消息可靠性与传输效率:
| QoS 等级 | 含义 | 适用场景 |
|---|---|---|
| QoS 0 | 最多一次:消息发送后不确认,可能丢失或重复。 | 非关键数据(如实时温度周期性上报)。 |
| QoS 1 | 至少一次:消息确保到达,但可能重复(发送方收到接收方确认前会重发)。 | 重要数据(如设备状态变更)。 |
| QoS 2 | 刚好一次:消息确保仅到达一次(通过两次握手确认)。 | 关键指令(如支付、设备控制指令)。 |
示例:空气净化器的开关机指令需用 QoS 2,确保指令仅执行一次;而 PM2.5 实时数据可用 QoS 0,偶尔丢失不影响整体监控。
连接与会话管理
- 连接建立
- 客户端(设备 / 小程序后端)通过 TCP 连接到 broker 的指定端口(默认 1883,加密端口 8883)。
- 连接时需发送 CONNECT 报文,包含:
clientId:客户端唯一标识(如设备 SN)。cleanSession:是否清除会话(false表示 broker 保存离线消息)。- 认证信息(
username/password,或更安全的 TLS 双向认证)。
- 会话保持
- 若
cleanSession=false,broker 会为客户端保存:- 未确认的 QoS 1/2 消息。
- 客户端订阅的主题列表。
- 客户端重连后,broker 会推送离线期间积累的消息(按 QoS 等级处理)。
- 若
- 断开连接
- 客户端发送 DISCONNECT 报文优雅断开,或网络异常时自动断开。
- broker 检测到连接中断后,会根据会话设置决定是否保留消息。
消息结构
MQTT 消息由固定头部、可变头部和有效载荷(Payload) 组成:
- 固定头部:包含消息类型(如 CONNECT、PUBLISH)、QoS 等级、剩余长度等(最小 2 字节)。
- 可变头部:按需存在,如 PUBLISH 消息的可变头部包含主题名和消息 ID。
- 有效载荷:实际传输的数据(如 JSON 格式的设备状态:
{"pm25": 35, "power": "on"})。
安全机制
- 传输加密:通过 TLS/SSL(即 MQTTS)加密通信,防止数据被窃听或篡改(端口 8883)。
- 身份认证:
- 基础认证:客户端连接时提供
username/password,broker 验证后允许接入。 - 证书认证:客户端与 broker 双向验证 X.509 证书,适合高安全性场景(如工业设备)。
- 基础认证:客户端连接时提供
- 权限控制:broker 可配置主题访问权限(如设备只能发布自己的状态主题,不能订阅其他设备的指令主题)。
MQTT 在空气净化器小程序中的应用示例
-
设备上报数据:
-
空气净化器(发布者)定期向主题
device/airpurifier/{sn}/status发布状态消息(QoS 1):{ "pm25": 28, "formaldehyde"
-

基本使用指南&spm=1001.2101.3001.5002&articleId=150491442&d=1&t=3&u=68207684760142a7a1a69ed219a948d4)
4万+

被折叠的 条评论
为什么被折叠?



