Home Assistant 打造智能家居终端【安装篇】

花火田丁 花火田丁 2021-03-30 10:26:55 +0000

最近要在 Docker 上跑个测试项目,于是我又翻出了树莓派来练手。用什么来练呢?当然还是来实现自己的一个需求。

看过我之前文章的朋友们应该知道,Home Assistant(以下简称 HA) 是一个开源的智能家居平台,几乎可以接入市面上所有的智能家居品牌(个别型号不支持),同时还可以实现自动化操作和事件通知。

如果家里是 Apple 全家桶,那可以直接用 Apple 自带的 HomeKit,而如果需要兼容安卓,可玩性更高一点,HA 就再适合不过了。而且 HA 还可以反向操作,通过 HA 让原本不支持 HomeKit 的设备可以在 HomeKit 中控制。

总之,很强大就是了。

我在写 正当有用时 这篇文章的时候,其实已经搭好了一个测试用的树莓派 + HA,并且实现了一个简单的控制屏的界面效果。为什么又要开始折腾呢?

当初搭的时候,为了省事,直接给树莓派烧录了 HA 官方提供的操作系统 —— HASS,也不需要额外的配置,装完启动即可,适合新手小白。但如今这块树莓派还需要做其他用处,直接用 HASS 系统有些限制,于是我又烧回了 Pi 的原生系统。

为了不影响 Pi 本身的开发环境,我决定把 HA 装在 Docker 里,本文用来记录树莓派 + Docker + Home Assistant 的安装过程,从树莓派原生系统的安装开始,到 HomeAssistant 跑起来,为止。

环境及准备:

  1. 树莓派 3B(32位)

  2. 一张 SD 卡(16GB 以上)

  3. 烧录软件(以 MacBook 上的 Balena Etcher 下载地址1 为例)

  4. Wi-Fi 或者 有线网络

  5. 显示器 + HDMI 线 + 鼠标 + 键盘(可选)


安装树莓派原生系统

树莓派官网2

树莓派提供两种安装方式:Raspberry Pi Imager 和 手动安装,手动安装即下载操作系统镜像文件+自行烧录到 SD 卡的方式。

Pi Imager 以前没留意过,不知道是不是这两年新加的,看介绍是只需要在电脑上(支持 Mac,Windows,Ubuntu)下载一个「Pi Imager」的应用程序,然后把 SD 卡插到电脑上,运行应用程序即可。我猜是把下载和烧录的工作在 Imager 里一起实现了,新手可以试试这种方式。

以下以手动安装方式为例:

下载操作系统镜像文件:

还是刚才的网页,往下翻到「Manually install an operating system image」,点击「See all download options」

图片来自网页截图

新手可以选择第一个选项,自带了图形操作界面和必要的软件,熟悉 SSH 操作的可以选择其他选项。

图片来自网页截图
将镜像文件烧录到 SD 卡

下载下来是一个 Zip 文件,然后我们插上 SD 卡,打开预先安装好的 Balena Etcher 软件,「Select Image」选到下载的 Zip 文件,「Select Target」选到 SD 卡,点击「Flash」,即开始烧录,等个几分钟。

图片来自软件截图
登录树莓派

将烧录完成的 SD 卡插到树莓派,给树莓派接上网线,有条件的可以用 HDMI 线连上显示屏,同时给树莓派配上鼠标键盘,当作一台电脑来操作。不具备这些条件也没关系,我们可以通过 Terminal 用 SSH 连接进去。

通过路由器查看树莓派的 IP 地址,一般在路由器上显示名称就是「Raspberry Pi」(建议在路由器上设置成静态 IP,绑定一下 mac 地址)。找到 IP 地址后,我们打开 Mac 上的 Terminal(Windows 下可以用 SSH CRT 或者 Putty),<host> 即树莓派的 IP,pi 是树莓派的默认用户名,初始密码是 raspberry

ssh pi@<host>


安装 Docker 容器


安装 Docker

Docker 的安装比较简单,同样是几行命令就能搞定。

# 下载安装脚本
curl -fsSL https://get.docker.com -o get-docker.sh

# 执行脚本(过程有点长)
sudo sh get-docker.sh

# 修改用户权限
sudo groupadd docker
sudo usermod -aG docker pi

# 添加 Docker 服务到自启动
sudo systemctl enable docker
sudo systemctl start docker


Hello World 测试一下

运行一个 Hello-World 测试容器试一下

docker run hello-world

看到以下提示说明安装测试通过(首次运行的时候会从远程下载镜像)

图片来自截图
安装可视化操作界面 Portainer 

Docker 安装完成后,可以通过命令行来管理,常见命令有 

# 查看镜像
docker image ls

# 查看容器
docker ps

方便起见,我们安装一个图形化界面来操作容器 —— Portainer

# 拉取 Portainer 最新的镜像
docker pull portainer/portainer:latest

# 启动容器
docker run -d -p 9000:9000 --name portainer --restart=always -e TZ="Asia/Shanghai" -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

执行完成后,访问 http://<host>:9000 ,<host> 为树莓派的 IP,首次访问需要注册一个管理员账户。连接方式选择「Local」

图片来自网页截图

登录成功后就可以查看和操作容器了,重启、删除、查看状态等等。

图片来自网页截图


安装 Home Assistant

Home Assistant 官网 3

官网的 Installation 指导提供了多种介质的安装方式,我们是安装在树莓派的 Docker 中,Docker 是一种容器,所以选择「Raspberry Pi」中的「Home Assistant Container」的安装方式

图片来自网页截图

打开的页面中滚动到「Install Home Assistant Container」位置

      图片来自网页截图


可以看到 Raspberry pi 3 的 Install 下就一行脚本,对,执行它就可以了,是不是很简单。其中 /PATH_TO_YOUR_CONFIG 是你准备存放 HA 配置文件的位置,建议新建一个文件夹,比如 /home/pi/ha 之类的。那么,我们实际的安装脚本就是

# 创建配置文件的保存目录
mkdir /home/pi/ha -p

# 通过 Docker 运行 HA
docker run --init -d \
--name homeassistant \
--restart=unless-stopped \
-v /etc/localtime:/etc/localtime:ro \
-v /home/pi/ha:/config \
--network=host \
homeassistant/raspberrypi3-homeassistant:stable

这个安装过程会需要点时间,耐心等待,如果其中出现网络连接错误,重试即可。

安装完成后,我们就可以通过浏览器访问 HA 了,http://<host>:8123,host 是指树莓派的 IP 地址。

首次打开 HA 页面,会要求注册,参考 Onboarding Home Assistant 设置一个管理员账户即可。

在设置区域和地图的时候,拖动地图选到自己家所在的位置,下拉选择一下时区,我选的是「Asia/Shanghai」。

下一步是添加智能家居设备,可以先跳过,后续再添加。设置成功后,就可以看到我们的 HA 首页了。默认 UI 只有几张卡片,稍稍做了一些调整,让它看起来好看一点:

图片来自网页截图

可别小看了这个 UI 界面,不仅仅是一个智能家居的控制中心,而且也是一个非常强大的展示中心,我找了几个例子,可以感受一下。

图片来自网络,版权归原作者所有
        图片来自网络,版权归原作者所有
图片来自网络,版权归原作者所有
图片来自网络,版权归原作者所有

也可以基于 HA 打造一个我们自己的「魔镜」,非常酷炫了。

        图片来自网络,版权归原作者所有


至此,我们就完成了树莓派 + Docker + Home Assistant 的安装。步骤虽然有点繁多,但每一步其实都不复杂,新手小白也可以折腾起来。但真要实现我们理想中的智能家居终端,这还只是万里长征第一步 —— 搭好了环境。

慢慢来吧!

  1. 1. Balena Etcher 下载地址:https://balena.io/etcher ↩︎

  2. 2. 树莓派官网:https://www.raspberrypi.org/software/operating-systems/ ↩︎

  3. 3. Home Assistant 官网:https://www.home-assistant.io/installation/ ↩︎

  4. 4. 启动 Home Assistant:https://www.home-assistant.io/getting-started/onboarding/ ↩︎


撒欢吧
谈理想
聊人生
讲故事
相对论
花火田丁
微信号:huahuoding
花火田丁
不折腾不人生