关于MQTT协议的相关问题,本文结合OneNET平台提供的虚拟设备工具进行操作介绍,希望对大家有所帮助。
本文主要涉及如下内容:
- 为什么选择MQTT
- 标准的MQTT与OneNET的MQTT实现有何差异
- 如何使用平台提供的MQTT虚拟设备工具
1、为什么选择MQTT协议?
OneNET平台的公开协议类型有HTTP、EDP、MQTT、MDOBUS等多种,我们可以选择其中任何一种协议实现和平台对接,那我们的终端设备开发中到底选择哪一种会好一点呢?这个到没有好坏之分,主要参考终端设备的功能需求来选择。
设备可以采用HTTP协议与OneNET对接,实现数据点的上传和存储,但是不能实现对设备的命令控制,另外平台公开协议产品的业务侧操作接口Restful API是基于HTTP协议的。
设备可以采用EDP协议与OneNET对接,实现数据点的上传和存储,并且能够接收平台下发的设备控制命令,平台支持对EDP消息的透传转发,这样可以实现设备之间(一对一)的消息交互。
OneNET平台对Mqtt协议进行了封装,兼容Mqtt标准协议V3.1.1的大部分内容,同时利用Mqtt实现平台原有的数据上传、指令下发等平台特性,由于MQTT协议提供的消息发布\订阅机制,可以实现设备之间(一对多)的消息交互。
OneNET平台支持标准的MODBUS协议(具体功能参考标准MODBUS协议文档),便于用户能够快速地接入MODBUS协议设备到ONENET平台。
2、标准的MQTT与OneNET的MQTT实现有何差异?
OneNET平台对Mqtt的实现兼容Mqtt标准协议V3.1.1的大部分内容,同时也有一定的差异性,官网文档“设备终端接入协议4-MQTT.docx”对差异性作了详细说明。
文档下载地址:
http://open.iot.10086.cn/doc/art194.html#43
3、如何使用平台提供的MQTT虚拟设备工具?
(1)创建产品
在平台创建一个公开协议产品(设备接入协议类型选择MQTT协议),这里不介绍产品创建过程,请参考平台文档中心“接入帮助”部分的相关内容。
(2)新增设备
在新建的产品中添加两个设备(新增设备的过程同样参考平台文档中心“接入帮助”部分的相关内容),一个作为消息发布者(设备名称为”PUB”,鉴权信息为”pub123456”)一个作为消息订阅者(设备名称为”SUB”,鉴权信息为”sub123456”),如下图所示。
(3)下载虚拟设备调试工具
虚拟设备调试工具下载地址:见另一个下载链接,滚动链接地址打开的页面,
工具如上图,找到并下载,下载完成解压文件包,在解压后的文件夹中点击运行虚拟设备工具 ,登录界面如下图所示。
(4)消息发布者设备登录
打开平台产品信息管理页面,找到产品ID,在产品的设备列表中找到设备“PUB”的设备ID及设备鉴权信息,输入登录信息,选择登录服务器并点击“确定”进行设备登录,如下图所示。
(5)上传数据点
设备登录之后,选择“上传数据点”菜单,然后选择“类型7”,如下图所示。(注意类型7对应的数据流名称及数据点的说明)
输入数据流名称为111,数据流中输入两个数据点值123;456,并点击“上传”按钮,如下图所示。
打开平台的设备管理页面,查看到数据点上传成功,如下图所示。
(6)下发设备命令
打开平台设备管理页面,点击设备的“下发命令”按钮,输入下发的命令内容,然后点击“发送命令”,如下图所示
点击选择虚拟设备的“平台指令接收”菜单,查看到设备已收到平台下发的控制命令,如下图所示。
(7)消息发布与订阅
消息发布者创建TOPIC:点击虚拟设备的“订阅”菜单,点击“创建Topic”按钮,输入TOPIC名字pub_topic1(读者可创建自己的TOPIC名字),点击提交完成TOPIC创建,如下图所示。
消息发布:发布者设备选择“发布”菜单,输入TOPIC名称pub_topic1及内容111222333,(注意QOS选择为0,TOPIC可重复发布;当QOS选择为1,TOPIC重复发布时,PacketID必须递增填入)点击“Submit”按钮,进行消息发布,消息订阅者设备选择“设备TOPIC接收”菜单,我们看到已成功接收到该消息,如下图所示(作为发布者PUB,右为订阅者SUB)。
注意:
消息发布者和订阅者身份是针对某一TOPIC的某一次发布订阅过程而言,发布TOPIC的设备就是这次过程中的消息发布者,其余所有订阅该TOPIC的设备为这次过程中的消息订阅者。
消息发布者也可以同时为消息订阅者,只要设备订阅了本身发布的TOPIC。
TOPIC由产品下的某一设备创建,该TOPIC就位于对应产品的TOPIC列表中,同一产品下的所有设备可以订阅该TOPIC,也可以发布该TOPIC,还可以删除该TOPIC,具体请参考MQTT的HTTP API接口说明。
MQTT的API接口访问OneNET地址:
http://open.iot.10086.cn/doc/art235.html#51