此贴仅限hassio用户,不适用于其它方式安装的hass。
关于HASSIO安装MQTT,这里有一些坑,新手们可能会栽跟头,在这里提醒一下!
比如经常碰到下面的错误:
Socket error on client xxx disconnecting
Not found homeassistant on local database
等等……
这主要是由于内置MQTT和addon安装的MQTT冲突所致,内置MQTT会自动使用homeasisstant用户名去连接mqtt服务,而与addon安装的MQTT配置不一致,导致各种失败!如果你遇到了,仔细看下文,保证可以解决!当然,从头安装MQTT也可看此贴!
首先,不!建!议! 使用内置的mqtt服务,建议添加官方的Mosquitto broker插件,位置在这里,不要装错了!
然后,不!要!点!击! 系统集成里面的MQTT,那样会启用自带的MQTT(这里说法有些问题,但如果你不确定你的输入是对的,请不要点击这里),会与上面装的Mosquitto broker插件冲突!如果你之前点过,先将它移除,然后重启hass生效。
再然后,Mosquitto broker插件配置里,不!要!使!用! homeassistant作为用户名,改为mqtt或什么其它的。另外刚装了插件,logins下面是空的,配置用户密码,按我下面的代码拷入,把username和password改为你自己的就行。
{
"logins": [
{
"username": "mqtt",
"password": "mqtt"
}
],
"anonymous": false,
"customize": {
"active": false,
"folder": "mosquitto"
},
"certfile": "fullchain.pem",
"keyfile": "privkey.pem"
}
复制代码
最后,hass配置文件中,必!须!加!入! mqtt配置信息,其中broker地址,用户和密码改为你的,discovery想启用就写true,不启用就false:
mqtt:
broker: 192.168.6.166
port: 1883
username: mqtt
password: mqtt
discovery: false
复制代码
如果你按以上四点做了,保证不会出现上面的错误了!
PS:有人问为什么不建议用内置的MQTT?
我的答案如下:在hassio里,hass和addon插件们是分开不同的docker容器来跑的,自带的是跑在hass容器中,而addon单独跑在一个容器中,这意味着,你重启hass容器,会导致mqtt短暂不可用,而用addon方式,则不会有这问题,因此更加稳定。
另外官方也有warning:
There is an issue with the HBMQTT broker and the WebSocket connection that is causing a memory leak. If you experience this issue, consider using another broker like Mosquitto.