Tasmota MQTT 设置
Tasmota MQTT 设置
本节介绍如何在 Tasmota 设备上配置 MQTT 连接。学习完成后,您将能够:
- 在 Tasmota Web UI 中配置 MQTT Broker
- 通过控制台命令校准设备参数
- 设置 Telemetry 周期获取实时能耗数据
- 验证 MQTT 数据流
- Tasmota 固件已刷写完成
- 设备已连接 Wi-Fi 并能访问 Web UI
- MQTT Broker 已运行且网络可达
MQTT Configuration via Web UI
Section titled “MQTT Configuration via Web UI”步骤 1: 进入 MQTT 配置
Section titled “步骤 1: 进入 MQTT 配置”Tasmota Web UI → Configuration → Configure MQTT步骤 2: 填写连接参数
Section titled “步骤 2: 填写连接参数”| 参数 | 说明 | 推荐值 |
|---|---|---|
| Host | Broker 地址(不含协议前缀) | 192.168.1.100 |
| Port | MQTT 端口 | 1883 |
| Client | 客户端 ID | tasmota_socket1 |
| User | MQTT 用户名 | mqtt_user |
| Password | MQTT 密码 | ******** |
| Topic | 设备主题(关键参数) | tasmota/socket1 |
| Full Topic | 完整主题模板 | %prefix%/%topic%/ |
⚠️ 注意: 勾选 Enable MQTT 复选框后点击 Save,设备会自动重启。
Device Calibration
Section titled “Device Calibration”配置 MQTT 之前,建议先校准设备参数:
设置电压标准
Section titled “设置电压标准”# 控制台命令(取决于所在地区)# 中国/欧洲: 230VVoltageSet 230
# 美国/日本: 110VVoltageSet 110设置 Telemetry 周期
Section titled “设置 Telemetry 周期”# 设置状态上报间隔(秒)# 最小值通常为 10 秒TelePeriod 10
# 验证设置TelePeriod# 返回: {"TelePeriod":10}设置上电状态
Section titled “设置上电状态”# 上电后继电器状态# 0 = 保持断电 1 = 保持通电 2 = 恢复断电前状态PowerOnState 1LED 指示灯控制
Section titled “LED 指示灯控制”# 0 = 关闭 LED 1 = 启用 LED 2 = 仅 Wi-Fi 状态LedState 0MQTT Topic Structure
Section titled “MQTT Topic Structure”Tasmota 配置 MQTT 后自动发布到以下 Topic:
# 完整 Topic = Full Topic 模板填充# 默认: cmnd/%topic%/ stat/%topic%/ tele/%topic%/
# 控制命令 (cmnd)cmnd/tasmota/socket1/POWER # 发送: ON / OFF / TOGGLEcmnd/tasmota/socket1/TelePeriod # 设置遥测周期
# 状态反馈 (stat)stat/tasmota/socket1/POWER # 继电器状态: ON / OFFstat/tasmota/socket1/RESULT # 命令执行结果
# 遥测数据 (tele)tele/tasmota/socket1/STATE # 设备状态信息tele/tasmota/socket1/SENSOR # 传感器/能耗数据 ← 核心数据能耗数据结构 (tele/…/SENSOR)
Section titled “能耗数据结构 (tele/…/SENSOR)”{ "Time": "2026-05-18T14:30:25", "ESP8266": { "RestartReason": "External" }, "ENERGY": { "TotalStartTime": "2026-05-18T08:00:00", "Total": 1.452, "Yesterday": 0.823, "Today": 0.629, "Period": 0.042, "Power": 42.5, "ApparentPower": 48.2, "ReactivePower": 22.1, "Factor": 0.88, "Voltage": 223.1, "Current": 0.216 }}使用 MQTT Explorer 验证
Section titled “使用 MQTT Explorer 验证”连接到 Broker 后,应看到以下 Topic 结构:
📂 tele/│ └── 📂 tasmota/│ └── 📂 socket1/│ ├── 📄 SENSOR ← 能耗数据│ └── 📄 STATE ← 设备状态📂 stat/│ └── 📂 tasmota/│ └── 📂 socket1/│ └── 📄 POWER ← 开关状态📂 cmnd/ └── 📂 tasmota/ └── 📂 socket1/ └── 📄 POWER ← 控制命令使用 mosquitto_sub 验证
Section titled “使用 mosquitto_sub 验证”# 订阅能耗数据mosquitto_sub -h localhost -t "tele/tasmota/+/SENSOR" -v
# 预期输出(每 10 秒)tele/tasmota/socket1/SENSOR {"Time":"...","ENERGY":{"Power":42.5,"Voltage":223.1,"Current":0.216,"Today":0.629}}问题 1: MQTT 连接失败
Section titled “问题 1: MQTT 连接失败”# 检查 MQTT 配置# Tasmota Console → 输入: MqttStatus# 返回: {"MqttStatus":0} 表示未连接
# 原因排查:# 1. Broker 地址是否正确?# 2. 端口是否开放?# 3. 用户名密码是否正确?# 4. Wi-Fi 连接是否稳定?问题 2: 没有收到 SENSOR 数据
Section titled “问题 2: 没有收到 SENSOR 数据”# 检查 TelePeriod 是否设置TelePeriod
# 如果返回 0,表示遥测未启用# 设置为 10 秒TelePeriod 10Common Customer Questions
Section titled “Common Customer Questions”Q1: TelePeriod 设置多少合适?
Section titled “Q1: TelePeriod 设置多少合适?”- POC 演示: 10-30 秒,展示实时数据变化
- 生产环境: 60-300 秒,降低网络和数据库负载
- 高精度监测: 10 秒(最小间隔)
Q2: Tasmota 可以同时连接多个 Broker 吗?
Section titled “Q2: Tasmota 可以同时连接多个 Broker 吗?”不可以。Tasmota 只支持一个 MQTT Broker 连接。如果需要数据分发,可在 Node-RED 中实现。
Q3: 如何远程控制 Tasmota 设备开关?
Section titled “Q3: 如何远程控制 Tasmota 设备开关?”通过 MQTT 发送命令:
# 打开mosquitto_pub -t "cmnd/tasmota/socket1/POWER" -m "ON"
# 关闭mosquitto_pub -t "cmnd/tasmota/socket1/POWER" -m "OFF"
# 切换mosquitto_pub -t "cmnd/tasmota/socket1/POWER" -m "TOGGLE"✅ 推荐做法:
- 使用有层次的 Topic 命名(如
tasmota/factory/line1/machine3) - 校准电压参数以确保能耗数据准确
- 设置合理的 TelePeriod 避免数据过于密集
- 使用 MQTT Explorer 验证完整数据流
❌ 避免做法:
- TelePeriod 设置过短(< 10 秒)导致网络拥塞
- 所有设备使用相同的 Topic
- 生产环境使用默认密码
- 忽略电压校准导致数据偏差
Summary
Section titled “Summary”- Tasmota MQTT 配置在 Web UI 的 Configure MQTT 页面完成
- TelePeriod 控制状态上报频率,最小 10 秒
- 能耗数据通过
tele/+/+/SENSORTopic 获取 - VoltageSet 校准电压确保数据准确性
cmnd/stat/tele三层 Topic 结构清晰分离控制、状态和遥测