天天看点

HarmonyOS系统中内核实现MQTT协议开发的方法

      大家好,今天主要来聊一聊,如何使用鸿蒙开始实现MQTT协议开发的方法

HarmonyOS系统中内核实现MQTT协议开发的方法

第一:MQTT基本原理   

在MQTT协议通讯中,有两个最为重要的角色。它们分别是服务端和客户端。首先我们来初步了解一下它们。

MQTT服务端

MQTT服务端通常是一台服务器。它是MQTT信息传输的枢纽,负责将MQTT客户端发送来的信息传递给MQTT客户端。MQTT服务端还负责管理MQTT客户端。确保客户端之间的通讯顺畅,保证MQTT消息得以正确接收和准确投递。

MQTT客户端

MQTT客户端可以向服务端发布信息,也可以从服务端收取信息。我们把客户端发送信息的行为成为“发布”信息。而客户端要想从服务端收取信息,则首先要向服务端“订阅”信息。“订阅”信息这一操作很像我们在视频网站订阅某一部电视剧。当这部电视剧上新后,视频网站会向订阅了该剧的用户发送信息,告诉他们有新剧上线了。

MQTT主题

刚刚我们在讲解MQTT客户端订阅信息时,使用了用户在视频网站订阅电视剧这个例子。在MQTT通讯中,客户端所订阅的肯定不是一部部电视剧,而是一个个“主题”。MQTT服务端在管理MQTT信息通讯时,就是使用“主题”来控制的。

第二:下载MQTT消息代理工具Mosquitto

    点击​​下载​​Mosquitto 工具

HarmonyOS系统中内核实现MQTT协议开发的方法

 下载后双击安装包,安装工具,安装完毕后,打开电脑设备管理器,在“服务”中开启mosquitto服务。

HarmonyOS系统中内核实现MQTT协议开发的方法

修改安装路径下的mosquitto.conf文件 修改515行附近代码

HarmonyOS系统中内核实现MQTT协议开发的方法

 修改216行附近代码,其中​

​192.168.0.173​

​为自己的电脑的IP地址

HarmonyOS系统中内核实现MQTT协议开发的方法

第三:下载Eclipse Paho MQTT 工具

    点击​​下载​​Eclipse Paho MQTT 工具

HarmonyOS系统中内核实现MQTT协议开发的方法

 解压缩后,双击paho.exe,打开后的Eclipse Paho UI开始界面,点击上图中的 十字图标,就能新建一个MQTT的客户端的连接,如下图所示。

HarmonyOS系统中内核实现MQTT协议开发的方法

输入正确的MQTT服务端的连接地址,比如,本例中的连接地址是tcp://localhost:1883,然后点击“连接”按钮,这个时候,如果MQTT服务端没有设置密码(默认情况是没有密码的)的话,这个时候,我们就能看到连接得到状态是“已连接”,如下图所示: 

HarmonyOS系统中内核实现MQTT协议开发的方法

 这个时候我们就能订阅消息了。选择“订阅”下方的绿色十字图标,就可以输入订阅的主题(topic)的名字,比如我们设置主题名称为

HarmonyOS系统中内核实现MQTT协议开发的方法

 第四:修改对接IP

    将代码中对接的IP修改为电脑在命令行窗口里输入 ​

​ipconfig​

​ 查询的电脑的本地IP。

HarmonyOS系统中内核实现MQTT协议开发的方法
HarmonyOS系统中内核实现MQTT协议开发的方法

第五:修改BUILD.gn文件

      修改 ​

​applications\sample\BearPi\BearPi-HM_Nano​

​​路径下 BUILD.gn 文件,指定 ​

​iot_mqtt​

​ 参与编译。

#"D1_iot_wifi_sta:wifi_sta",
#"D2_iot_wifi_sta_connect:wifi_sta_connect",       
#"D3_iot_udp_client:udp_client",
#"D4_iot_tcp_server:tcp_server",
"D5_iot_mqtt:iot_mqtt",        
#"D6_iot_cloud_oc:oc_mqtt",
#"D7_iot_cloud_onenet:onenet_mqtt",      

第六: 编译号代码并烧写到开发板

     示例代码编译烧录代码后,按下开发板的RESET按键,Eclipse Paho MQTT 工具上会接收到开发板发布的消息。

HarmonyOS系统中内核实现MQTT协议开发的方法

 往开发板发送一条消息主题为“substopic”,内容为“Hello HarmoayOS!”的MQTT消息。然后点击“发布”按钮,这个时候,我们就能看到消息已经发送成功。

HarmonyOS系统中内核实现MQTT协议开发的方法

 且开发板的串口上也打印出接收消息成功的信息。