MQTT知识——esp8266

      最后更新:2022-03-28 08:51:17 手机定位技术交流文章

      目录

      • 一、MQTT机制
      • 服务质量(QOS)
      • 保留(保留)
      • 四. 保持生命(心跳机制)
      • MQTT会有效吗?
      • 六、相关资料

      请注意Tai Po Digital的引用。

      图书馆的官方 API 页面提到一个连接到 MQTT 服务器的图书馆。

      一、MQTT机制

      订阅和分发程序是Mqtt协议的核心。

      设备 A 订阅特定主题主题, 如果设备 B 将信息传送给主题主题的订阅, 设备 A 获取订阅主题的信息 。 主题 主题 与 微信 的 公共名称相似 。
      在这里插入图片描述
      在这里插入图片描述

      服务质量(QOS)

      在这里插入图片描述

      什么是服务质量?
      网络系统中的某些信息至关重要,我们必须保证准确提供和接收此类关键信息,而其他信息相对而言则不太重要,在传输过程中丢失此类信息对系统的业绩影响不大。

      MQTT服务的质量用于告诉互联网系统哪些信息对正确传输至关重要,而其他信息即使丢失,也不太重要。

      关税、关税、技术和贸易技术协定有三层服务质量:

      以上三种不同的服务质量级别意味着不同的MQTT传输流程。对于较为重要的MQTT消息,我们通常会选择QoS>0的服务级别(即QoS 为1或2)。

      QoS=1通信的重要信息:
      如果您希望在 MQTT 通讯中达到第一级( Qos=1), 您必须独立确定信件的接收端。 下表详细列出了必须遵循的确切步骤 。

      • 收到端对端连接服务器后, Clear Saymond 设置为虚假 。
      • 在收件者订阅的主题上, QosS=1 。
      • 释放结束时的QosS=1

      在QoS=2通信期间,密切注意。
      要在 MQTT 通信中获取第2级( Qos=2), 我们必须适当配置信件的结尾和接收端。 下表详细列出了必须采取的行动 。

      • 收到端对端连接服务器后, Clear Saymond 设置为虚假 。
      • 关于收件者订阅的主题, QosS=2。
      • 释放结束时的 QosS=2

      总结:

      • 若想实现QoS>0,订阅端连接服务端时cleanSession需要设置为false,订阅端订阅主题时QoS>0,发布端发布消息时的QoS>0。
      • 服务器在分发和订阅信件中选择较低的 QOS 来发送信件, 也称为“ 服务降级 ” 。
      • Qos = 0,利用的网络资源最少,但接收端可能无法接收信息,因此适用于不太重要的数据的传输。
      • QOS=1, MQTT确保电文发送到接收端,但有将电文多次发送到接收端的危险。
      • QOS = 2, MQTT 保证接收者只收到一条电文。 另一方面, QOS 的电文传输速度在凌晨2点最慢, 电文传输需要几次确认, 所以网络资源是最常用的。 这种服务级别适用于基本电文的传输。
      • 虽然质保1和质保2都确保信息传达给客户,但质保1消耗的资源少于质保2。 因此建议,在网络资源更有价值的情况下,使用质保1提供关键信息。

      保留(保留)

      保留消息的作用:
      “信息保留”的概念是世界上最重要的概念之一。我们先看一个场景。预计我们将利用MQTT协议开发一个智能型家庭联网系统。该系统包括一个用于测试和分享室温度数据的MQTT客户端。它监测每个地方目前的室内温度,并将结果发送给货币与货币与货币关系税服务端。

      基于智能家具网络系统的假设,客户还看到关于环境的信息。客户的责任是实时在屏幕上显示当前房间的温度,以便我们能够理解。换句话说,这一环境数据表明,用户一旦开始使用室温主题,就将订阅该主题。这就是室温如何确认 客户发布的消息。显示客户端以获取最新的温度数据,并在屏幕上显示这些数据。

      假设我们的房间温度测试客户在早上7点向服务机构提供最新的室内温度消息,房间温度信息用户将迅速获得信息并在屏幕上显示。

      但是,在7:10时,狗无意中触动了显示客户端的电源,这表明没有客户的电源,电源就自动关闭。当我们发现这一问题时,我们重新连接显示客户端,并在显示客户端时立即订阅室内温度主题。

      但是,当时出现了一个问题。室内温度测量客户在完全点只发布一次温度信息。大约晚上7点左右, 最后一次释放发生。下一次放行将于上午8时举行所以,即使客户似乎同意,它也不能同意室温的主题。还要等到7: 30才能得到最新的室温信息。在早上8点前几分钟它表明客户无法了解目前的室内温度。也不可能在屏幕上显示房间温度数据,让我们看到。

      为了避免上述情况,我们可以指示室温测量客户端 向服务器传送温度数据 每次信息发送到室温主题这意味着客户随时都能订阅流行的主题。该主题将立即收到“保留信息”。这是最近从温度测量客户那里得到的室温消息。

      问题:允许订阅某一专题的设备在其他设备到达之前获得有关该主题的信息。

      在这里插入图片描述
      需要 MQTT 设备来在 PUBLISH 发布保留信息时在 PUBLISH 报告中保留真实信息。 当然,如果要发布非保留信息,在 PUBLISH 报纸中保留Flag 会被设定为虚假信息。

      • 修改保留消息的方法

      每个主题只有一个"保留信息"如果客户想更改“保留信息”,他必须这样做。必须向本专题发送新的“保留信息”。然后服务器将覆盖以前的“ 保留信息 ”, 并使用新的“ 保留信息 ” 。当客户购买主题时服务器向用户客户端发送最新的保留通知 。

      • 删除保留消息的方法

      如果主题的“保留电文”被删除,可以通过向主题发送空的“保留电文”,即零字节有效载荷的“保留电文”来完成。

      四. 保持生命(心跳机制)

      在这里插入图片描述

      为了确定客户是否在线,服务提供者可以采用类似于心跳测试的方法。

      允许客户端避免向服务器发送信件 。您可以定期向服务器发送信息。PINGREQ 是此信息的另一个名称, 用于心跳机制 。心跳请求的目的是通知服务提供者。现有的客户仍然可以访问。服务在收到客户的心跳请求后,即可使用服务。会回复一条消息。PINGRESP 是给这个答案命名的名称 。

      另外,心跳机制不仅用于确定客户是否在线取决于服务。客户也可以使用这一方法来查明他们是否仍然与服务有关联。如果客户一再向服务提供者发出心跳请求(PINGREQ),则可以将其用作替代服务。服务供应商对心跳的确认尚未到来。因此,客户将相信他或她已经断绝了与服务的联系。

      MQTT会有效吗?

      在这里插入图片描述

      MQTT协议允许客户写下“有生命力”的遗嘱, 这样如果客户错误地打破了电线, 服务供应商就可以向公众透露客户的意愿。

      客户意愿只在无意断开的情况下公布;如果客户通常与服务断开,则不采用遗嘱机制,服务供应商也不公布客户意愿。
      在这里插入图片描述
      MQTT 验证的业务建议
      在使用MQTT机制时,我们建议你改进MQTT设备机制。

      假设我们现在有一个 MQTT客户端 与阴蒂 id clit-1 和主题"cliet-1 -will"。

      1. 当客户端-1 连接到服务端时, CONNECT 报告中的遗嘱信息是“ 脱机 ” 。 此信件保留给 True 。

      2. 当客户端-1 成功连接到服务时,"在线"信息被即时传送到遗嘱的主体, "cliet-1-will"。同时,当新闻发布后,将复选框保留到 True 。这样,只要一号机启动并运行当订阅“客户- 1- will” 时, 任何设备都可以接收该设备的在线信息“ 在线 ” 。

      3. 如果Client-1的无意离开, 每一个订阅“cliet-1-will”的装置都会获得离线信息。

      4. 当 cliet-1 重新连接时, “ cliet-1- will” 主题上的留存信息将改为“ 在线 ”, 每一个订阅“ cliet-1- will” 的设备都会在“ 在线 ” 设备上收到一个在线信息 。

      换句话说,可以使用合理的意志力对设备的在线状况进行实时监测。

      六、相关资料

      MQTT学习文档

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/20995.html

          热门文章

          文章分类