1.前言
IoT物联网平台大部分基于MQTT协议的Pub/Sub通信,那么topic和payload设计就很重要。
我们可以定义出不同topic来处理不同业务场景,类似web开发中的API设计。
2.自定义Topic类
2.1 默认自定义Topic
当我们创建产品后,系统会自动生成3个自定义topic,方便我们使用。
Topic | 权限 | 备注 |
---|---|---|
/${ProductKey}/${DeviceName}/user/update | 发布 | 上报数据 |
/${ProductKey}/${DeviceName}/user/update/error | 发布 | 上报错误事件 |
/${ProductKey}/${DeviceName}/user/get | 订阅 | 接收云端数据 |
2.2 自定义Topic
默认topic是一个示范,我们可以根据业务需求,自己定义Topic和Payload,来解决现实中的问题。比如下面的示例:
Topic | 权限 | 备注 |
---|---|---|
/${ProductKey}/${DeviceName}/user/heart/post | 发布 | 定期上报数据 |
/${ProductKey}/${DeviceName}/user/bizdata/post | 发布 | 业务触发上报 |
/${ProductKey}/${DeviceName}/user/biz/control | 订阅 | 接收云端指令 |
/${ProductKey}/${DeviceName}/user/config/modify | 订阅 | 接收设备配置变更 |
对于设备上报数据,我们可以把不同优先级的消息做分类,通过规则引擎流转分流到不同队列,给予不同处理资源,避免重要业务消息延迟过高。
对于云端指令接收,我们也可以区分业务指令和配置指令,给予不同优先级。
3.系统Topic列表
3.1 设备影子
用于实现设备影子功能,需要使用如下topic
Topic | 权限 | 备注 |
---|---|---|
/shadow/update/${ProductKey}/${DeviceName} | 发布 | 更新设备影子 QoS=1 |
/shadow/get/${ProductKey}/${DeviceName} | 订阅 | 获取设备影子 |
设备影子可以实现设备的运行参数的配置更新功能。
3.2 固件升级
Topic | 权限 | 备注 |
---|---|---|
/ota/device/inform//${ProductKey}/${DeviceName} | 发布 | 上报当前固件版本 |
/ota/device/upgrade/${ProductKey}/${DeviceName} | 订阅 | 接收OTA信息 |
/ota/device/progress/${ProductKey}/${DeviceName} | 发布 | 上报OTA进度 |
/ota/device/request/${ProductKey}/${DeviceName} | 发布 | 主动请求OTA信息 |
3.3 广播
Topic | 权限 | 备注 |
---|---|---|
/broadcast/${YourProductKey}/+ | 订阅 | 接收广播信息 |
同一产品的设备,可以接收到云端的广播指令,由于IoT平台限制广播最大触达1000个设备。
这里我们可以把设备按规则做分组,不同组设备自动订阅不同group的topic,比如:
- /broadcast/${YourProductKey}/group/a
- /broadcast/${YourProductKey}/group/b
3.4 RRPC通信
使用下面topic,IoT平台实现了基于mqtt协议的云端发起对设备的同步RPC调用
Topic | 权限 | 备注 |
---|---|---|
/sys/${ProductKey}/${DeviceName}/rrpc/request/+ | 订阅 | 接收RRPC调用 |
/sys/${ProductKey}/${DeviceName}/rrpc/response/${msgId} | 发布 | 响应msgId对应RRPC请求 |
3.5 设备标签
使用设备标签topic可以动态给设备添加运行时标签
Topic | 权限 | 备注 |
---|---|---|
/sys/${ProductKey}/${DeviceName}/thing/deviceinfo/update | 发布 | 更新设备标签 |
3.6 远程配置
Topic | 权限 | 备注 |
---|---|---|
/sys/${ProductKey}/${DeviceName}/thing/config/get | 发布 | 主动查询配置信息 |
/sys/${ProductKey}/${DeviceName}/thing/config/push | 订阅 | 接收配置信息 |
/sys/${ProductKey}/${DeviceName}/thing/config/get_reply | 订阅 | 接收配置信息 |
4.物模型通信
4.1 物模型JSON数据通信
Topic | 权限 | 备注 |
---|---|---|
/sys/${ProductKey}/${DeviceName}/thing/event/property/post | 发布 | 上报属性数据 |
/sys/${ProductKey}/${DeviceName}/thing/event/property/post_reply | 订阅 | 接收返回结果 |
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post | 发布 | 上报事件数据 |
/sys/${ProductKey}/${DeviceName}/thing/event/{identifer}/post_reply | 订阅 | 接收返回结果 |
/sys/${ProductKey}/${DeviceName}/thing/service/property/set | 订阅 | 接收属性设置指令 |
/sys/${ProductKey}/${DeviceName}/thing/service/property/set_reply | 发布 | 返回处理结果 |
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer} | 发布 | 接收服务调用指令 |
/sys/${ProductKey}/${DeviceName}/thing/service/{identifer}_reply | 订阅 | 返回服务处理结果 |
4.2 物模型透传数据通信
Topic | 权限 | 备注 |
---|---|---|
/sys/${ProductKey}/${DeviceName}/thing/model/up_raw | 发布 | 上报数据 |
/sys/${ProductKey}/${DeviceName}/thing/model/down_raw | 订阅 | 接收云端指令 |
更多信息参考:
IoT平台业务Topic设计最佳实践 · 语雀
本文章来源于互联网,如有侵权,请联系删除!原文地址:IoT物联网平台通信MQTT之Topic定义方式
目录 前言 百度云物联网组件图 前言 介绍云消息的后续处理 我们之前已经将设备接入到物联网平台,并且通过MQTT协议,成功的向云平台发送数据。 那么,数据发送到云平台后,除了转发给其他MQTT客户端,我们该如何处理这些数据呢? 我想让数据以图形/数表的形式显示…