ONENET设备终端接入协议4-MQTT26088.pdf

上传人:得****3 文档编号:83986478 上传时间:2023-03-31 格式:PDF 页数:26 大小:1.28MB
返回 下载 相关 举报
ONENET设备终端接入协议4-MQTT26088.pdf_第1页
第1页 / 共26页
ONENET设备终端接入协议4-MQTT26088.pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《ONENET设备终端接入协议4-MQTT26088.pdf》由会员分享,可在线阅读,更多相关《ONENET设备终端接入协议4-MQTT26088.pdf(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、Message Queuing Telemetry Transport(MQTT)版本号 修订日期 修订内容 说明 2015/9/8 草稿 2016/4/8 重构 Liuyuan 2016/4/19 丰富报文格式,业务流程 Leihong 2016/7/13 增加设备间订阅,创建 topic 功能 Leihong 目录 1 说明.错误!未定义书签。2 接入流程.错误!未定义书签。3 Packet 格式说明.错误!未定义书签。Fixed header.错误!未定义书签。Variable Header&Payload.错误!未定义书签。4 支持的 packet.错误!未定义书签。CONNECT.错

2、误!未定义书签。Fixed Header.错误!未定义书签。VariableHeader.错误!未定义书签。Payload.错误!未定义书签。CONNACK.错误!未定义书签。Fixed Header.错误!未定义书签。VariableHeader.错误!未定义书签。PUBLISH(client-server).错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误!未定义书签。Payload.错误!未定义书签。PUBLISH(server-client).错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误

3、!未定义书签。Payload.错误!未定义书签。PUBACK.错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误!未定义书签。SUBSCRIBE.错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误!未定义书签。Payload.错误!未定义书签。SUBACK.错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误!未定义书签。Payload.错误!未定义书签。UNSUBSCRIBE.错误!未定义书签。Fixed header.错误!未定义书签。VariableHe

4、ader.错误!未定义书签。Payload.错误!未定义书签。UNSUBACK.错误!未定义书签。Fixed header.错误!未定义书签。VariableHeader.错误!未定义书签。5 接入流程.错误!未定义书签。连接鉴权.错误!未定义书签。消息发布.错误!未定义书签。数据点上报.错误!未定义书签。平台命令(下发&回复).错误!未定义书签。创建 Topic.错误!未定义书签。订阅.错误!未定义书签。取消订阅.错误!未定义书签。推送设备 Topic.错误!未定义书签。1 说明 MQTT 协议详细内容请参见 MQTT version 官方文档,本文档对此不做详细说明,仅指明 OneNet

5、的要求、默认参数、以及当前实现与 MQTT 官方文档的差异。该版本支持的功能:鉴权;数据点上报(平台指定 topic);创建 topic;获取项目的 topic 列表;订阅/取消平台的 topic;设备间 topic 订阅;平台命令下发;Qos0(cS),Qos1(C-S);2 接入流程 2.1 访问平台注册用户;2.2 用户根据业务情况,在“连接请求”章节中选择 EDP 登录方式(目前公测阶段,页面还未提供 MQTT 登录选项,登录方式与 EDP 兼容);2.3 登录需填写设备相关属性,在项目下新增设备,获取项目 ID、设备 ID,以及 authinfo 等信息;2.4 设备发送 TCP 连

6、接请求到以下地址,发送封装的报文与平台交互。平台服务器地址,TCP 端口 6002 3 Packet 格式说明 包格式包含三部分:Fixed Header 所有 packet 中都必须有 Varable Header 部分包含有 Payload 部分包含有 Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2-5 Remaining Length(该字段占用 1-4 个字节)该版本支持的所有类型:名字 值 流向 描述 CONNECT 1 C-S 客户端请求与服务端建立连接 CONNACK 2 S-C 服务端

7、确认连接建立 PUBLISH 3 CS 发布消息 PUBACK 4 CS 收到发布消息确认 SUBSCRIBE 8 C-S 订阅请求 SUBACK 9 S-C 订阅确认 UNSUBSCRIBE 10 C-S 取消订阅 UNSUBACK 11 S-C 取消订阅确认 Variable Header&Payload 消息类型 Variable Header Payload CONNECT 有 有 CONNACK 有 有 PUBLISH 有 有 PUBACK 有 无 SUBSCRIBE 有 有 SUBACK 有 有 UNSUBSCRIBE 有 有 UNSUBACK 有 无 4 支持的 packet 4

8、.1 CONNECT Fixed Header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2-5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 1-2 ProtocolName Length 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 byte 3 M 0 1 0 0 1 1 0 1 byte 4 Q 0 1 0 1 0 0 0 1 byte 5 T 0 1 0 1 0 1 0 0 byte 6

9、 T 0 1 0 1 0 1 0 0 Byte7 Protocol Level 0 0 0 0 0 0 0 1 Byte8 Connect Flag User flag Password flag WillRetain Flag WillQos Flag WillFlag CleanSession Flag Reserve Byte9-10 KeepAlive (1)版本 必须设置为 4,平台只支持版本 v,不支持更老的版本。使用第三方客户端时需要注意选择正确的版本。(2)user flag 与 password flag 平台不允许匿名登陆,因此这两个标志位在连接时必须设置为 1,否则认为协

10、议错误,平台将会断开连接。(3)will flag 与 Willretainflag/Willqosflag 平台暂不支持 will flag,WillRetain Flag 与 WillQos Flag 必须设置为 0。(4)CleanSessionFlag 若客户端将 clean session 标志位设置为 0,当其断开后,平台将会保存 session,session 需保持的内容包含:客户端订阅的 topic 列表.客户端保存 session 的内容包含:已经发送到服务端的但还没有收到确认的 Qos1 消息列表.待发送的 Qos0 列表.(5)Reserve 保留位,置 0。(6)Ke

11、epAlive 保活时间 每个客户端可自定义设置连接保持时间,最短 120 秒,最长 65535 秒。Payload Description 是否必须存在 格式 Field1 Client 是 2 字节字串长度+utf8 字串 Identifier Field2 UserName 是 2 字节字串长度+utf8 字串 Field3 UserPassword 是 2 字节字串长度+utf8 字串 与鉴权相关的字段包含 client id,username 和 password,支持鉴权方式。字段设置 消息示例 client_id 设置为平台创建设备时的设备 id username 设置为“项目

12、ID”password 设置为“鉴权信息(auth_info)”client_id=”123”username=”433223”password=”注册的鉴权信息”各字段说明如下:项目 ID:在平台添加项目时平台生成的 ID;鉴权信息(auth_info):在平台申请设备时填写设备的 auth_info 属性(数字+字母的字符串),该属性需要产品内具备唯一性;4.2 CONNACK Fixed Header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2-5 Remaining Length(该字段占用 1-4 个字节)Var

13、iableHeader Description 7 6 5 4 3 2 1 0 byte 1 Acknowledge Flags 0 0 0 0 0 0 0 Sp byte 2 Return Code x x x x x x x x Sp:Session Present Flag,session 信息在服务器已保持,置 1;未保存,置 0。返回码说明:返回码 描述 0 成功 1 协议版本错误 2 非法的 clientid 3 服务不可用 4 用户名或密码错误 5 非法链接(比如 token 非法)失败:*如果 connect 包不符合协议内容约束,则直接断掉连接,而不需要发送 connack

14、包.*如果鉴权或授权失败,回复一个带非 0 错误码的 connack 包.成功:*必须断掉重复的 clientid.*执行 cleansession 对应的操作.*必须回复一个 connack,回复码为 0.*开始消息传递,并加入 keepalive 的监视.PS:客户端需要等到服务端的 connack 报文,才能发送后续的数据包.4.3 PUBLISH(client-server)Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type DUP flag QoS Level RETAIN byte2-5 Remaining Length

15、(该字段占用 1-4 个字节)DUP:QoS1:如果为 0,则表示是第一次发送该包,如果为 1,则表示为重复发送的包。Qos0:DUP 必须为 0 QOS:指定了该 publish 包的 qos 等级如下 RETAIN:暂不实现 Qos 值 Bit2 Bit1 描述 0 0 0 最多发送一次 1 0 1 至少发送一次 PS:该版本只实现 Qos0,Qos1 VariableHeader Description 格式 是否必须 Field1 TopicName 2 字节字串长度+utf8 字串 是 Field2 PacketIdentifier 2 字节 QoS0:否,QoS1:是 Payloa

16、d 内容根据不同业务自定义.4.4 PUBLISH(server-client)Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type DUP flag QoS Level RETAIN byte2-5 Remaining Length(该字段占用 1-4 个字节)DUP:QoS1:如果为 0,则表示是第一次发送该包,如果为 1,则表示为重复发送的包。Qos0:DUP 必须为 0 QOS:指定了该 publish 包的 qos 等级如下 RETAIN:Qos 值 Bit2 Bit1 描述 0 0 0 最多发送一次 PS:该版本只实现 Q

17、os0 VariableHeader Description 格式 Field1 TopicName 2 字节字串长度+utf8 字串 Payload 内容根据不同业务自定义.4.5 PUBACK Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2 5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 12 PacketIdentifier PacketIdentifier 4.6 SUBSCRIB

18、E Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2 5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 12 PacketIdentifier PacketIdentifier Payload Description 格式 Byte1n TopicName 2 字节字串长度+utf8 字串 Byten+1 Reserved 保留字节(兼容 说明 可以包含一个或多个 topic.topic 必须

19、是数字、英文、反斜杠(/)的组合,目前不支持通配符。每个客户端最多订阅 100 个 topic;以下 topic 被系统保留使用,(客户端不能订阅):类型 说明$开头 平台保留 4.7 SUBACK Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2 5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 12 PacketIdentifier PacketIdentifier Payload Des

20、cription 7 6 5 4 3 2 1 0 byte 1 retcode 返回码说明:返回码 描述 0 x00 成功 0 x80 失败 4.8 UNSUBSCRIBE Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2 5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 12 PacketIdentifier PacketIdentifier Payload Description 格式 B

21、yte1n TopicName 2 字节字串长度+utf8 字串 可以包含一个或多个 topic.UNSUBACK Fixed header Bit 7 6 5 4 3 2 1 0 byte 1 MQTT Packet Type 0 0 0 0 byte2 5 Remaining Length(该字段占用 1-4 个字节)VariableHeader Description 7 6 5 4 3 2 1 0 byte 12 PacketIdentifier PacketIdentifier 5 接入流程 5.1 连接鉴权 DeviceOnenet(Connect)鉴权请求(ConnAck)鉴权结

22、果加载session鉴权 设备向平台发起 connect 请求.connect 中携带鉴权信息,具体参见(报文格式参考 平台拿到鉴权信息进行鉴权.鉴权通过后,如果 cleansession=0,平台将会加载保存的设备的一些信息.如订阅列表中描述).如果 cleansession=1,设备没有保存信息在平台,则不加载设备相关信息.返回鉴权结果 ConnAck(报文格式参考.5.2 消息发布 数据点上报 设备使用 publish 报文来上传数据点,报文格式如下:VariableHeader:Field 名称 说明 格式 Field1 TopicName=”$dp”$dp 为系统上传数据点的指令 2

23、 字节字串长度+utf8 字串 Payload:Payload 包含真正的数据点内容,支持的格式如下:字节 说明bit 7 6 5 4 3 2 1 0 Byte 1 Bit0-5 数据类型指示,目前支持:Type=1 DeviceOneNetPublish$dp(Qos0)存储 .Byte n Qos1(Client-Server)DeviceOneNetPublish$dp(Qos1)存储PubAck 设备发布 Qos0 消息(上报数据点)平台收到上报数据点后保存起来.平台给设备回复 PubAck(报文格式参考 平台命令(下发&回复)命令下发 平台使用 publish 报文来下发平台指令,报

24、文格式如下:FixHeader:参考 VariableHeader:Field 名称 说明 格式 Field1 TopicName=”$creq/cmduuid”$creq 为系统下发 Cmd 的指令,cmduuid 为该条指令的 uuid 2 字节字串长度+utf8 字串 Payload:Payload 包含真正的指令内容 Qos0(Server-Client)DeviceOneNetPublish$creq(Qos0)命令下发:平台向设备发送 topic 为$creq 的消息(该 topic 为平台命令).设备收到 topic 为$creq 的 topic 时,需将其作为平台下发的指令来处

25、理.命令回复 设备使用 publish 报文来回复平台指令,报文格式如下:FixHeader:参考 VariableHeader:Field 名称 说明 格式 Field1 TopicName=”$crsp/cmduuid”$crsp为系统处理设备回复cmd的指令,cmduuid 为该条指令的 uuid 2 字节字串长度+utf8 字串 Payload:Payload 包含真正回复的指令内容 Qos0(Client-Server)DeviceOneNetPulish$crsp(Qos0)Qos1(Client Server)DeviceOneNetPulish$crsp(Qos1)Puback

26、 如果设备回复响应时以 Qos1 回复,则平台需要给设备回复一个 Puback 消息 5.3 创建 Topic DeviceOneNetHTTP 请求 HTTP 响应 设备通过发送 HTTP 请求进行 topic 的创建操作.平台收到请求后创建 topic 并返回结果.请求及响应定义如下:HTTP 方法 POST URL 头部 api-key:xxxx-ffff-zzzzz,必须 master key URL 参数 HTTP body内容 “name”:”xxxxxx”DeviceOneNetSubscribeSuback更新设备订阅列表报文格式参考 平台收到请求后更新 topic 列表.平台

27、给设备回复 SubAck.(报文格式参考 5.4 取消订阅 DeviceOneNetUnSubscribeUnSuback更新设备订阅列表 设备发起取消订阅请求.(报文格式参考 平台收到请求后更新 topic 列表.平台给设备回复 UnSubAck.(报文格式参考 5.5 推送设备 Topic Publish报文推送:DeviceOneNetPublishPubAckDevicePublish到订阅设备 设备发起推送topic请求.(报文格式参考平台收到请求后,将topic推送到相关订阅设备.(目前只支持在线推送)平台返回推送 ack(取决于 qos).(报文格式参考 设备使用 publish

28、 报文来推送 Topic.报文格式如下:FixHeader:参考 VariableHeader:Field 名称 说明 格式 Field1 TopicName 填写设备订阅的 topic 2 字节字串长度+utf8 字串 Payload:Payload 为设备自定义内容 HTTP 请求推送 DeviceOneNetHTTP 请求HTTP 响应DevicePublish到订阅设备 设备以 HTTP 的方式发起推送 topic 请求.平台收到请求后,将 topic 推送到相关订阅设备.(目前只支持在线推送)平台返回推送结果.请求及响应定义如下:HTTP 方法 POST URL 头部 api-key:xxxx-ffff-zzzzz,必须 master key URL 参数 topic=“XXXXXX”,必选,在发送 mqtt 协议的 topic.必填 HTTP body 内容 用户自定义 Json 或二进制数据(小于 64K)成功返回 errno:0,error:“succ”PS:欢迎访问设备云门户网站注册用户,获取最新文档。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁