在本节课里,我们将使用ESP8266配合MQTTfx客户端软件,通过实际操作来看一下MQTT的QoS是如何发挥作用的。
在开始本节课以前请确保您的电脑已经成功安装了MQTTfx软件。另外我们还将使用PubSubClient库。您可以通过以下链接获取此库。
- 官 地址:https://pubsubclient.knolleary.net/
- GitHub:https://github.com/knolleary/pubsubclient/
- 百度 盘下载:https://pan.baidu.com/s/12MHGbdfiOdwOGip5RMSSEQ 提取码: sizy
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 QoS1订阅主题.
本程序旨在演示如何使用PubSubClient库使用ESP8266向MQTT服务器订阅信息。
订阅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信息。)
要使用QoS=1订阅MQTT消息,需要满足以下要求:
1 接收端要有确定的clientID
2 接收端连接服务器时 cleanSession=False
3 发送端发布消息时 QoS=1或QoS=2
4 接收端订阅消息时 QoS=1
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!