MQTT(Message Queuing Telemetry Transport)代表消息队列遥测传输
它是一个轻量级的发布和订阅系统,你可以在其中作为客户端发布和接收消息。
MQTT是一种简单的消息传递协议,设计用于具有低带宽的受限设备。因此,它是物联网应用程序的完美解决方案。MQTT允许你发送命令以控制输出,从传感器节点读取和发布数据等等。
因此,使得在多个设备之间建立通信变得非常容易。
进阶描述
你可以与客户端(例如Node-RED等)发送命令以控制输出:
或者,你可以从传感器读取数据并将其发布到客户端(例如Node-RED):
MQTT基本概念
在MQTT中,你需要了解一些基本概念:
- 发布与订阅
- 信息(通知)
- 主题
- Broker
MQTT –发布/订阅
第一个概念是发布和订阅系统。在发布和订阅系统中,设备可以在主题上发布消息,或者可以订阅特定主题以接收消息
- 例如,设备1(Device 1)在一个主题上发布。
- 设备2(Device 2)已订阅与发布设备1(Device 1)相同的主题。
- 因此,设备2(Device 2)接收到该消息。
MQTT –消息
主题是另一个重要概念。主题是你感兴趣的传入消息的方式,或者是指定消息发布位置的方式。
主题以用正斜杠分隔的字符串表示。每个正斜杠表示主题级别。这是一个有关如何在家庭办公室中为灯创建主题的示例:
注意:主题区分大小写,这使这两个主题有所不同:
如果你想使用MQTT打开家里办公室的灯,思路大致如下:
- 你有一台可以在“家庭/办公室/灯”主题上发布“开”和“关”消息的设备。
- 你有一台控制灯的设备(可以是ESP32,ESP8266或任何其他板)。用于控制你的灯的ESP32已订阅该主题:家用/办公室/灯。
- 因此,在有关该主题的新消息发布时,ESP32会收到“ on”或“ off”消息,并打开或关闭指示灯。
第一台设备可以是ESP32,ESP8266或家庭自动化控制器平台,例如Node-RED,Home Assistant。
MQTT – Broker
最后,你还需要注意术语:Broker(代理)。
代理主要负责接收所有消息,过滤消息,确定对消息感兴趣的人,然后将消息发布给所有订阅的客户端。
你可以使用几个代理。在家庭自动化项目中,我们使用可以安装在Raspberry Pi中的Mosquitto代理。或者,你可以使用其他云MQTT代理。
怎么在家庭自动化和物联网项目中使用MQTT?
MQTT非常适合家庭自动化和物联网项目。如果你想开始使用MQTT制作自己的项目,以后有时间我会发布些可以做的一个例子,例如下图: