ONENET设备终端接入协议4-MQTT

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Message Queuing Telemetry Transport(MQTT)
目录
1 说明.......................................................................... 错误!未定义书签。

2 接入流程...................................................................... 错误!未定义书签。

3 Packet格式说明 ............................................................... 错误!未定义书签。

Fixed header ................................................................ 错误!未定义书签。

Variable Header &Payload .................................................... 错误!未定义书签。

4 支持的packet ................................................................. 错误!未定义书签。

CONNECT ............................................................... 错误!未定义书签。

Fixed Header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

CONNACK ............................................................... 错误!未定义书签。

Fixed Header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

PUBLISH(client -> server)........................................... 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

PUBLISH(server -> client)........................................... 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

PUBACK ................................................................ 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

SUBSCRIBE ............................................................. 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

SUBACK ................................................................ 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

UNSUBSCRIBE ........................................................... 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

Payload .................................................................. 错误!未定义书签。

UNSUBACK ..................................................................... 错误!未定义书签。

Fixed header ............................................................. 错误!未定义书签。

VariableHeader ........................................................... 错误!未定义书签。

5 接入流程...................................................................... 错误!未定义书签。

连接鉴权.............................................................. 错误!未定义书签。

消息发布.............................................................. 错误!未定义书签。

数据点上报............................................................... 错误!未定义书签。

平台命令(下发&回复) ...................................................... 错误!未定义书签。

创建Topic ................................................................... 错误!未定义书签。

订阅......................................................................... 错误!未定义书签。

取消订阅..................................................................... 错误!未定义书签。

推送设备Topic ............................................................... 错误!未定义书签。

1说明
MQTT协议详细内容请参见MQTT version 官方文档,本文档对此不做详细说明,仅指明OneNet的要求、默认参数、以及当前实现与MQTT官方文档的差异。

该版本支持的功能:
鉴权;
数据点上报(平台指定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连接请求到以下地址,发送封装的报文与平台交互。

平台服务器地址,TCP 端口6002
3Packet格式说明
包格式包含三部分:
Fixed header
该版本支持的所有类型:
C S
C S
Variable Header &Payload
4支持的packet
4.1 CONNECT
Fixed Header
VariableHeader
byte 5‘T’01010100 byte 6‘T’01010100 Byte7Protocol Level00000001
Byte8Connect Flag User
flag Password
flag
WillRetain
Flag
WillQos
Flag
WillFlag CleanSession
Flag
Reserve
Byte9-10KeepAlive
(1)版本
必须设置为4,平台只支持版本v ,不支持更老的版本。

使用第三方客户端时需要注意选择正确的版本。

(2)user flag与password flag
平台不允许匿名登陆,因此这两个标志位在连接时必须设置为1,否则认为协议错误,平台将会断开连接。

(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)KeepAlive保活时间
每个客户端可自定义设置连接保持时间,最短120秒,最长65535秒。

Payload
Description是否必须存在格式
Field1Client 是2字节字串长度 + utf8字串
与鉴权相关的字段包含client id,username和password,支持鉴权方式。

各字段说明如下:
项目ID:在平台添加项目时平台生成的ID;
鉴权信息(auth_info):在平台申请设备时填写设备的auth_info属性(数字+字母的字符串),该属性需要产品内具备唯一性;
4.2 CONNACK
Fixed Header
VariableHeader
Sp: Session Present Flag,session信息在服务器已保持,置1;未保存,置0。

返回码说明:
失败:
*如果connect包不符合协议内容约束,则直接断掉连接,而不需要发送connack包. *如果鉴权或授权失败,回复一个带非0错误码的connack包.
成功:
*必须断掉重复的clientid.
*执行cleansession 对应的操作.
*必须回复一个connack,回复码为0.
*开始消息传递,并加入keepalive的监视.
PS:客户端需要等到服务端的connack报文,才能发送后续的数据包.
4.3PUBLISH(client -> server)
Fixed header
DUP:
QoS1:如果为0,则表示是第一次发送该包,如果为1,则表示为重复发送的包。

Qos0:DUP必须为0
QOS: 指定了该publish包的qos等级如下
RETAIN: 暂不实现
PS:该版本只实现Qos0,Qos1
VariableHeader
Payload
内容根据不同业务自定义.
4.4PUBLISH(server -> client)
Fixed header
DUP:
QoS1:如果为0,则表示是第一次发送该包,如果为1,则表示为重复发送的包。

Qos0:DUP必须为0
QOS: 指定了该publish包的qos等级如下 RETAIN:
PS:该版本只实现Qos0
VariableHeader
Payload
内容根据不同业务自定义.
4.5 PUBACK
Fixed header
VariableHeader
4.6 SUBSCRIBE
Fixed header
VariableHeader
Payload
说明
可以包含一个或多个topic.
topic必须是数字、英文、反斜杠(/)的组合,目前不支持通配符。

每个客户端最多订阅100个topic;
以下topic被系统保留使用,(客户端不能订阅):
4.7SUBACK
Fixed header
VariableHeader
Payload
返回码说明:
4.8UNSUBSCRIBE Fixed header
VariableHeader
Payload
可以包含一个或多个topic. UNSUBACK
Fixed header
VariableHeader
5接入流程
5.1连接鉴权
Device Onenet
(Connect)鉴权请求
(ConnAck)鉴权结果加载session
鉴权
设备向平台发起connect请求.connect中携带鉴权信息,具体参见(报文格式参考
平台拿到鉴权信息进行鉴权.
鉴权通过后,如果cleansession=0, 平台将会加载保存的设备的一些信息.如订阅列表中描述).如果cleansession=1, 设备没有保存信息在平台,则不加载设备相关信息.
返回鉴权结果ConnAck(报文格式参考.
5.2消息发布
数据点上报
设备使用publish报文来上传数据点,报文格式如下: VariableHeader:
Payload:
Payload包含真正的数据点内容,支持的格式如下:
Qos1(Client->Server)
Device OneNet
Publish $dp(Qos1)
存储
PubAck
设备发布Qos0消息(上报数据点)
平台收到上报数据点后保存起来.
平台给设备回复PubAck(报文格式参考
平台命令(下发&回复)
命令下发
平台使用publish报文来下发平台指令,报文格式如下:
FixHeader:
参考 VariableHeader:
Field名称说明格式
2字节字串长度 + utf8字串Field1TopicName=”$creq/cmduuid”$creq为系统下发Cmd的指令,
cmduuid为该条指令的uuid
Payload:
Payload包含真正的指令内容
Qos0(Server->Client)
OneNet
Device
Publish $creq(Qos0)
命令下发:
平台向设备发送topic为$creq的消息(该topic为平台命令).
设备收到topic为$creq的topic时,需将其作为平台下发的指令来处理.
命令回复
设备使用publish报文来回复平台指令,报文格式如下:
FixHeader:
参考 VariableHeader:
Payload:
Payload包含真正回复的指令内容
Qos0(Client->Server)
Qos1(Client<-> Server)
如果设备回复响应时以Qos1回复,则平台需要给设备回复一个Puback消息
5.3创建Topic
Device OneNet
HTTP 请求
HTTP 响应
设备通过发送HTTP请求进行topic的创建操作.
平台收到请求后创建topic并返回结果.
请求及响应定义如下:
HTTP 方法POST
URL
头部api-key:xxxx-ffff-zzzzz,必须master key URL参数
HTTP body 内容{
“name”:”xxxx xx”
Device OneNet
Subscribe
Suback
更新设备订阅列表
报文格式参考平台收到请求后更新topic列表.
平台给设备回复SubAck. (报文格式参考
5.4取消订阅
Device OneNet
UnSubscribe
UnSuback
更新设备订阅列表
设备发起取消订阅请求. (报文格式参考
平台收到请求后更新topic列表.
平台给设备回复UnSubAck. (报文格式参考
5.5推送设备Topic
Publish报文推送:
Device OneNet
Publish
PubAck
Device Publish到订阅设备
设备发起推送topic 请求.(报文格式参考平台收到请求后,将topic 推送到相关订阅设备.(目前只支持在线推送)
平台返回推送ack(取决于qos).(报文格式参考
设备使用publish 报文来推送Topic. 报文格式如下:
FixHeader :
参考 VariableHeader :
Field 名称 说明
格式 Field1 TopicName
填写设备订阅的topic 2字节字串长度 + utf8字串
Payload :
Payload 为设备自定义内容
HTTP 请求推送
Device OneNet HTTP 请求
HTTP 响应
Device
Publish 到订阅设备
设备以HTTP 的方式发起推送topic 请求.
平台收到请求后,将topic 推送到相关订阅设备.(目前只支持在线推送)
平台返回推送结果.
请求及响应定义如下:
HTTP 方法 POST
PS: 欢迎访问设备云门户网站注册用户,获取最新文档。

相关文档
最新文档