这是机器未来的第44篇文章
原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126539873

产品基于ESP32系列模块开发,在大流量的应用场景下,4G终端可以通过WIFI连接热点传输,降低4G上网资费。ESP32模块与上位设备采用以太网接口进行连接。
产品大致的需求为:
根据MQTT协议规范的理解,应该有如下的认知:
采用MQTT3.1.1版本
| SN. | TOPIC | SUBSCRIBER | PUBLISHER | QoS | Retain |
|---|---|---|---|---|---|
| 1 | /TOPIC/OBE_WIFI/UP/DEVICE_INFO | UpperDev | OBE_WIFI | 1 | 1 |
| 2 | /TOPIC/OBE_WIFI/UP/STATUS | UpperDev | OBE_WIFI | 1 | 1 |
| 3 | /TOPIC/OBE_WIFI/UP/WILL | UpperDev | OBE_WIFI | 1 | 1 |
| 4 | /TOPIC/OBE_WIFI/DOWN/CONTROL/RESTART | OBE_WIFI | UpperDev | 0 | 0 |
| 5 | /TOPIC/OBE_WIFI/DOWN/CONTROL/KEEPAWAKE | OBE_WIFI | UpperDev | 0 | 0 |
| 6 | /TOPIC/OBE_WIFI/DOWN/OTA | OBE_WIFI | UpperDev | 0 | 0 |
| 7 | /TOPIC/OBE_WIFI/UP/RESPONSE | UpperDev | OBE_WIFI | 0 | 0 |
主题描述:
注意:
{消息头, “body”:{消息体}}
| No. | 数据项 | Key | Value范例 | 描述 |
|---|---|---|---|---|
| 1 | 命令字 | cmd | dev_attr_upload | 传入String型,详见表3 |
| 2 | 应用ID | app_id | 12564 | 传入Number型,应用ID在设计时定义各方订阅者/发布者ID |
| 3 | 协议版本 | pro_ver | 1.0 | 传入String型, 便于将来扩展 |
| 4 | 时间戳 | timestamp | 2022-03-29 00:00:00 | 传入String型 |
| 5 | 消息流水号 | msg_id | 234 | 传入Number型,按照消息递增的值,上限为65535,超过则从0递增,唯一表示消息ID |
TOPIC:/TOPIC/OBE_WIFI/UP/DEVICE_INFO
QoS=1, Retain=1
| No. | 数据项 | Key | Value范例 | 描述 |
|---|---|---|---|---|
| 1 | 设备号 | device_id | 91234567 | 传入string型 |
| 2 | 软件版本 | sw_ver | 1.1 | 传入string型 |
| 3 | 硬件版本 | hw_ver | 1.0 | 传入string型 |
| 4 | WIFI MAC | wifi_mac | 65-7F-36-25-12-89 | 传入string型,跟踪ESP32硬件编号 |
| 5 | WIFI固件版本 | wifi_firmware_ver | 1.36.25 | 传入string型,量产后批次采购模块固件版本不一致,便于分析问题 |
| 6 | WIFI无线认证版本 | wifi_auth_ver | 1.3 | 传入string型,量产后批次采购模块固件版本不一致,便于分析问题 |
| 7 | 国家码 | country_code | 86 | 传入string型,国际客户分析 |
| 8 | 以太网MAC | eth_mac | 65-7F-36-25-12-8A | 传入string型,跟踪以太网硬件编号 |
TOPIC:/TOPIC/OBE_WIFI/UP/STATUS
QoS=1,Retain=1
KeepAlive=300,STATUS消息采用定时上报和变化上报机制,定时上报周期取240s上报1次
TOPIC:/TOPIC/OBE_WIFI/UP/WILL
QoS=1,Retain=1
无消息体
Topic:/TOPIC/OBE_WIFI/DOWN/RESTART
QoS=0,Retain=0
无消息体,RESPONSE服务,响应执行结果
略。
Topic:/TOPIC/OBE_WIFI/UP/RESPONSE
QoS=0,Retain=0
| No. | 数据项 | KEY | Value范例 | 描述 |
|---|---|---|---|---|
| 1 | 下发消息流水号 | msg_id | 256 | 传入Number型,来源于下发消息头中的消息流水号 |
| 2 | 下发命令字 | cmd | cmd_down_restart | 传入string型,来源于下发消息头中的命令字 |
| 3 | 结果 | result | 0 | 传入Number型,0-成功,1-失败 |
| 4 | 结果描述 | comment | “NOT SUPPORT” | 传入string型,描述失败原因,成功可不存在 |
在设计MQTT协议的过程中注意事项其实还是挺多的,根据应用场景,QoS、Retain、Will的使用也很巧妙,结构化数据的编码方式为将来的功能扩展提供了可能性。
《MQTT快速入门系列》快速导航:
写在末尾:
- 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
- 专栏简介:从0到1掌握MQTT分布式协议。
- 面向人群:零基础编程爱好者
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待
- Python零基础快速入门系列
- 快速入门Python数据科学系列
- 人工智能开发环境搭建系列
- 机器学习系列
- 物体检测快速入门系列
- 自动驾驶物体检测系列
- …
