MQTT-FIX-T01: make main MQTT client lifecycle idempotent

This commit is contained in:
tliu93 committed 2026-10-11 23:34:13 +02:00
1 parent 48071685f1
commit 876754be56
8 files changed
+629 -76

No files matched your search

+5
View File
@@ -345,6 +345,11 @@ CLI 工具为受控手工验证而设(设备需接市电),仅暴露读功
- 每次轮询成功后推 state topic;连接成功或勾选变更时重发 retained discovery config
- `POST /api/config/mqtt/test`:试连 broker 并发布一条测试消息(可用 MQTT Explorer 验证链路)
主 MQTT 客户端由应用 lifespan 持有。相同配置下重复调用 connect 不会创建新客户端;Paho
网络循环在短暂断线后负责自动重连,并在重连成功时恢复订阅。每分钟的 HA 发布任务会幂等地
确保客户端存在。配置变更或应用关闭时,旧客户端先从管理器解绑,再断开并停止网络循环;旧
客户端的迟到回调不会改变新连接状态或分发消息。DSMR source 使用各自独立的客户端生命周期。
**Config 页配置流程**:
1. 在 `/config` 的「MQTT」section 填写 broker host/port/username/password,启用 `MQTT_ENABLED`
2. 点「发送测试消息」确认 broker 链路通