全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
阿里云物联网套件

MQTT协议规范

更新时间:2018-03-27 17:43:49

阿里云MQTT协议说明

MQTT协议版本

目前阿里云支持MQTT标准协议接入(兼容3.1.1和3.1版本协议). 具体的协议请参考 MQTT 3.1.1MQTT 3.1 协议文档.

和标准MQTT区别

  1. 支持MQTT 的 PUB、SUB、PING、PONG、CONNECT、DISCONNECT、UNSUB等报文
  2. 支持cleanSession
  3. 不支持will、retain msg
  4. 不支持QOS2
  5. 基于原生的MQTT topic上支持RRPC 同步模式,服务器可以同步调用设备并拿到设备回执结果

MQTT通道,安全等级

  1. 支持 TLSV1, TLSV1.1,TLSV1.2 版本的协议来建立安全连接 安全级别高
  2. TCP通道基础+芯片级加密(ID2硬件集成) 安全级别高
  3. TCP通道基础+对称加密(使用设备私钥做对称加密)安全级别中
  4. TCP方式(数据不加密) 安全级别低

TOPIC规范

默认情况下创建一个产品后,这产品下的所有设备都拥有以下topic类的权限:

  • /${productKey}/${deviceName}/update pub
  • /${productKey}/${deviceName}/update/error pub
  • /${productKey}/${deviceName}/get sub
  • /sys/${productKey}/${deviceName}/thing/# pub&sub
  • /sys/${productKey}/${deviceName}/rrpc/# pub&sub
  • /broadcast/${productKey}/# pub&sub

我们把这类每个topic规则称为topic类,topic类已经做了设备维度隔离,每个设备发送消息时需要把deviceName替换为自己的设备,您无需担心topic被跨设备越权问题。pub代表数据上报到这个topic的权限,sub代表订阅这个topic的权限。

  1. /${productKey}/${deviceName}/ TOPIC类您可以在控制台自己扩展和定义
  2. 其中sys开头的模版属于系统约定的应用协议通信标准,作为系统预留的topic,是不允许用户自定义的,并且对于约定的topic要符合阿里云ALink数据标准,比如/sys/${productKey}/${deviceName}/thing/xxx 为网关主子设备使用topic类用于网关场景; broadcast 为广播类特定topic

关于RRPC: /sys/${productKey}/${deviceName}/rrpc/request/${messageId}用于同步请求,服务器会对消息Id动态生成topic, 设备端可以订阅通配符: /sys/${productKey}/${deviceName}/rrpc/request/+,然后收到消息后发送pub消息到/sys/${productKey}/${deviceName}/rrpc/response/${messageId},那么服务器就可以在请求时收到同步结果,注意超时时间为5s内,详情参考最佳实践

本文导读目录