- 最新动态
- 功能总览
- 服务公告
- 计费说明
- 产品介绍
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
-
API参考
- 应用侧API参考
- 设备侧MQTT/MQTTS接口参考
- 设备侧HTTPS接口参考
- 设备侧LwM2M接口参考
- 安全隧道WebSocket接口参考
- 模组AT指令参考
- 修订记录
- SDK参考
- 场景代码示例
-
常见问题
- 热门问题
-
方案咨询
- 连接IoT平台的业务场景有哪些?
- 设备管理服务和设备接入服务合一后的差异点是什么?
- IAM子用户或子项目是否可以开通物联网平台服务?
- 物联网平台支持在华为云的哪些区域开通?
- 华为是否提供模组/硬件终端/应用软件等?
- IAM用户访问API提示没有权限?(是否区分版本?)
- 创建规则或者设置资源文件存储时候提示赋予Security Administrator权限
- 物联网平台设置默认资源空间的规则是什么?
- 设备接入服务如何获取设备数据?
- 物联网平台的资源空间和设备可以无限创建吗?
- 物联网平台支持批量注册设备吗?
- 物联网平台对应用侧和设备侧在开发或使用时有限制吗?
- 物联网平台支持的DTLS加密算法有哪些?
- 物联网平台支持二进制大小端模式切换吗?
- 什么是NB-IoT?
- 物联网平台支持的硬件架构和使用的相关组件有哪些?
- 如何获取平台接入地址?
- 设备集成相关问题
- 设备侧SDK相关问题
- 设备发放相关问题
- LWM2M/CoAP接入相关问题
- MQTT接入相关问题
- 泛协议接入相关问题
- 物模型相关问题
- 消息通信相关问题
- 订阅推送相关问题
- 编解码插件相关问题
- OTA升级相关问题
- 应用集成相关问题
- 实例管理相关问题
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
MQTT(S)协议接入
概述
MQTT消息由固定报头(Fixed header)、可变报头(Variable header)和有效载荷(Payload)三部分组成。
常见MQTT消息类型主要有CONNECT、SUBSCRIBE、PUBLISH。
Topic说明
设备使用MQTT协议接入时,可通过Topic实现消息的发送和接收。
- 以$oc开头的topic是IoTDA预置的系统topic。您可以在允许的情况下订阅和发布到这些系统预置的Topic;具体Topic列表和功能说明可参考Topic定义。
- 您可以创建非$oc 开头的topic进行自定义消息的发送和接收。
使用限制
描述 |
限制 |
---|---|
单个MQTT直连设备在同一时间的连接数 |
1 |
单账户设备侧每秒最大建链请求数量 |
|
单账号设备侧每秒最大上行的请求数量(单消息payload平均为512字节) |
|
单个MQTT连接每秒最大上行消息数量 |
50/s |
单个MQTT连接最大带宽(上行消息) |
1MB(默认) |
MQTT单条发布消息最大长度。超过此大小的发布请求将被直接拒绝。 |
1MB |
MQTT协议规范 |
MQTT v5.0、MQTT v3.1.1、MQTT v3.1 |
与标准MQTT协议的区别 |
|
MQTT协议支持的安全等级 |
采用TCP通道基础 + TLS协议(TLSv1、 TLSv1.1、TLSv1.2和TLSv1.3版本) |
MQTT连接心跳时间建议值 |
心跳时间限定为30至1200秒,推荐设置为120秒 |
MQTT协议消息发布与订阅 |
设备只能对自己的Topic进行消息发布与订阅 |
单个MQTT连接的最大订阅数量。 |
100个 |
MQTT自定义Topic支持的最大长度 |
128字节 |
MQTT自定义Topic支持每个产品添加的最大个数 |
10个/产品 |
单账号支持上传设备侧CA证书个数 |
100个 |
与标准MQTT协议的兼容说明
华为云IoTDA服务支持设备基于MQTT 5.0、MQTT 3.1.1和 MQTT 3.1规范的接入,但同这些MQTT协议规范有一些差异, IoTDA服务不是简单的MQTT Broker,而是在支持设备使用MQTT协议接入的基础上集成消息通信、设备管理、规则引擎、数据流转等能力。与MQTT标准规范的的区别如下:
- 支持设备与IoTDA服务之间使用MQTT规范中的CONNECT、CONNACK、PUBLISH、PUBACK、SUBSCRIBE、SUBACK、UNSUBSCRIBE、UNSUBACK、PINGREQ、PINGRESP、DISCONNECT等报文进行通信。
- 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。
- 支持MQTT协议规范中的clean session。
- 不支持MQTT协议规范中的will。 IoTDA提供设备状态推送的能力,设备离线后支持根据流转规则将设备状态推送到客户应用或者云服务。
- 不支持MQTT协议规范中retain msg。IoTDA提供消息缓存的能力消息上报和消息下发时支持对消息进行缓存。
支持的MQTT 5.0特性说明
MQTT5.0相关特性仅在企业版支持。
IoTDA服务支持的MQTT 5.0的部分新增特性如下:
- 支持Topic Alias。将消息通信Topic缩小为整型数值,来减小MQTT报文,节约网络带宽资源。
- 支持ResponseTopic 和CorrelationData。消息上报和下发时支持携带这两个参数,实现类似云HTTP的请求和响应。
- 支持设置UserProperty属性列表。每个属性由Key和Value组成,用于在非payload区传输属性数据。
- 支持Content-Type属性。消息上报的报文可以携带Content-Type属性,标识报文类型。
- 支持在CONNACK和PUBACK报文中返回码,便于设备快速定位请求状态及问题。
MQTT的TLS支持
平台推荐使用TLS来保护设备和平台的传输安全。 平台目前支持TLS1.3、1.2 、1.1版本以及GMTLS。其中TLS 1.1 计划后续不再支持,建议使用 TLS 1.3作为首选 TLS 版本。GMTLS版本仅在国密算法的企业版才支持。
基础版,标准版以及支持通用加密算法的企业版使用TLS连接时,平台支持如下加密套件:
- TLS_AES_256_GCM_SHA384
- TLS_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
支持国密算法的企业版使用TLS连接时平台支持如下加密套件:
- ECC_SM4_GCM_SM3
- ECC_SM4_CBC_SM3
- ECDHE_SM4_GCM_SM3
- ECDHE_SM4_CBC_SM3
- TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
- TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
- TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
带CBC的加密套件存在安全风险,请谨慎使用。