ONENET设备终端接入协议4-MQTT_第1页
ONENET设备终端接入协议4-MQTT_第2页
ONENET设备终端接入协议4-MQTT_第3页
ONENET设备终端接入协议4-MQTT_第4页
ONENET设备终端接入协议4-MQTT_第5页
已阅读5页,还剩24页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、ed Header 错误!未定义书签。VariableHeader 错误!未定义书签。Payload 错误!未定义书签。CONNAC.K错误!未定义书签。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 错误!未定义书签。UNSUBSCRIB.E错误!未定义书签。Fixed header 错误!未定义书签。VariableHead

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

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

6、台交互。平台服务器地址,TCP端口 60023 Packet格式说明包格式包含三部分:Fixed Header所有packet中都必须有Varable Header部分包含有Payload部分包含有Fixed headerBit76543210byte 1MQTT Packet Type0000byte2 - 5Remaining Length (该字段占用 1-4个字节)该版本支持的所有类型:名字值流向描述CONNECT1C->S客户端请求与服务端建立连接CONNACK2S->C服务端确认连接建立PUBLISH3C S发布消息PUBACK4C S收到发布消息确认SUBSCRIBE

7、8C->S订阅请求SUBACK9S->C订阅确认UNSUBSCRIBE10C->S取消订阅UNSUBACK11S->C取消订阅确认Variable Header &Payload消息类型VariableHeaderPayloadCONNECT有有CONNACK有有PUBLISH有有PUBACK有无SUBSCRIBE有有SUBACK有有UNSUBSCRIBE有有UNSUBACK有无4 支持的packet4.1 CONNECTFixed HeaderBit76543210byte 1MQTT Packet Type0000byte2 - 5Remaining Len

8、gth (该字段占用 1-4个字节)VariableHeaderDescription76543210byte 1-2ProtocolNameLength0000000000000100byte 3,MT01001101byte 4'Q,01010001byte 5T01010100byte 6T01010100Byte7Protocol Level00000001Byte8Connect FlagUserflagPasswordflagWillRetainFlagWillQosFlagWillFlagCleanSessionFlagReserveByte9-10KeepAlive(1

9、) 版本必须设置为4,平台只支持版本 v ,不支持更老的版本。使用第三方客户端时需要注意选择正确的版本。(2) user flag与password flag平台不允许匿名登陆,因此这两个标志位在连接时必须设置为1,否则认为协议错误,平台将会断开连接。(3) 3)will flag与Willretainflag/Willqosflag平台暂不支持 will flag , WillRetain Flag 与 WillQos Flag必须设置为 0。(4) CleanSessionFlag若客户端将clean session标志位设置为0,当其断开后,平台将会保存session , session

10、需保持的内容包含: 客户端订阅的topic列表.客户端保存session的内容包含:已经发送到服务端的但还没有收到确认的Qos1消息列表.待发送的Qos0列表.(5) Reserve保留位,置0。(6) 6)KeepAlive保活时间每个客户端可自定义设置连接保持时间,最短 120秒,最长65535秒。PayloadDescription是否必须存在格式Field1Client是2字节字串长度+ utf8 字串IdentifierField2UserName是2字节字串长度+ utf8 字串Field3UserPassword是2字节字串长度+ utf8 字串与鉴权相关的字段包含client

11、id , username和password ,支持鉴权方式。字段设置消息示例client_id设置为平台创建设备时的设备idusername设置为项目 IDpassword设置为鉴权信息(auth_info )”client_id= " 123"username=" 433223”password="注册的鉴权信息”各字段说明如下:项目ID:在平台添加项目时平台生成的ID;鉴权信息(auth_info ):在平台申请设备时填写设备的auth_info 属性(数字+字母的字符串),该属性需要产品内具备唯一性;4.2 CONNACKFixed Header

12、Bit76543210byte 1MQTT Packet Type0000byte2 - 5Remaining Length (该字段占用 1-4个字节)Sp: Session Present FlagVariableHeaderDescription76543210byte 1Acknowledge Flags0000000Spbyte 2Return Codexxxxxxxxsession信息在服务器已保持,置 1;未保存,置0。返回码说明:返回码描述0成功1协议版本错误2非法的clientid3服务不可用4用户名或密码错误5非法链接(比如token非法)失败:*如果connect包不符合

13、协议内容约束,则直接断掉连接,而不需要发送connack包.* 如果鉴权或授权失败,回复一个带非 0错误码的connack包.成功:* 必须断掉重复的 clientid.* 执行cleansession 对应的操作.* 必须回复一个connack ,回复码为0.* 开始消息传递,并加入keepalive的监视.PS:客户端需要等到服务端的connack报文,才能发送后续的数据包.4.3 PUBLISH (client -> server )Fixed headerBit76543210byte 1MQTT Packet TypeDUP flagQoS LevelRETAINbyte2 -

14、 5Remaining Length (该字段占用 1-4个字节)DUP:Qos0 : DUP、须为 0QOS:指定了该publish包白q qos等级如下RETAIN: 暂不实现Qos值Bit2Bit1描述000取多发送次101至少发送一次PS:该版本只实现Qos0, Qos1VariableHeaderDescription格式是否必须Field1TopicName2字节字串长度+ utf8 字串是Field2PacketIdentifier2kQoS0:否,QoS1:是Payload内容根据不同业务自定义4.4 PUBLISH(server-> client)Fixed heade

15、rBit76543210byte 1MQTT Packet TypeDUP flagQoS LevelRETAINbyte2 - 5Remaining Length (该字段占用 1-4个字节)DUP:QoS1 :如果为0,则表示是第一次发送该包,如果为 1,则表示为重复发送的包。4.6SUBSCRIBEQos0 : DUP、须为 0QOS:指定了该publish包白q qos等级如下RETAIN:Qos值Bit2Bit1描述000取歹发送 沃PS:该版本只实现Qos0VariableHeaderDescription格式Field1TopicName2字节字串长度+ utf8 字串Paylo

16、ad内容根据不同业务自定义4.5 PUBACKFixed headerBit76543210byte 1MQTT Packet Type0000byte2 5Remaining Length (该字段占用 1-4个字节)VariableHeaderDescription76543210byte 12PacketIdentifierPacketIdentifierFixed headerBit76543210byte 1MQTT Packet Type0000byte2 5Remaining Length (该字段占用 1-4个字节)VariableHeaderDescription765432

17、10byte 12PacketIdentifierPacketIdentifierPayloadDescription格式Byte1nTopicName2字节字串长度+ utf8 字串Byten+1Reserved保留字节(兼容说明可以包含一个或多个 topic.topic必须是数字、英文、反斜杠(/)的组合,目前不支持通配符。每个客户端最多订阅100个topic ;以下topic被系统保留使用,(客户端不能订阅):说明$开头平台保留4.7 SUBACKFixed headerBit76543210byte 1MQTT Packet Type0000byte2 5Remaining Lengt

18、h (该字段占用 1-4个字节)VariableHeaderDescription76543210byte 12PacketIdentifierPacketIdentifierPayloadDescription76543210byte 1retcode返回码说明:返回码描述0x00成功0x80失败4.8 UNSUBSCRIBEFixed headerBit76543210byte 1MQTT Packet Type0000byte2 5Remaining Length (该字段占用 1-4个字节)VariableHeaderDescription76543210byte 12PacketId

19、entifierPacketIdentifierPayloadDescription格式Byte1nTopicName2字节字串长度+ utf8 字串可以包含一个或多个 topic.UNSUBACKFixed headerBit76543210byte 1MQTT Packet Type0000byte2 5Remaining Length (该字段占用 1-4个字节)VariableHeaderDescription76543210byte 12PacketIdentifierPacketIdentifier5接入流程5.1连接鉴权DeviceOnenet(Connect)鉴权请求鉴权1力口

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

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

22、d名称说明格式Field1TopicName=" $creq/cmduuid ”$creq为系统下发Cmd的指令,cmduuid为该条指令的uuid2字节字串长度+ utf8 字串Payload:Payload包含真正的指令内容Qos0(Server->Client)OneNetDevice命令下发:平台向设备发送topic为$534的消息(该topic为平台命令).设备收到topic为$仃34的topic时,需将其作为平台下发的指令来处理命令回复设备使用publish报文来回复平台指令,报文格式如下:FixHeader :参考 VariableHeaderField名称说明格

23、式FieldlTopicName="小,.一.”$crsp/cmduuid$crsp为系统处理设备回复cmd的指令,cmduuid为该条指令的uuid2字节字串长度+ utf8 字串Payload:Payload包含真正回复的指令内容Qos0(Client->Server)Qos1(Client<-> Server)OneNetDevice如果设备回复响应时以 Qos1回复,则平台需要给设备回复一个Puback消息5.3仓1J建TopicDeviceneNetHTTP请求HTTP响应设备通过发送HTTP青求进行topic的创建操作平台收到请求后创建topic并返回结果.DeviceOneNet平台收到请求后更新topic列表.报文格式参考平台给设备回复SubAck.(报文格式参考请求及响应定义如下:HTTP方法POSTURL头部api-key:xxxx-f

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论