MQTT 是什么以及它的工作原理

REDISANT 提供互联网与物联网开发测试套件 #


MQTT 是什么以及它的工作原理 #

本文介绍了 MQTT 协议。MQTT 代表消息队列遥测传输(Message Queuing Telemetry Transport),是一种适用于物联网设备之间通信的简单消息传递协议。

什么是 MQTT? #

MQTT 代表消息队列遥测传输。MQTT 是一种简单的消息传递协议,专为带宽受限的设备而设计。因此,它是在多个 IoT 设备之间交换数据的完美解决方案。

MQTT 通信作为发布和订阅系统工作。设备发布有关特定主题的消息。订阅该主题的所有设备都会收到该消息。

其主要应用包括发送消息来控制输出、从传感器节点读取和发布数据等等。

MQTT 基本概念 #

在 MQTT 中,您需要了解一些基本概念:

  • 发布/订阅
  • 消息
  • 主题
  • 代理

发布/订阅 #

第一个概念是发布和订阅系统。在发布和订阅系统中,设备可以发布关于某个主题的消息,也可以订阅某个特定主题以接收消息

  • 例如,设备 1 发布某个主题。
  • 设备 2 订阅了设备 1 发布内容的同一主题。
  • 因此,设备 2 接收该消息。

消息 #

消息是您想要在设备之间交换的信息。例如,它可以是命令之类的消息,也可以是传感器读数之类的数据。

主题 #

另一个重要概念是主题。主题是您注册对传入消息的兴趣的方式,或指定要发布消息的位置的方式。

主题用正斜杠分隔的字符串表示。每个正斜杠表示一个主题级别。以下是为您家庭办公室中的灯创建主题的示例:

注意:主题区分大小写,这使得这两个主题有所不同:

如果您想使用 MQTT 打开家庭办公室的灯,您可以想象以下场景:

  1. 设备在 home/office/lamp 主题上发布“开”和“关”消息。
  2. 您有一个控制灯的设备(可以是 ESP32、ESP8266 或任何其他电路板或设备)。控制灯的 ESP32 订阅了同一主题:home/office/lamp。
  3. 因此,当在该主题上发布新消息时,ESP32 会收到“开”或“关”消息并打开或关闭灯。

发布消息的设备可以是 ESP32、ESP8266 或支持 MQTT 的家庭自动化控制器平台,例如 Node-RED、Home Assistant、Domoticz 或 OpenHAB。

代理(Broker) #

最后,另一个重要概念是代理。

MQTT 代理负责接收所有消息、过滤消息、决定谁对它们感兴趣,然后将消息发布给所有订阅的客户端。

您可以使用多种代理。在家庭自动化项目中,我们使用安装在 Raspberry Pi 上的 Mosquitto 代理(https://mosquitto.org/)。您也可以在 PC 上安装 Mosquitto 代理(这不如使用 Raspberry Pi 板那么方便,因为您必须让计算机始终保持运行才能保持设备之间的 MQTT 连接)。

在本地网络上的 Raspberry Pi 上安装 Mosquitto 代理后,您可以在连接到同一网络的 IoT 设备之间交换数据。

您还可以在云中运行 Mosquitto MQTT 代理。在云中运行 MQTT Mosquitto 代理后,您可以使用不同的网络从任何地方连接多个 IoT 设备,只要它们有互联网连接即可。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:https://blog.redisant.cn