给HA插上翅膀——HACS与MQTT

2021-08-13 16:52:26 34点赞 327收藏 58评论

追加修改(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)。其在,通过卫星链路通信传感器、偶尔拨号的医疗设备、智能家居、及一些小型化设备中已广泛使用。

给HA插上翅膀——HACS与MQTT

什么是发布/订阅模式?与请求/回答这种同步模式不同,发布/定义模式解耦了发布者与订阅者之间的关系,这意味着发布者和订阅者之间并不需要直接建立联系。打个比方,你打电话给朋友,一直要等到朋友接电话了才能够开始交流,是一个典型的同步请求/回答的场景;而给一个好友邮件列表发电子邮件就不一样,你发好电子邮件该干嘛干嘛,好友们到有空了去查看邮件就是了,是一个典型的异步发布/订阅的场景。因此发布/订阅模式带来了这些好处:

  • 发布者与订阅者不必了解彼此,只要认识同一个消息代理即可。

  • 发布者和订阅者不需要交互,发布者无需等待订阅者确认而导致锁定。

  • 发布者和订阅者不需要同时在线,可以自由选择时间来消费消息。

安装HACS

前置条件:科学上网环境,或使用GitHub520这个项目。我本人使用的科学环境。

登陆群晖,打开docker,在容器中找到HA点击上方详情,在详情页切换到终端机标签,点新增旁边的下拉按钮,点击通过命令启动,然后输入bash,参考下面两幅图片:

给HA插上翅膀——HACS与MQTT

给HA插上翅膀——HACS与MQTT

确定后点击左边bash,如果没有出现命令提示符,按下回车键:

给HA插上翅膀——HACS与MQTT

接着使用命令进行安装(wget -q -O - https://raw.githubusercontent.com/hacs/install/main/install | bash -)

给HA插上翅膀——HACS与MQTT

这里需要科学上网环境,否则会提示以下错误:

给HA插上翅膀——HACS与MQTT

有了网络环境后很快就能安装完成,并提示我们重启HA进行下一步的配置:

给HA插上翅膀——HACS与MQTT

直接在docker中重启HA的容器:

给HA插上翅膀——HACS与MQTT

接下来我们继续HACS的配置,在HA中转到"配置",然后单击"集成":

给HA插上翅膀——HACS与MQTT

单击右下角的"+"按钮,输入hacs搜索或向下滚动以查找"HACS"并选择它:

给HA插上翅膀——HACS与MQTT

等待安装完成:

给HA插上翅膀——HACS与MQTT

安装完成后按提示进行配置即可。作者在这里失败了,所以没办法继续和截图,下面是使用第二种手动修改配置文件的方式的过程。首先登陆github生成token,没有账号的话需要自己注册个,然后登陆,右上角个人头像的下拉箭头点开,找到Settings。如下图:

给HA插上翅膀——HACS与MQTT

在设置中找到Developer settings,如下图:

给HA插上翅膀——HACS与MQTT

点击Developer settings后,在点击Generate new token,如下图:

给HA插上翅膀——HACS与MQTT

输入名称,然后下拉选择永不过期,如下图:

给HA插上翅膀——HACS与MQTT

保存后,把生成的token复制下来:

给HA插上翅膀——HACS与MQTT

然后到群晖中打开File Station找到HA的配置文件,填入

hacs:

token: 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(换成你的)

给HA插上翅膀——HACS与MQTT

打开docker,重启HA的容器,重启完成后即可看到HACS已经安装并配置成功:

给HA插上翅膀——HACS与MQTT

到处HACS就安装完成了,至于用处,后面的篇幅中我们再讨论,安装过程中可能会遇到这样那样的问题,多检查和文中是否一致,HA是否重启,一定能配置成功的。

接下来继续把MQTT搞定。

群晖Docker安装MQTT

群晖在Docker的注册表中搜索mosquitto,找到eclipse-mosquitto并下载:

给HA插上翅膀——HACS与MQTT

下载完成后,双击映像进行配置,存储空间和端口分别按下图配置:

给HA插上翅膀——HACS与MQTT

给HA插上翅膀——HACS与MQTT

配置完成后把它启动起来,启动后我们的MQTT服务就可以使用了,但是目前它是没有密码的,因为后面会涉及到外网的访问,为了安全需要关闭匿名访问。

打开群晖File Station找到/docker/mosquitto/config目录,打开mosquitto.conf编辑,添加以下内容:

# 关闭匿名模式

allow_anonymous false

# 指定密码文件

password_file /mosquitto/config/pwfile.conf

给HA插上翅膀——HACS与MQTT

保存后重启MQTT,打开docker,在容器中找到mosquitto点击上方详情,在详情页切换到终端机标签,点新增旁边的下拉按钮,点击通过命令启动,然后输入sh,参考下面两幅图片:

给HA插上翅膀——HACS与MQTT

给HA插上翅膀——HACS与MQTT

确定后点击左边sh,如果没有出现命令提示符,按下回车键:

给HA插上翅膀——HACS与MQTT

接着使用以下命令设置用户(一下命令中用户名是:admin,可以修改为自己需要的用户名)和密码:

mosquitto_passwd -c /mosquitto/config/pwfile.conf admin

按提示输入两次密码即可:

给HA插上翅膀——HACS与MQTT

到此mqtt也安装好了,下面我们回到HA的集成中添加MQTT集成。

回到HA,配置->集成点击右下角添加集成,搜索mqtt:

给HA插上翅膀——HACS与MQTT

参考下图输入服务器信息(用你的IP地址,用户名和密码,不要照抄):

给HA插上翅膀——HACS与MQTT

点击提交即可创建成功:

给HA插上翅膀——HACS与MQTT

创建成功后,即可自动发现内网的MQTT服务,比如我的就发现了Tasmota(已经配置好的电量监测模块)还有很多实体(有开关,有传感器,全是使用MQTT的):

给HA插上翅膀——HACS与MQTT

给HA插上翅膀——HACS与MQTT

到此HACS和MQTT就全部安装好了,本篇就介绍到这里,从下一篇开始谈智能家居的接入。

大家如果抄作业过程中有问题可以留言咨询。给HA插上翅膀——HACS与MQTT

展开 收起
58评论

  • 精彩
  • 最新
  • 群晖直接hassio不好吗?

    校验提示文案

    提交
    也好,我是一开始就HA。

    校验提示文案

    提交
    收起所有回复
  • mosquitto 按你那个文件夹设置,,,无限重启

    校验提示文案

    提交
    试试给下文件夹的everyone权限。

    校验提示文案

    提交
    给了 没有用, 最后装的1.6.9版本 不用设置文件路径,直接网络bridge 与docker host相同网络 ,然后后面按你得终端输入命令就成功了

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 找到问题了 下载1.6.9版本 即可

    校验提示文案

    提交
    已追加修改,前面的评论也回复了办法,手动配置个配置文件就好了。

    校验提示文案

    提交
    收起所有回复
  • 楼主,按你的设置了mosquitto,结果无限重启,我下了1.6.9也不行

    校验提示文案

    提交
    我研究下补充到文里

    校验提示文案

    提交
    好的,谢谢楼主

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • 非常期待下一篇,继续抄作业咯 [送你花]

    校验提示文案

    提交
    最近有点犯懒,哈哈哈

    校验提示文案

    提交
    收起所有回复
  • 老哥,下一篇写好了吗 [高兴]

    校验提示文案

    提交
    还没有,还没有想好写什么 [晕倒]

    校验提示文案

    提交
    写小米IOT接入HomeKit吧

    校验提示文案

    提交
    还有12条回复
    收起所有回复
  • 我的mqtt配置好后,在连接那里失败了,找不到服务器,不知道是什么问题!是我没装HACS吗?黑群6.1系统!

    校验提示文案

    提交
    确定服务是否启动了,IP没错的话检查端口

    校验提示文案

    提交
    似乎是服务没启动,ip:端口复制去浏览器直接是找不到网页的,无响应!但是docker里那个按钮是打开了的!按教程步骤弄的,还是说mqtt运行要什么前置条件?

    校验提示文案

    提交
    还有5条回复
    收起所有回复
  • [期待] mosquitto不怎么怎么配置 docker服务器启动后就是ip登入不上

    校验提示文案

    提交
    看看容器日志报了什么错

    校验提示文案

    提交
    没有任何报错

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 按提示输入两次密码后,提示了killed,mqtt用设置的账户和密码也不成功???

    校验提示文案

    提交
    找到解决方案没,我也一直这样

    校验提示文案

    提交
    放弃了,换了别的方式搭建。。。

    校验提示文案

    提交
    还有1条回复
    收起所有回复
  • 心累,群晖docker下载最新的mqtt,无限重启,根据你的提示放入文件后正常启动,但mqtt服务器连不上。
    群晖918+
    群晖7.0.1

    校验提示文案

    提交
    相同的情况 不知道怎么解决

    校验提示文案

    提交
    直接安装搜索到的第二个 虽然是三年前更新的 但安装后一遍过

    校验提示文案

    提交
    还有2条回复
    收起所有回复
  • 打开群晖File Station找到/docker/mosquitto/config目录,打开mosquitto.conf编辑

    根本找不到这个文件

    校验提示文案

    提交
    根据更新的提示,自己添加了

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
最新文章 热门文章
327
扫一下,分享更方便,购买更轻松