平时学习MQTT或调试设备,推荐一款MQTT工具: MQTT Assistant
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 代理(Eclipse Mosquitto)。您也可以在 PC 上安装 Mosquitto 代理(这不如使用 Raspberry Pi 板那么方便,因为您必须让计算机始终保持运行才能保持设备之间的 MQTT 连接)。
在本地网络上的 Raspberry Pi 上安装 Mosquitto 代理后,您可以在连接到同一网络的 IoT 设备之间交换数据。
您还可以在云中运行 Mosquitto MQTT 代理。在云中运行 MQTT Mosquitto 代理后,您可以使用不同的网络从任何地方连接多个 IoT 设备,只要它们有互联网连接即可。
标签:订阅,主题,发布,工作,MQTT,消息,原理,设备 From: https://blog.csdn.net/qq_32779119/article/details/142203252版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:介绍 | 博客