一、核心原理:主题订阅与发布的通信逻辑

在物联网(IoT)系统中,“主题订阅与发布” 是设备与云端、设备与设备之间高效通信的核心方式。华为云物联网平台(IoT Device Access)基于成熟的发布 - 订阅(Publish-Subscribe)架构,提供了高可靠、高并发的主题通信能力,支持百万级设备接入与消息流转。本文将从核心原理、操作流程、最佳实践三方面,带你全面掌握华为云物联网设备的主题订阅与发布。

二、前提条件:操作前的准备工作

在进行主题订阅与发布前,需完成以下基础配置:

  1. 注册华为云账号并完成实名认证,开通 “物联网设备接入服务”(IoT Device Access)。
  2. 在 IoT 平台创建产品与设备,获取设备的deviceIdsecret等认证信息(用于设备接入鉴权)。
  3. 确认设备已支持 MQTT 协议(华为云 IoT 主题通信默认基于 MQTT 协议,部分场景支持 HTTP/CoAP)。
  4. 规划主题结构:根据业务需求设计主题层级,避免重复或混乱(如设备上报数据用device/{deviceId}/data/upload,云端下发指令用device/{deviceId}/command/download)。

三、实操流程:设备主题订阅与发布步骤

1. 设备接入华为云 IoT 平台

  • 设备通过 MQTT 客户端(如 EMQ X、MQTT.fx)或自研 SDK,连接华为云 IoT 平台的接入地址(如mqtt://{endpoint}:1883)。
  • 接入时需携带设备认证信息(如采用 MQTT 的 Username/Password 认证,或签名认证),确保设备合法接入。

2. 主题发布:设备 / 应用向云端发送消息

  • 发布者(设备或云端应用)构造消息体(支持 JSON、二进制等格式,推荐 JSON 便于解析),明确目标主题。
  • 通过 MQTT 的PUBLISH指令,将消息发送至指定主题(如设备上报温湿度数据至device/123456/data/upload)。
  • 华为云平台接收消息后,会进行格式校验、权限验证,通过后存储消息(可选)并触发路由。

3. 主题订阅:设备 / 应用接收目标消息

  • 订阅者(设备或云端应用)通过 MQTT 的SUBSCRIBE指令,指定需要订阅的主题(支持精确订阅或通配符订阅,如device/+/data/upload订阅所有设备的上报数据)。
  • 平台校验订阅者权限后,将该订阅者加入主题的订阅列表。
  • 当有发布者向该主题发送消息时,平台会自动将消息推送给所有订阅者,订阅者通过SUBACK指令确认接收。

4. 消息查看与调试

  • 在华为云 IoT 平台控制台,通过 “消息跟踪” 功能,查看主题消息的发送、接收状态,排查通信异常。
  • 若消息发送失败,可检查设备在线状态、主题权限、消息格式是否符合要求。

四、具体操作流程

 

 

 

 

 

 

 

五、主题订阅格式

帮助文档地址:https://support.huaweicloud.com/devg-iothub/iot_02_2200.html

设备想要接受平台给的数据,需要订阅平台下发数据的主题,跟ROS类似( 通过 “主题(Topic)” 作为中间媒介传递消息:发布者向特定主题发送数据,订阅者通过订阅该主题接收数据,发布者和订阅者无需直接感知对方的存在)平台下发数据给设备,就可以接收到。

#每个设备通用格式:
$oc/devices/{device_id}/sys/messages/down

这里的{device_id}为设备id,在设备栏里面复制设备id:690ad62ce41f2979315ed2b0_dev1

六、主题发布格式

帮助文档地址:https://support.huaweicloud.com/api-iothub/iot_06_v5_3010.html

对于设备来说,主题发布表示向云平台上传数据,将最新的传感器数据,设备状态上传到云平台。

这个操作称为:属性上报。

#每个设备通用格式:
$oc/devices/{device_id}/sys/properties/report

这里的{device_id}为设备id,在设备栏里面复制设备id:690ad62ce41f2979315ed2b0_dev1

下面这个是发送的主题信息格式:

#发布主题时,需要上传数据,这个数据格式是JSON格式。

#消息主题格式如下

{"services": [{"service_id": <填服务ID>,"properties": 
{ "<填属性名称1>": <填属性值>,"<填属性名称2>": <填属性值>,..........}}]}
发布消息的最终格式:
{"services": [{"service_id": "stm32","properties":{"DHT11_T":18}}]}

这里的"service_id":后面加的是产品—详情—服务名称

这里的"properties":后面加的是服务名称—属性

 

 

 

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐