[IOT] Docker 部署 Home Assistant
Home Assistant 是一个用 Python 开发的开源家居自动化平台,可以轻松集成各种智能设备和服务,并监控和管理。
主要特点:
- 兼容性:支持数千种智能设备和品牌,包括灯光、传感器、摄像头、开关、空调等等。它提供了丰富的集成选项,用户可以通过配置与多个设备相连。
- 自动化:用户可以创建复杂的自动化规则。例如,可以设置条件(如时间、传感器状态)来自动控制设备的行为,如在某个时间点自动开关灯。
- 本地控制:可以在本地部署运行,无需依赖云服务。这样可以提高隐私安全性,使设备的控制更加稳定和快速。
- 用户界面:它提供了一个直观的网页用户界面和移动端 App,用户可以通过它们查看设备状态,控制设备,并创建自动化规则。
- 社区支持:作为一个开源项目,它拥有活跃的开发者和用户社区,用户可以在社区中找到帮助、共享自定义配置和获取更新。
- 扩展性:用户可以通过编写自定义脚本和使用插件来扩展核心功能,以满足特定需求。
Docker 的部署其实也很简单,我为了能远程控制设备,是部署在云服务器(Ubuntu)上的,使用 docker compose
。
下为简单的部署步骤:
创建 docker-compose.yml 文件
$ mkdir -p docker/home-assistant/data # 创建目录
$ cd docker/home-assistant
$ vim docker-compose.yml # 创建文件
docker-compose.yml
文件:
services:
homeassistant:
container_name: homeassistant
image: homeassistant/home-assistant:stable
volumes:
- /home/ubuntu/docker/home-assistant/data:/config # 映射到本地目录
environment:
- TZ=Asia/Shanghai
restart: unless-stopped
privileged: true
network_mode: host
拉取镜像并启动容器
$ sudo docker compose up -d
稍等执行完成,不出意外的话容器应该能顺利启动。可以使用 docker ps -a
查看容器状态。
创建账号
此时访问 http://localhost:8123 或 http://yourip:8123 应该就能访问到 Home Assistant 的主界面了。
然后创建你的账号。
安装 HACS (Home Asisstant Community Store)
HACS 是一个插件,它提供了一个界面,让我们可以通过这个界面轻松地安装、更新和管理各种自定义组件、主题和插件等。
可以在 GitHub 下载你需要版本,一般直接选最新版就行了。
$ cd /home/ubuntu/docker/home-assistant/data # 因为我上面把容器里的 /conf 映射到这个本地文件夹了,所以直接把文件放入这里就相当于放进了容器里
$ mkdir -p custom_components/hacs # 创建目录
$ cd custom_components/hacs
$ wget https://github.com/hacs/integration/releases/download/1.34.0/hacs.zip # 下载 hacs,复制你需要的版本下载链接。如果服务器下载太慢的话,可以本地下载后传到服务器上
$ unzip hacs.zip # 解压
$ cd /home/ubuntu/docker/home-assistant # 进入 docker-compose.yml 所在目录
$ sudo docker compose restart # 重启容器
集成 HACS
重新进入 Home Assistant 主界面后,左下角 设置 » 选择 设备与服务 » 右下角 添加集成 » 弹出窗口中搜索 HACS » 全部勾选后点击提交
这时 HACS 会请求 GitHub 关联账号,如果长时间转圈之后提示 could_not_register
,这通常是网络问题。查看日志(容器映射路径下的 home-assistant.log
文件),可能会有类似输出:
...
aiogithubapi.exceptions.GitHubConnectionException: Request exception for 'https://github.com/login/device/code' with - Server disconnected
ERROR (MainThread) [custom_components.hacs] Timeout of 20 reached while waiting for https://github.com/login/device/code
...
这时如果能 ping
通 github.com,那么上面集成 HACS 的步骤多试几次应该就行了。
安装成功后,刷新页面就能在左边的主菜单看到 HACS 了。