云服务器内容精选

  • 主要控制报文类型 常见MQTT消息类型主要有CONNECT、SUBSCRIBE、PUBLISH、PINGREQ。 CONNECT:指客户端请求和服务端连接。有效载荷(Payload)的主要参数,参考设备连接鉴权填写。 SUBSCRIBE:订阅包括主题筛选器(Topic Filter)和最大服务质量(QoS),一个会话可以进行多个订阅。向平台订阅可以参考:Topic定义。 PUBLISH:是指从客户端向服务端或者服务端向客户端传输一个应用消息。 可变报头(Variable header)中的主要参数“Topic name”,指服务端或客户端的发布主题。详细请参考Topic定义。 有效载荷(Payload)中的主要参数为完整的数据上报和命令下发的消息内容,一般是一个JSON或字符串对象。 PINGREQ:指客户端发给服务端的心跳请求。主要用于告知服务端客户端还活着、确认网络连接没有断开。约定的发送周期由协商的Keep Alive决定。
  • 使用限制 上行Topic是指设备向平台发送请求,或上报数据,或回复响应。 下行Topic是指平台向设备下发指令,或回复响应。 设备与平台建立连接后,需要订阅下行Topic(华为云平台中具有隐式订阅功能,若通信质量为Qos0,平台的系统topic无需订阅。),否则无法收到平台下发的指令或回复的响应。应用侧接口的调用,需要设备侧的配合,例如应用侧下发命令,设备侧需要先订阅“平台命令下发”的下行Topic,否则设备无法收到平台命令,应用下发命令的接口也会报超时。
  • 数据包组成 MQTT消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。在MQTT规范中有说明,建议使用设备侧SDK进行接入。 其中固定报头(Fixed header)和可变报头(Variable header)格式的填写请参考MQTT标准规范。有效载荷(Payload)的格式由应用定义,即设备和 物联网平台 之间的定义。 固定报头:每个 MQTT 控制报文都包含一个固定报头可变报头,用于决定控制报文类型、在PUBLISH中还用于决定最大服务质量(QoS),如:建链、订阅、发布。 可变报头:某些 MQTT 控制报文包含一个可变报头部分。它在固定报头和负载之间。可变报头的内容根据报文类型的不同而不同。包含可变报头的报文标识符(Packet Identifier),用于区分同一链路的不同数据包。 有效载荷:某些 MQTT 控制报文在报文的最后部分包含一个有效载荷,对于 PUBLISH 来说有效载荷就是应用消息(由用户自己定义)。 MQTT的语法和接口细节,请以MQTT标准规范为准。
  • Topic定义 设备使用MQTT协议接入平台时,平台和设备通过Topic进行通信。平台预置的topic列表如下: Topic分类 Topic Publisher(发布者) Subscriber(订阅者) 用途 设备消息相关Topic $oc/devices/{device_id}/sys/messages/up 设备 平台 设备消息上报 $oc/devices/{device_id}/sys/messages/down 平台 设备 平台下发消息 设备命令相关Topic $oc/devices/{device_id}/sys/commands/request_id={request_id} 平台 设备 平台下发命令 $oc/devices/{device_id}/sys/commands/response/request_id={request_id} 设备 平台 设备返回命令响应 设备属性相关Topic $oc/devices/{device_id}/sys/properties/report 设备 平台 设备上报属性 $oc/devices/{device_id}/sys/gateway/sub_devices/properties/report 设备 平台 网关批量上报属性 $oc/devices/{device_id}/sys/properties/set/request_id={request_id} 平台 设备 平台设置设备属性 $oc/devices/{device_id}/sys/properties/set/response/request_id={request_id} 设备 平台 属性设置的响应结果 $oc/devices/{device_id}/sys/properties/get/request_id={request_id} 平台 设备 平台查询设备属性 $oc/devices/{device_id}/sys/properties/get/response/request_id={request_id} 设备 平台 属性查询响应结果 $oc/devices/{device_id}/sys/shadow/get/request_id={request_id} 设备 平台 设备侧主动获取平台的设备影子数据 $oc/devices/{device_id}/sys/shadow/get/response/request_id={request_id} 平台 设备 设备侧主动获取平台设备影子数据的响应 设备事件相关Topic $oc/devices/{device_id}/sys/events/up 设备 平台 设备事件上报与平台事件下发,可用于:设备网关管理、软固件升级、文件上传/下载、设备时间同步、设备信息上报、设备日志收集、远程配置 $oc/devices/{device_id}/sys/events/down 平台 设备 {device_id}用于标识Topic路由的目标设备,设备侧订阅该topic或往topic推送消息时,该值需要替换为设备与平台建立MQTT连接时使用的设备ID参数值。 {request_id}用于唯一标识这次请求。设备侧发起的消息带该参数时,需要保证设备侧该参数值的唯一性,可以用递增的数字或者UUID来实现。当设备收到平台下发的topic中包含request_id时,设备侧响应的request_id需要跟平台下发的保持一致。 设备侧订阅带{request_id}参数的topic时,可以使用通配#。如设备侧订阅命令下发请求的topic $oc/devices/{device_id}/sys/commands/request_id={request_id}时,可以用$oc/devices/{device_id}/sys/commands/#。 平台采用了隐式订阅的功能,对于下行的系统topic,设备无需订阅,平台默认该设备订阅了qos为0的系统topic。如果需要qos为1的下行系统topic,需要设备自行订阅。 除了device_id、request_id其他均为系统字段。 父主题: 设备侧MQTT/MQ TTS 接口参考