一.说明
OneNET平台对Mqtt协议进行了封装,兼容Mqtt标准协议的大部分内容,同时利用mqtt实现平台原有的数据上报,指令下发等OneNet平台特性.
该Mqtt版本支持的功能:
1.连接接鉴权。
2.订阅/取消订阅Topic。
3.Topic推送。
4.Qos0(C<=>S) ,Qos1(C->S)。
5.数据点上报。(OneNet平台特性)
6.平台指令下发/回复。(OneNet平台特性)
参考文档:
二.接入流程
1.创建产品
登录ONENET平台(//open./),创建产品时选择公开协议MQTT。
2.创建设备
在MQTT协议产品中添加设备,录入设备名称和鉴权信息等,记录下产品ID,设备ID,以及AuthInfo.(后续连接鉴权时使用)。
3.和服务器建立连接
设备需先和服务器建立Tcp连接,Mqtt服务器地址为183.230.40.39,端口6002。
4. Mqtt业务交互
和Mqtt服务器成功建立Tcp连接后,就可以开始业务报文的交互了. 报文交互流程及格式
三.调试工具
1. MQTT windows 虚拟设备:
该虚拟设备实现了该版本所有功能,如下:
下载:
四.常见问题
1. Mqtt连接鉴权时,Payload中ClientIdentifier;UserName;UserPassword分别填写什么?
ClientIdentifier: 填写在OneNet平台创建设备时得到的设备ID,为数字字串。
UserName: 填写在OneNet注册产品时,平台分配的产品ID,为数字字串。
UserPassword: 填写在OneNet添加设备时,为设备添加的AuthInfo,为字符串。
2. Mqtt需要在连接鉴权通过后才能发送其它报文吗?
是的,Mqtt协议必须在鉴权通过后(收到ConnAck后),才能发送后续报文进行交互,不然服务器会直接丢弃报文.
3. Mqtt可以订阅Topic有什么限制?
* 订阅Topic前,必须先创建Topic,创建后,创建topic的设备以及其他同产品内设备可以订阅该Topic。创建方式:
可以通过平台api来创建,格式如下:
HTTP方法POST
URL///mqtt/topic
HTTP头部api-key:xxxx-ffff-zzzzz,必须master key
URL参数
HTTP body内
容{
“name”:”xxxxxx” //topic名字,只能由英文,下划线,反斜杠
组成,最长1024个字符,同一产品下topic name不重复。
}
成功返回{
"errno": 0,
"error": "succ"
}
说明每个产品最多100个topic
可以用开发者中心在线调试工具构造创建请求
* 不能订阅$开头的topic,其为系统保留topic。