背景

随着智能家居的日益普及,各大互联网巨头纷纷进场,导致智能家居的平台和品牌越来越多,且各个平台和品牌间的产品无法互通。例如,你无法用米家的智能开关来控制 homekit 的智能灯,除非你的产品支持双平台,但目前同时支持两个以上平台的智能家居少之又少。

Home Assistant(以下简称 HA)很好地解决了智能家居平台不互通的问题,它是一个开源的智能家居集成平台,可将各个常见平台的产品接入,并通过网页、手机app等多种客户端统一操控,实现真正的「万物互联」。并且最重要的是,这么好用的工具不仅支持 Windows、MacOS、Linux 等多种操作系统,其本身也是开源免费的,并且其极高的扩展性也为爱折腾的数码爱好者提供了全新的研究对象。

通过 Docker 部署 HA 容器

正如前文所述,HA 支持多种操作系统,但如果我们打算将其作为 7x24 小时待机的智能家庭中枢,那么最好的选择就是 Linux 系统,因为它可以运行在诸如树莓派这类低功耗的设备上,随时准备着为我们提供服务。

提到 Linux,我们就不得不提 Docker,它是一种兼容性极高的容器系统,可以适应几乎所有 Linux 环境,做到即装即用。今天,我们将着重介绍通过 Docker 容器部署 HA 的方法。

我的这篇文章详细介绍了 Portainer 这个非常好用的 Docker 管理容器,由于每位读者的系统环境不尽相同,因此本博客往后介绍的所有 Docker 容器安装,不再拘泥于群晖、威联通或者 Unraid,而是统一通过 Portainer 进行

Portainer 本身的安装可以参考上面提到的文章,本文不再赘述。要安装 HA,我们首先需要登录 Portainer 后台,然后进入本地终端界面,也就是 Local,接着点击左侧的 Containers,进入本地容器管理界面。

点击 Add container,创建一个新容器,Name 随便填,Image 写 HA 官方提供的映像索引 homeassistant/home-assistant:latest,Always pull the image 可以打开,这样以后每次修改容器配置,都会从服务器重新拉取最新的映像。

接着点击下方 Advanced container settings 中的 Volumes,进入目录映射选项卡,点击 map additional volume 按钮新增一个目录映射,右侧的映射方式选 bind,container 里的目录只能写 /config,这是 HA 配置文件的所在目录,host 上的目录可以根据自己需要填写。

继续点击 Advanced container settings 中的 Env,进入环境变量选项卡,点击 add environment variable 按钮新增一条环境变量,左侧的 name 填写 TZ,右侧的 value 填写 Asia/Shanghai,这是将 HA 的默认时区(Time Zone)设置为亚洲/上海。

剩下的高级设置就比较简单了,Network 设置成 host,Restart policy 设置成 Always 即可。最后点击 Deploy the container,等待一段时间,如果网络连接通畅的话,即可完成 HA 容器的部署。

HA 的后台默认端口是 8123,因此只要我们在局域网中访问 HA 运行设备的 ip地址:8123 即可登录 HA 的网页端。初次打开 HA 网页端需要进行一些基本的初始化配置,例如用户名、密码这些,此处不再赘述。需要注意的是,HA 管理员账户的密码无法找回,如果我们忘记此处设置的密码,后面只能通过重装容器的方式解决

安装 HACS 集成

HACS 的全称是 Home Assistant Community Store,是一个 HA 社区商店,里面提供了各种外观主题,以及第三方集成的下载,使用起来非常方面,建议所有 HA 用户安装。

要安装 HACS,首先需要将它的安装包放入 HA 容器。在 HA 映射的 /config 目录中创建两个新目录,名称分别为 wwwcustom components,点击这里下载 HACS 安装包,将压缩包内的 hacs 目录解压到刚刚创建的 personal components 目录,然后重启 HA 容器。登录 HA 网页端,依次点击左下角配置—设备与服务—集成,进入集成选项卡。

点击右下角的添加集成按钮,搜索 HACS,点击安装 HACS 集成,接着按照提示走流程就能顺利安装。安装过程中需要跳转登录一次 Github,如果没有账号需要注册一个。此外就是安装过程需要科学的网络环境,这个只能靠各位自行解决。安装完成后再次重启 HA 容器。不出意外的话,网页端的左侧会多出一个 HACS 按钮,点击它就能进入 HACS 的商店界面了。