2-2 ESP8266 QoS应用

位置导航: 首页 / 零基础入门学用物联网总目录 / MQTT篇目录 /本页

在本节课里,我们将使用ESP8266配合MQTTfx客户端软件,通过实际操作来看一下MQTT的QoS是如何发挥作用的。

在开始本节课以前请确保您的电脑已经成功安装了MQTTfx软件。另外我们还将使用PubSubClient库。您可以通过以下链接获取此库。

官网地址:https://pubsubclient.knolleary.net/
GitHub:https://github.com/knolleary/pubsubclient/
百度网盘下载: https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取码: sizy

当您将PubSubClient库安装后,我们就可以使用该库进行开发了。假如您不知道如何安装该库,可以参考本站的这篇教程文章

PubSubClient库目前只支持1级QoS订阅,因此我们将仅介绍如何使用ESP8266接收QoS=1的MQTT消息。


使用ESP8266接收QoS=1的MQTT消息

要使用QoS=1订阅MQTT消息,需要满足以下要求:
1 接收端要有确定的clientID
2 接收端连接服务器时 cleanSession=False
3 发送端发布消息时 QoS=1或QoS=2
4 接收端订阅消息时 QoS=1

以下是ESP8266订阅QoS=1消息的示例程序。您可以将此程序上传ESP8266开发板并且通过以下步骤测试ESP8166开发板QoS=1的订阅情况。

– 在此程序控制下,ESP8266启动后将会尝试连接MQTT服务端。
连接时cleanSession=false。
– 接下来ESP8266在订阅主题时,将QoS设置为1。
– 保持ESP8266在线,使用MQTTfx向ESP8266所订阅的主题发布QoS=1的信息。
– ESP8266将会收到信息(至此还没有体现QoS=1的优势)
– 将ESP8266断电,然后再次使用MQTTfx向ESP8266订阅主题发布QoS=1的信息。
此时由于ESP8266未通电,所以无法接收到MQTTfx发送的信息。因此MQTT服务端
将会保存此信息。
– 将ESP8266再次通电,ESP8266连接到MQTT服务端后,将会马上收到了MQTTfx在ESP8266断电时所发送的信息。(这就是QoS=1的优势,即客户端断电再通电后依然可以收到QoS=1信息。)