MQTT 是什么以及它的工作原理 #
本文介绍了 MQTT 协议。MQTT 代表消息队列遥测传输(Message Queuing Telemetry Transport),是一种适用于物联网设备之间通信的简单消息传递协议。
什么是 MQTT? #
MQTT 代表消息队列遥测传输。MQTT 是一种简单的消息传递协议,专为带宽受限的设备而设计。因此,它是在多个 IoT 设备之间交换数据的完美解决方案。
MQTT 通信作为发布和订阅系统工作。设备发布有关特定主题的消息。订阅该主题的所有设备都会收到该消息。
其主要应用包括发送消息来控制输出、从传感器节点读取和发布数据等等。
MQTT 基本概念 #
在 MQTT 中,您需要了解一些基本概念:
- 发布/订阅
- 消息
- 主题
- 代理
发布/订阅 #
第一个概念是发布和订阅系统。在发布和订阅系统中,设备可以发布关于某个主题的消息,也可以订阅某个特定主题以接收消息
- 例如,设备 1 发布某个主题。
- 设备 2 订阅了设备 1 发布内容的同一主题。
- 因此,设备 2 接收该消息。
消息 #
消息是您想要在设备之间交换的信息。例如,它可以是命令之类的消息,也可以是传感器读数之类的数据。
主题 #
另一个重要概念是主题。主题是您注册对传入消息的兴趣的方式,或指定要发布消息的位置的方式。
主题用正斜杠分隔的字符串表示。每个正斜杠表示一个主题级别。以下是为您家庭办公室中的灯创建主题的示例:
注意:主题区分大小写,这使得这两个主题有所不同:
如果您想使用 MQTT 打开家庭办公室的灯,您可以想象以下场景:
- 设备在 home/office/lamp 主题上发布“开”和“关”消息。
- 您有一个控制灯的设备(可以是 ESP32、ESP8266 或任何其他电路板或设备)。控制灯的 ESP32 订阅了同一主题:home/office/lamp。
- 因此,当在该主题上发布新消息时,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/