MQTT 概述

MQTT 精要》 标题图片

在不断发展的物联网(IoT)和实时通信协议领域,MQTT 已成为一种功能强大、用途广泛的解决方案。

MQTT 是消息队列遥测传输(Message Queue Telemetry Transport)的首字母缩写(详见下文),它是一种轻量级、高效的消息传递协议,专为资源有限的设备和不可靠的网络而设计。

因此,在这篇文章中,我想深入探讨 MQTT 的历史、应用和优缺点。

MQTT 的历史

MQTT 的起源可追溯到 20 世纪 90 年代末,当时 Andy Stanford-Clark 和 Arlen Nipper 设计了用于监控石油管道的协议。监控偏远地区的长管道显然是一项挑战。

因此,我们的想法是设计出一种非常轻便的设备,这样就可以在荒郊野外从设备上获取必要的信息(状态、温度等)。

可使用 MQTT 监控的远程管道照片

最初的目标是开发一种既能最大限度减少带宽使用量,又能确保可靠数据传输的协议。换句话说,我们的想法是促进石油管道传感器之间的遥测通信,并尽量减少带宽的使用。

它的 "发布-订阅 "模式允许传感器和设备向中心枢纽传输数据,中心枢纽的用户(通常是监控系统)可以接收和处理这些信息。

一旦物联网产品涌现,树莓派(Raspberry Pis)开始流行,MQTT 就成了让设备进行通信的先驱。

因此,MQTT 很快就超越了其最初在遥测领域的应用。

这一演变促使其名称发生了显著变化。

最初,MQTT 代表 MQ Telemetry Transport(MQ 遥测传输),其中 MQ 代表 Message Queue(消息队列)(尽管没有使用消息队列--下文将详细介绍)。

然而,随着其采用率的增长和应用的多样化,该协议的使用范围已经超出了以遥测为中心的范畴。例如,现在您可以用 MQTT 控制东西。

事实上,如果您阅读了我们本周的通讯,那么您已经知道了这一结果、 MQTT 不再代表一组特定的词语.

没错,MQTT 就是 MQTT。

可使用 MQTT 控制的智能家居传感器照片

与上世纪 90 年代相比,今天的应用领域更加广阔和多样化。

除了在遥测方面的传统用途外,MQTT 现在已成为物联网生态系统(包括 PiCockpit)的基石,实现了设备、传感器和应用程序之间的无缝通信。

它的高效和轻便特性使其成为资源有限环境(如嵌入式系统和微控制器)的理想选择。

工作原理

MQTT 采用发布者-订阅者模式。这意味着 MQTT 架构的核心是两个关键组件:发布者和订阅者。

这些组件通过中央代理进行通信,中央代理则充当中间人,负责将信息路由到适当的目的地。

因此,你有三个需要相互通信的设备、传感器或应用程序,如笔记本电脑、Raspberry Pi 和路由器。如果您通过路由器将 Raspberry Pi 和笔记本电脑连接到 WiFi,那么您就可以将路由器用作连接 Pi 和笔记本电脑的中介。

具体来说,设备发送信息的依据是 主题.

这是 MQTT 世界的一个关键词。

主题是超级轻量级的信息。它们会告诉你设备是否处于开启或关闭状态、温度、IP 地址等。主题不会为你提供无穷无尽的信息。

这就是 MQTT 如此高效和稳定的原因。

这也使它成为使用 PiCockpit 监控 Raspberry Pis 的完美选择。因为它能在设备之间提供稳定可靠的连接。

最棒的是,主题的工作原理非常明显。一个主题围绕一串用正向斜线分隔的文本,如

myRaspberryPis / livingRoomPi / 温度

该主题可作为一个信息通道,发送客厅中 Raspberry Pi 的温度。

代理接收信息并将其临时存储。

然后,设备订阅经纪人的特定主题,以获取信息。

这也是 MQTT 一开始就名不副实的原因。这种发布-订阅模式与消息队列模式截然不同,后者是将数据存储起来,直到客户需要时再发送。

MQTT 的应用

正如您所看到的,MQTT 对物联网生态系统大有裨益。它能实现各种设备、传感器和应用程序之间的高效通信,即使在网络非常糟糕的情况下也是如此。

因此,它非常适合带宽有限和连接不稳定的情况。

您可以用它与智能恒温器、电灯和监控摄像头等设备进行无缝通信。例如,温度传感器可以将数据发布到 MQTT 代理,而订阅该主题的恒温器可以实时接收该信息并采取行动。

顺便提一下,这些都是 PiCockpit 可以帮您解决的问题。

监测天气的船只

在工业环境中,工厂和生产线使用 MQTT 监控机器、收集运行效率数据并远程控制流程。它已真正融入各种远程行业。

例如,偏远地区的气象监测站或海上石油钻井平台。要从这些地点获取信息,MQTT 的工作确实非常完美。

优势

MQTT 效率超高。其轻量级设计最大限度地减少了数据传输的开销。其二进制格式和紧凑的报头使其成为处理能力和带宽有限的设备的最佳选择。

它还超级可靠。发布-订阅模式可确保可靠的信息传递。订阅者上线后即可收到错过的信息,防止数据丢失。

而且,对于希望使用它的公司来说,它具有超强的可扩展性。当更多设备或用户加入网络时,该架构可以轻松扩展。经纪人可以有效地处理大量的发布者和订阅者,而不会对性能造成重大影响。

不过,与所有协议一样,它也有一些缺点。

劣势

虽然 MQTT 确实提供了用户名和密码验证等基本安全机制,但对于高度敏感的应用来说可能还不够。因此,有时必须使用 SSL/TLS 加密和高级身份验证等安全措施。

另一个缺点是数据丢失。默认情况下,MQTT 代理不会存储消息,如果设备发布消息时订阅者离线,就会导致数据丢失。

当然,你也可以把这看作是安全方面的积极因素,因为可访问的数据并不多。

但是,持久信息传递确实需要额外的配置。

虽然 MQTT 本身相对简单(尤其是对家庭自动化而言),但实施一个包含经纪人、发布者和订阅者的完整 MQTT 生态系统可能会变得复杂。

因此,尽管 MQTT 具有很强的可扩展性,但公司和组织在维护方面肯定会遇到困难。

PiCockpit 如何使用 MQTT

PiCockpit 是我们最喜欢的监视和控制 Raspberry Pis 的方式,它利用 MQTT 的强大功能对设备网络进行无缝、高效的控制。

通过使用 MQTT 作为通信协议,PiCockpit 为用户提供了远程管理 Raspberry Pi 机群的全面工具集,使其成为爱好者、开发人员和专业人士不可或缺的工具。

PiCockpit MQTT 按钮

PiCockpit 的核心功能是让用户能够监控 Raspberry Pi 设备的各个方面,如 CPU 和内存使用情况、网络统计数据和连接的硬件组件。

单个设备通过 MQTT 的发布-订阅架构收集信息并在网络上共享。每个 Raspberry Pi 都是 MQTT 客户端,能够发布和订阅特定主题,从而实现实时数据交换。

在 PiCockpit 中使用它的主要优势之一是它的轻量级特性,这与 Raspberry Pi 设备资源有限的环境完全吻合。

高效的信息打包和低开销确保了即使处理能力有限的设备也能参与数据交换,而不会对性能造成显著影响。

PiCockpit 的方法不仅限于数据监控。它为远程管理操作提供了便利,使您能够从一个中央控制面板上对 Raspberry Pi 设备执行命令。

通过订阅相应的主题,用户可以在设备上触发软件更新、系统重启或自定义脚本等操作。

这种双向通信确保 PiCockpit 不仅仅是一个被动的监控工具,还是一个主动的设备管理平台。

此外,PiCockpit 对 MQTT 的利用还可帮助您的项目轻松扩展。

随着监控设备数量的增加,MQTT 代理可无缝处理不断增加的数据流和消息流。这种可扩展性证明了它在不影响性能的情况下管理众多客户端的固有能力。

PiCockpit 可监控 Raspberry Pis

总之,PiCockpit 与 MQTT 的集成展示了该协议在远程设备管理领域的多功能性和高效性。

因此,PiCockpit 不仅能让您监控树莓派机群,还能让您轻松管理机群。您只需在 Raspberry Pi 上安装 PiCockpit 客户端,然后就可以开始使用了!

总结

MQTT 是让设备相互对话的绝佳方式。

重量轻。可靠。而且,它用途广泛。

最重要的是,它不再只是一个被动收集数据的通信协议。现在,您可以用它来远程主动控制设备和传感器。

MQTT 是实现无缝高效通信协议库中的重要工具。

最重要的是,如今物联网和家庭自动化项目层出不穷,MQTT 可以让您的生活更美好。

您可以将 PiCockpit 安装到您的 Raspberry Pi 上,亲自体验它的所有优点!

单击此处查看如何使用 MQTT 利用 Pico W 制作光敏电阻 - 这是一个检查 MQTT 功能和效率的绝佳小项目。

您想用 MQTT 改变您的日常生活吗?

2评论

  1. Сергей 在8 月 30, 2023在8:52 上午

    Автор статьи опоздал с написанием статьи о mqtt лет так на десять...

    • Adam 在8 月 30, 2023在9:38 上午

      Лучше поздно, чем никогда.Да, Сергей?

发表评论