Home Assistant嵌入式MQTT原运行正常,JS测试后出现异常
排查Home Assistant MQTT RGB Light异常(JS测试后)
你之前所有功能和MQTT连接都正常,问题出在JS测试之后,咱们一步步拆解排查:
1. 先确认MQTT连接是否存活
首先排查最基础的连接问题:
- 打开Home Assistant的设置 > 设备与服务 > MQTT,查看已连接设备列表,确认你的ESP模块是否还在线
- 如果设备离线,大概率是JS测试过程中干扰了ESP的WiFi/MQTT重连逻辑——先重启ESP模块,看能否重新接入MQTT服务器
2. 验证MQTT消息格式合法性
JS测试可能发送了不符合mqtt_json规范的消息,导致Home Assistant无法解析:
- 进入Home Assistant的开发者工具 > MQTT,订阅
home/rgb1(状态主题)和home/rgb1/set(命令主题) - 手动发送一条标准格式的测试命令,比如:
观察ESP模块是否响应,同时看Home Assistant的灯光状态是否正常更新。如果手动发送正常,说明JS代码里的MQTT payload格式有问题,得检查JS发送的内容是否是合法JSON、键值对是否符合{"state": "ON", "brightness": 255, "rgb": [255,0,0]}mqtt_json要求
3. 检查Home Assistant配置与日志
- 先确认
configuration.yaml里的配置没被JS测试意外修改,你当前的配置是没问题的:mqtt: username: "homeassistant" password: "" light: - platform: mqtt_json name: mqtt_json_light_2 state_topic: "home/rgb1" command_topic: "home/rgb1/set" brightness: true rgb: true effect: true effect_list: [colorfade_slow, colorfade_fast, flash] optimistic: false qos: 0 - 查看Home Assistant日志(设置 > 系统 > 日志),搜索
mqtt或light相关的错误信息——比如有没有JSON解析失败、主题订阅失败、权限异常的提示,这些能直接定位问题
4. 排查JS测试代码的具体影响
既然问题触发点是JS测试,重点看这段代码做了什么:
- 是不是JS持续向
home/rgb1/set发送异常消息(比如非JSON文本、无效的状态值、超出范围的亮度/RGB数值)?先停止JS脚本,再重启Home Assistant和ESP模块,看是否恢复正常 - 有没有JS代码修改了MQTT认证参数?虽然你配置里密码为空,但如果JS发送了错误的认证请求,可能导致ESP被MQTT服务器断开连接
5. 极端情况:重置ESP模块
如果以上步骤都无效,怀疑ESP模块因异常消息导致内部状态混乱:
- 重新刷入之前正常工作的ESP固件
- 重新配置ESP的MQTT参数(确保主题、服务器地址、端口和Home Assistant配置完全一致)
内容的提问来源于stack exchange,提问作者Khronos
相关产品推荐
相关产品推荐

