Message Queuing Telemetry Transport - 物联网时代的轻量级通信协议
MQTT (Message Queuing Telemetry Transport) 是一种轻量级的发布-订阅消息传输协议,专为低带宽、高延迟或不可靠的网络环境而设计。它特别适用于物联网设备间的通信。
最小化网络流量和设备资源占用
提供三种QoS级别确保消息可靠性
简单的协议设计,易于在嵌入式设备上实现
MQTT基于发布-订阅模式工作,通过MQTT代理(Broker)实现消息的分发和路由。
MQTT使用主题来组织和过滤消息。主题是一个UTF-8字符串,支持层级结构。
home/livingroom/temperature
home/kitchen/lights/status
device/sensor/+/data
home/#
温度、湿度、空气质量传感器数据实时上报
灯具状态控制、亮度调节、色彩变换
门窗状态监控、报警信息推送
// 温度传感器发布数据
const mqtt = require('mqtt');
const client = mqtt.connect('mqtt://localhost:1883');
client.on('connect', () => {
setInterval(() => {
const data = {
temperature: (Math.random() * 10 + 20).toFixed(1),
humidity: Math.floor(Math.random() * 40 + 40),
timestamp: new Date().toISOString()
};
client.publish(
'home/livingroom/sensors',
JSON.stringify(data)
);
}, 5000);
});
# 安装Mosquitto
sudo apt-get update
sudo apt-get install mosquitto mosquitto-clients
# 启动服务
sudo systemctl start mosquitto
sudo systemctl enable mosquitto
# 测试连接
mosquitto_pub -h localhost -t test/topic -m "Hello MQTT"
mosquitto_sub -h localhost -t test/topic
# 拉取并运行Mosquitto容器
docker run -it -p 1883:1883 -p 9001:9001 \
-v $(pwd)/mosquitto.conf:/mosquitto/config/mosquitto.conf \
eclipse-mosquitto
# 配置文件示例
listener 1883
allow_anonymous true
listener 9001
protocol websockets
桌面版MQTT客户端工具
开源MQTT代理服务器
JavaScript客户端库
企业级MQTT平台