更新时间:2023-11-30 GMT+08:00
分享

MQTT使用指导

概述

MQTT(Message Queuing Telemetry Transport)是一个基于客户端-服务器的消息发布/订阅传输协议,主要应用于计算能力有限,且工作在低带宽、不可靠的网络的远程传感器和控制设备,适合长连接的场景,如智能路灯等。更多关于MQTT协议语法及接口信息,请访问这里获取。

MQTTS是MQTT使用TLS加密的协议。采用MQTTS协议接入平台的设备,设备与物联网平台之间的通信过程,数据都是加密的,具有一定的安全性。

业务流程

采用MQTT协议接入物联网平台的设备,设备与物联网平台之间的通信过程,数据没有加密,建议使用MQTTS协议。

若选择MQTTS协议接入平台,建议通过使用IoT Device SDK接入

  1. 设备接入前,需创建产品(可通过控制台创建或者使用应用侧API创建产品)。
  2. 产品创建完毕后,需注册设备(可通过控制台注册单个设备或者使用应用侧API注册设备创建)。
  3. 设备注册完毕后,可以按照图中流程实现消息/属性上报、接收命令/属性/消息、OTA升级、自定义Topic等功能。关于平台预置Topic可参考Topic定义

您可以通过mqtt.fx进行原生协议接入调测,可以参考快速体验mqtt接入

使用限制

描述

限制

支持的MQTT协议版本

支持MQTT v3.1/v3.1.1/v5.0协议版本,不支持协议中的QoS2、will、retain msg。

与标准MQTT协议的区别

  • 支持Qos 0和Qos 1
  • 支持Topic自定义
  • 不支持QoS2
  • 不支持will、retain msg

MQTTS支持的安全等级

采用TCP通道基础 + TLS协议(最高TLSv1.3版本)

单帐号每秒最大MQTT连接请求数

无限制

单个设备每分钟支持的最大MQTT连接数

1

单个MQTT连接每秒的吞吐量,即带宽,包含直连设备和网关

3KB/s

MQTT单个发布消息最大长度,超过此大小的发布请求将被直接拒绝

1MB

MQTT连接心跳时间建议值

心跳时间限定为30至1200秒,推荐设置为120秒

产品是否支持自定义Topic

支持

消息发布与订阅

设备只能对自己的Topic进行消息发布与订阅

每个订阅请求的最大订阅数

无限制

平台推荐用户设备与平台通信采用加密通道(接入端口8883),保障设备通信安全。

MQTT设备与物联网平台通信

设备使用MQTT协议接入平台时,平台和设备通过Topic进行通信。物联网平台预置了Topic,通过这些预置的Topic,平台和设备可以实现消息、属性、命令的交互。您还可以在设备接入控制台,自定义Topic,实现设备平台通信的个性化配置。

数据类型

消息类型

说明

数据上行

设备属性上报

用于设备按产品模型中定义的格式将属性数据上报给平台。

设备消息上报

设备无法按照产品模型中定义的属性格式进行数据上报时,将设备的自定义数据通过设备消息上报接口上报给平台,平台将设备上报的消息转发给应用服务器或华为云其他云服务上进行存储和处理。

网关批量属性上报

用于网关设备将多个设备的属性数据一次性上报给平台。

设备事件上报

用于设备按产品模型中定义的格式将事件数据上报给平台。

数据下行

平台消息下发

用于平台下发自定义格式的数据给设备。

平台设置设备属性

设备的产品模型中定义了平台可向设备设置的属性,平台/应用服务器可通过属性设置的方式修改指定设备的属性值。

平台查询设备属性

平台/应用服务器通过属性查询的方式,实时查询指定设备的属性数据。

平台命令下发

平台/应用服务器按产品模型中定义的命令格式下发控制命令给设备。

平台事件下发

平台/应用服务器按产品模型中定义的事件格式下发事件给设备。

Topic接口介绍

物联网平台预置的Topic如下表所示:

Topic分类

用途

Topic

Public(发布者)

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

平台

设备

另外,用户还可以通过在控制台上设置自定义Topic,上报用户个性化的数据。具体可参考自定义Topic

MQTT的TLS支持

平台推荐使用TLS来保护设备和平台的传输安全。目前支持四个版本的TLS协议,即版本1.0、1.1、1.2和1.3。TLS 1.0和1.1被视为旧版,并计划弃用,强烈建议使用TLS 1.2和TLS 1.3作为首选TLS版本。使用TLS连接时平台仅支持如下加密套件:

  • TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  • TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
  • TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
  • TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  • TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
分享:

    相关文档

    相关产品