给HA插上翅膀——HACS与MQTT
追加修改(2021-08-17 11:03:15):
重要补充,遇到无限重启的同学:
在群晖先找到/docker/mosquitto设置它和子文件夹和文件夹的everyone的读写权限,再找到/docker/mosquitto/config目录,手动添加mosquitto.conf和pwfile.conf文件(文本文件修改后缀名上传即可)。其中mosquitto.conf文件写入以下内容:
listener 1883
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf
pwfile.conf文件内容留空,在原文中设置账号密码的步骤里会自动向里写入用户名和密码。
在前两篇中,配置好了Node-RED(以下简称NR)和Home Assistant(以下简称HA),不过还没有讨论设备的接入。在本篇我们继续完成一些基础的搭建,预计从下一篇开始分享部分设备的接入过程和办法。
HACS是什么?
HA中可以使用很多第三方的插件及前端面板,常规情况下需要手动下载后解压到HA插件目录,并重启HA,而且插件是否有更新也需要自己关注,更新后又得重新安装一遍。
而HACS简化这个流程,使用HACS可以在其中搜索并一键安装插件,然后手动重启HA即可使用,同时在插件有更新后HACS也会提示更新,同样是一键更新,然后重启HA即可。
所以HACS可以理解为HA的应用商店。
MQTT又是什么?
先引用一段介绍(说巧不巧,MQTT和篇一的NR都是IBM开发的):
MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(publish/subscribe)模式的"轻量级"通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大优点在于,可以以极少的代码和有限的带宽,为连接远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,使其在物联网、小型设备、移动应用等方面有较广泛的应用。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。
什么是发布/订阅模式?与请求/回答这种同步模式不同,发布/定义模式解耦了发布者与订阅者之间的关系,这意味着发布者和订阅者之间并不需要直接建立联系。打个比方,你打电话给朋友,一直要等到朋友接电话了才能够开始交流,是一个典型的同步请求/回答的场景;而给一个好友邮件列表发电子邮件就不一样,你发好电子邮件该干嘛干嘛,好友们到有空了去查看邮件就是了,是一个典型的异步发布/订阅的场景。因此发布/订阅模式带来了这些好处:
发布者与订阅者不必了解彼此,只要认识同一个消息代理即可。
发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。
发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。
安装HACS
前置条件:科学上网环境,或使用GitHub520这个项目。我本人使用的科学环境。
登陆群晖,打开docker,在容器中找到HA点击上方详情,在详情页切换到终端机标签,点新增旁边的下拉按钮,点击通过命令启动,然后输入bash,参考下面两幅图片:
确定后点击左边bash,如果没有出现命令提示符,按下回车键:
接着使用命令进行安装(wget -q -O - https://raw.githubusercontent.com/hacs/install/main/install | bash -)
这里需要科学上网环境,否则会提示以下错误:
有了网络环境后很快就能安装完成,并提示我们重启HA进行下一步的配置:
直接在docker中重启HA的容器:
接下来我们继续HACS的配置,在HA中转到"配置",然后单击"集成":
单击右下角的"+"按钮,输入hacs搜索或向下滚动以查找"HACS"并选择它:
等待安装完成:
安装完成后按提示进行配置即可。作者在这里失败了,所以没办法继续和截图,下面是使用第二种手动修改配置文件的方式的过程。首先登陆github生成token,没有账号的话需要自己注册个,然后登陆,右上角个人头像的下拉箭头点开,找到Settings。如下图:
在设置中找到Developer settings,如下图:
点击Developer settings后,在点击Generate new token,如下图:
输入名称,然后下拉选择永不过期,如下图:
保存后,把生成的token复制下来:
然后到群晖中打开File Station找到HA的配置文件,填入
hacs:
token: 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(换成你的)
打开docker,重启HA的容器,重启完成后即可看到HACS已经安装并配置成功:
到处HACS就安装完成了,至于用处,后面的篇幅中我们再讨论,安装过程中可能会遇到这样那样的问题,多检查和文中是否一致,HA是否重启,一定能配置成功的。
接下来继续把MQTT搞定。
群晖Docker安装MQTT
群晖在Docker的注册表中搜索mosquitto,找到eclipse-mosquitto并下载:
下载完成后,双击映像进行配置,存储空间和端口分别按下图配置:
配置完成后把它启动起来,启动后我们的MQTT服务就可以使用了,但是目前它是没有密码的,因为后面会涉及到外网的访问,为了安全需要关闭匿名访问。
打开群晖File Station找到/docker/mosquitto/config目录,打开mosquitto.conf编辑,添加以下内容:
# 关闭匿名模式
allow_anonymous false
# 指定密码文件
password_file /mosquitto/config/pwfile.conf
保存后重启MQTT,打开docker,在容器中找到mosquitto点击上方详情,在详情页切换到终端机标签,点新增旁边的下拉按钮,点击通过命令启动,然后输入sh,参考下面两幅图片:
确定后点击左边sh,如果没有出现命令提示符,按下回车键:
接着使用以下命令设置用户(一下命令中用户名是:admin,可以修改为自己需要的用户名)和密码:
mosquitto_passwd -c /mosquitto/config/pwfile.conf admin
按提示输入两次密码即可:
到此mqtt也安装好了,下面我们回到HA的集成中添加MQTT集成。
回到HA,配置->集成点击右下角添加集成,搜索mqtt:
参考下图输入服务器信息(用你的IP地址,用户名和密码,不要照抄):
点击提交即可创建成功:
创建成功后,即可自动发现内网的MQTT服务,比如我的就发现了Tasmota(已经配置好的电量监测模块)还有很多实体(有开关,有传感器,全是使用MQTT的):
到此HACS和MQTT就全部安装好了,本篇就介绍到这里,从下一篇开始谈智能家居的接入。
大家如果抄作业过程中有问题可以留言咨询。
































Call军军
校验提示文案
郭雨是只小白鼠
校验提示文案
郭雨是只小白鼠
校验提示文案
值友8090286949
校验提示文案
qy_sam
校验提示文案
萌m大虾
校验提示文案
v黑洞a
校验提示文案
莫泠晴
校验提示文案
逍遥风雨10
校验提示文案
lff520520
群晖918+
群晖7.0.1
校验提示文案
Howisdoing
根本找不到这个文件
校验提示文案
Howisdoing
根本找不到这个文件
校验提示文案
逍遥风雨10
校验提示文案
lff520520
群晖918+
群晖7.0.1
校验提示文案
莫泠晴
校验提示文案
v黑洞a
校验提示文案
萌m大虾
校验提示文案
qy_sam
校验提示文案
值友8090286949
校验提示文案
郭雨是只小白鼠
校验提示文案
郭雨是只小白鼠
校验提示文案
Call军军
校验提示文案