56 lines
1.5 KiB
Markdown
56 lines
1.5 KiB
Markdown
---
|
||
title: Mqtt简介与使用
|
||
date: 2026-05-27
|
||
---
|
||
|
||
# 一、简介
|
||
  MQTT(Message Queuing Telemetry Transport) 是一种 轻量级物联网通信协议,基于 发布 / 订阅(Pub/Sub) 模式。
|
||
|
||
## 1.1 核心概念
|
||
1. Broker:消息服务器
|
||
2. Client:发布或订阅消息的设备 / 程序
|
||
3. Topic: 消息主题(路径形式)
|
||
4. Publish:发布消息
|
||
5. Subscribe:订阅消息
|
||
6. QoS:服务质量等级(0 / 1 / 2)
|
||
|
||
## 1.2 工作方式
|
||
```text
|
||
[设备A] --发布--> TopicA --> [Broker] --> TopicA --> [设备B]
|
||
```
|
||
|
||
# 二、安装
|
||
  [EMQX](https://www.emqx.com/zh) Enterprise 是基于开源 EMQX 扩展的企业级 MQTT 物联网消息接入平台,完全兼容 MQTT v3.1.1 / v5.0。
|
||
|
||
## 2.1 docker安装
|
||
```yml
|
||
services:
|
||
emqx:
|
||
image: emqx/emqx-enterprise:5.10.0
|
||
container_name: emqx
|
||
ports:
|
||
- "1883:1883"
|
||
- "8083:8083"
|
||
- "8084:8084"
|
||
- "8883:8883"
|
||
- "18083:18083"
|
||
restart: always
|
||
```
|
||
|
||
  启动容器后,输入ip:18083,默认账号密码为admin/public。
|
||
|
||
# 三、消息规范
|
||
## 3.1 Topic
|
||
```text
|
||
<domain>/<product>/<device_id>/<msg_type>/<resource>
|
||
```
|
||
|
||
  例如`iot/thermostat/dev001/status/online`、`iot/thermostat/dev001/cmd/set_mode`。
|
||
|
||
## 通配符
|
||
1. +:单层通配符,例如:iot/+/dev001/telemetry/+
|
||
2. #:多层通配符,只能放在topic末尾,例如:iot/thermostat/dev001/#
|
||
|
||
::: tip
|
||
使用+通配符时,必须严格满足层级要求,例如,如果topic是5层,那么iot/+将无法匹配到消息
|
||
::: |