【ESP8266 QoS 应用】

在本节课里,我们将使用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进行处理,非常感谢!

上一篇 2022年5月22日
下一篇 2022年5月22日

相关推荐