MQTTX 是一款由 EMQ 开发的现代化、开源且跨平台的 MQTT 5.0 客户端工具箱。它的界面设计采用了类似聊天软件的逻辑,非常直观,是目前物联网开发中最流行的调试工具之一。
结合你的需求,我为你整理了一份从安装到进阶实战的 MQTTX 全攻略。
1. 快速上手:安装与连接
MQTTX 支持 Windows、macOS、Linux,甚至还有命令行版本(CLI)和网页版。
- 下载安装:
- macOS: 可以在 App Store 下载,或使用命令
brew install --cask mqttx。 - Windows/Linux: 去官网或 GitHub 下载对应的安装包(.exe 或 .AppImage)。
- macOS: 可以在 App Store 下载,或使用命令
- 连接公共服务器(测试用):
如果你还没有搭建自己的 Broker,可以使用 EMQX 提供的免费公共服务器进行测试:- Host:
broker.emqx.io - Port:
1883(TCP) 或8083(WebSocket)
- Host:
2. 核心功能操作
打开 MQTTX 后,你会看到一个类似微信的界面。
第一步:新建连接
点击左上角的 “+” 号:
- Name: 随便填(如 "TestClient")。
- Client ID: 必须全局唯一,建议保留自动生成的随机字符串。
- Host: 填写你的 MQTT 服务器地址(本地测试填
localhost或127.0.0.1)。 - Port: 默认
1883。 - 点击 Connect。
第二步:订阅主题 (Subscribe)
连接成功后,在下方点击 “New Subscription”:
- Topic: 输入你想监听的主题,例如
test/topic或home/light/status。 - QoS: 一般选 0 或 1。
- 点击 Subscribe。此时,如果有其他设备向这个主题发消息,你这里就会像收短信一样显示出来。
第三步:发布消息 (Publish)
在底部的输入框:
- Topic: 填写目标主题(可以和订阅的一样,测试自发自收)。
- Payload: 输入消息内容,例如
{"temp": 25}。 - 点击右侧的 发送箭头。
3. 进阶功能:模拟真实设备
这是 MQTTX 最强大的地方,它可以帮你模拟复杂的设备行为。
🎨 数据格式转换
如果你需要发送十六进制(Hex)数据或者 Base64 数据,不需要手动转换。
- 在发送框左侧,点击 Plaintext 下拉菜单。
- 选择 Hex 或 Base64。你输入普通文本,MQTTX 会自动转换成对应格式发送。
⏰ 定时发送(模拟传感器)
你可以让设备每隔几秒自动上报一次数据,而不需要每次都手动点发送。
- 在发送框左侧,找到 Timed Message(定时消息)开关并打开。
- 设置 Interval(间隔),例如
2000毫秒(即2秒)。 - 点击发送,MQTTX 就会每2秒自动发一条消息。
📜 脚本功能 (Scripting)
如果你想模拟数据变化(例如温度在 20~30 之间随机跳动),可以使用脚本功能(v1.4.2+ 版本支持)。
- 入口:在发送框上方的工具栏找到“脚本”图标。
- 场景:
- 发送前处理:编写 JavaScript 代码动态生成 Payload。例如:
// 模拟温度随机波动 var temp = 20 + Math.floor(Math.random() * 10); return JSON.stringify({ "temperature": temp }); - 接收后处理:自动将收到的时间戳转换为可读时间。
- 发送前处理:编写 JavaScript 代码动态生成 Payload。例如:
4. 性能压测 (CLI 版本)
如果你需要测试服务器的极限性能(比如模拟 1 万个设备同时在线),桌面版可能不够用,这时可以使用 MQTTX CLI。
在终端(Terminal)中运行命令:
# 模拟 10,000 个连接
mqttx bench conn -c 10000 -i 10
-c: 连接数量。-i: 启动间隔(毫秒)。
💡 常见问题排查
- 连接失败:检查防火墙是否开放了 1883 端口;如果是本地 Docker 部署,确保端口映射正确(
-p 1883:1883)。 - 收不到消息:检查 Topic 是否完全匹配(包括大小写);检查 QoS 等级是否匹配。
- 中文乱码:确保发送端和接收端的编码格式一致(通常默认为 UTF-8)。
MQTTX 的功能非常丰富,建议你先从连接公共服务器开始,尝试订阅和发布,熟悉后再尝试脚本功能。
