b站安装过程实录:https://www.bilibili.com/video/BV194421w72e/?share_source=copy_web&vd_source=d17175c986cec83b4c79184b625c9ea2
目录
前言
话说天下大势,分久必合,合久必分,我(们)周围最常见的智能家居平台有华为、小米、苹果。然而截至目前,我并没有看到他们有要相互兼容的趋势,这导致我们没有办法做到东市买骏马,西市买鞍鞯。当然,如果各家平台上产品种类都十分齐全且丰富的话,那各家不融合倒也不是什么大问题,然而现实是各家平台要么缺少产品种类,要么一类产品可选择范围过小,在网上浏览信息时,三家分别给了我这样的印象:苹果使用体验好,但价格最高;小米小玩意儿丰富,但大家电支持较差;华为是我自己在用的,给我的感受是和鸿蒙系统配合得很好,但十!分!排!外!——我目前没有找到任何方法将个人DIY设备接入华为平台——其平台只对企业开放加入。权衡之后,我打算尝试使用Home Assistant(HASS)来作为我的智能家居平台,然而遗憾的是,其仍旧和华为的智慧生活无法兼容(而小米和苹果在网上都能搜到如何与HASS互动,虽然我并没有验证其可行性 )。
本来本文是HASS Supervised的安装教程(也因此OS选择的Debian 12),但是经过我反复尝试(10天,每天我都从头到尾走一遍本教程删掉的Supervised安装过程),得出安装Supervised版本的过程极不稳定的结论,其最大的不可控因素发生在docker拉取HASS Supervised版本一系列镜像的过程中,因为所有的docker配置全由官方脚本指定,自由度很小而github镜像仓库(ghcr.io)又不是很好连,就会导致下载时长不可控;Supervised部署的时候还要连github网址,又很容易失败。这一自然段是本文最后完成的部分(别问我为啥不写后记,我想把血泪史放前边劝退),我现在有四个改善连接环境的想法,一是改hosts,二是再次尝试挂梯子(这个我用过,不知道为啥流量不走代理,搞不清docker+Supervised的网络架构;我还尝试过PC上挂梯子,树莓派和docker设置PC为代理,也是看不出来效果),三是设置软路由(目前我认为最科学的方法,但未尝试),四是研究官方安装脚本,手动完成每一步以实现最大程度干预拉取和安装过程。总之,让我们先从HASS Container入门吧!有什么非用Supervised版本不可的理由后再换过去,毕竟从本质上来讲Container版本缺失的Add-ons实际上就是个适配良好的应用商店,有啥需要的可以手动下。
材料清单
HASS官网针对HASS OS的清单https://www.home-assistant.io/installation/raspberrypi,不过我们是要安装Debian12而不是HASS OS。
(一)树莓派
我的规格是Raspberry Pi 4 Model B 8GB RAM,在完成本文的所有内容后,其资源占用情况如下,大家可根据自己的需要选择RAM大小。

(二)SD卡
HASS只对HASS OS操作系统给出了32GB的建议,并没有对安装在Debian上需要购买存储卡的大小给出建议,因此我购买了64GB A2的SD卡,注意在此处一定要买A2的。

(三)【网线】/【显示器+键盘】
网线在此十分好用,只要插到路由器上就能直接有网。然后能直接SSH进去管理;否则就只能显示器+键盘进行线下配置了(你说无线网?不好意思,我从来没预配置成功过,如果你足够幸运或许你可以不需要本条目中的内容,因为似乎从Debian 12开始,就不再支持预配置设置无线网络了,或许将来可能会重新支持吧)。
(四)树莓派壳子
大致有两种可选择,一是带风扇的主动散热,二是全金属壳的被动散热。我一开始买的带风扇的主动散热,好家伙噪音那叫一个飞起,后来我换成了被动散热的壳子,平常摸起来就是温温的,我觉得这个散热程度可以接受,综上我比较推荐被动散热。
(五)登录github的能力
这个看情况,如果运气好了,裸连也能完成关键操作步骤。否则只能科学(改hosts,本文用的方法)或魔法(嗯,魔法)。
(六)一款SSH软件
可以选择PuTTY(https://putty.org/)或者Xshell(https://www.xshell.com/zh/free-for-home-school/),后文我用的Xshell。
一、安装操作系统
Debian 12安装过程借鉴https://raspberrytips.com/install-debian-on-raspberry-pi/,文中含有Debian 12(for Raspberry Pi)下载链接https://raspi.debian.net/tested-images/。
Raspberry Pi官方对使用Raspberry Pi Imager安装操作系统的教程https://www.raspberrypi.com/documentation/computers/getting-started.html#install-using-imager
(一)下载烧录器与操作系统镜像
首先我们需要去树莓派官网(https://www.raspberrypi.com/software/)下载烧录器,稍后其将帮助我们把操作系统镜像烧录到SD卡上。

然后去本章开头给的链接下载Debian 12镜像,注意需要根据自己的树莓派型号进行选择。

(二)烧录
将SD卡连接到电脑上,打开烧录器

在“CHOOSE DEVICE”处选择你的树莓派型号;在“选择操作系统”处选择之前下载好的Debian 12镜像(点击按钮之后拉到最底下的“Use custom”选择已有文件);在“选择SD卡”处选择你插入的SD卡。完成后点击NEXT

弹出提示是否应用操作系统自定义,我们选择“编辑设置”

注意,下方内容已标为灰色,因为我试了半天这个配置对我们要装的Debian 12毛用没有,似乎是从Debian 12(Bookworm)开始不支持此设置。
设置界面总共有三个标签页,在GENERAL标签页可以设置主机名、用户名和密码(注意Linux用户名命名规范)、连接到的WiFi名称和密码(WIFI国家选项将影响到将来使用的信道)以及语言设置。时区需要选择上海,键盘布局us即可。

在SERVICES界面设置SSH相关配置,根据自己的需求来。

在OPTIONS界面,可以设置一些烧录相关的选项。(没搞懂启用遥测是干嘛的,官方文档里也没有说明)

完成后点击保存,然后在之前弹的是否应用操作系统自定义界面选择是。后面可能会弹将会清除SD卡上所有数据,选择是就行了,然后开始烧录

后面会有验证文件阶段,树莓派官网文档的机翻:“如果想活得特别危险,可以点击取消验证跳过验证”

(三)SSH准备
下方内容为选择使用网线进行远程配置的人看的,选择使用屏幕+键盘的直接使用root无密码登录就行,然后跳转到SSH登录之后的内容接着看就行。
打开Xshell,点击“用户密钥管理者”按钮(在工具选项卡里也有)

在弹出界面点击“生成”按钮(下图已经存在的RaspberryPI是我之前创建的)

按照下图默认的配置选择即可,点击下一步

等待密钥生成,完成后点击下一步

给密钥起个名称,然后设置密码,之后点击下一步

选中公钥全部内容进行复制,或停留在该页面上备用

打开SD卡找到sysconf.txt文件,去掉“root_authorized_key=”前的#,然后在等号后面粘贴上图复制的内容(实际上暴露该内容没啥危害,毕竟是公钥)。该关键字实际是“root_authorized_key”,不知道为啥我的下划线不显示了

保存文档,弹出SD卡,将SD卡插到树莓派上并给树莓派上电。使用网线连接路由器和树莓派。查看自己的路由器管理界面,等待设备连接。设备连接到网络后记录其ip地址(如果是长期使用网线,建议在此将该ip设为固定分配;若稍后长期使用WiFi,同理也建议稍后将WiFi分配的ip设为固定分配)

在Xshell上新建一连接

为其设置一个名称,然后主机处填写刚才的ip,完成后在左侧点击用户身份验证

用户名为root,然后在方法中勾选Public Key,然后选中Public Key后点击设置

选择刚刚生成的密钥,并输入该密钥密码,完成后点击确定

可以先把Password的勾去掉,这样等下就不会提示密码错误了

完成后点击连接,正常的话就可以SSH登录到树莓派了。

(四)登录操作系统
接下来的内容选择屏幕+键盘的可以接着看啦
1、换源
借鉴https://www.cnblogs.com/smlile-you-me/p/17727308.html,注意如果自己去网上找,一定要看链接里是不是包含bookworm字样,否则会导致版本问题
首先为了可恢复,备份一下原文件
cp /etc/apt/sources.list /etc/apt/sources.list.bak
编辑/etc/apt/sources.list
nano /etc/apt/sources.list
将下方内容覆盖掉sources.list原内容(nano里ctrl+k可以删除行)
deb https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm main non-free non-free-firmware contrib
deb https://mirrors.aliyun.com/debian-security/ bookworm-security main
deb-src https://mirrors.aliyun.com/debian-security/ bookworm-security main
deb https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm-updates main non-free non-free-firmware contrib
deb https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib
deb-src https://mirrors.aliyun.com/debian/ bookworm-backports main non-free non-free-firmware contrib

保存sources.list文件后记得在终端执行“apt update”以及“apt upgrade”(很重要)。
apt update
apt upgrade
2、设置时区
执行下方指令设置时区
timedatectl set-timezone Asia/Shanghai
完成之后可以执行“timedatectl”查看是否设置成功。
3、新增普通账号
建议新增普通用户作为平时登录的账号,直接登root有点不讲究(但其实后文全是root账户在操作哈哈,记得自己增删sudo)。
首先装一下sudo
apt install sudo
在终端输入下方指令进入新增用户流程
adduser 用户名
随后设置密码及其他信息。我这里新增的用户叫zdzx,后面文章内容所有出现zdzx的地方都应该为你自己新增的用户名。

添加刚刚新建的用户到sudo组
usermod -aG sudo 用户名

更新登录信息并将密码登录设置为首位

再次连接默认登录的就是刚刚新建的用户。
4、设置无线连接(网线读者跳过)
编辑/etc/network/interfaces.d/wlan0文件,可使用如下命令
nano /etc/network/interfaces.d/wlan0
根据文件提示去除注释,并配置wifi名称和密码,完成之后按ctrl+x退出,会询问是否保存,按y保存即可,然后会询问保存位置,直接按回车即可

完成之后在终端输入“systemctl reboot”重启(但是我的树莓派重启失败了,只能断电重连了QAQ)
systemctl reboot
稍等片刻可以在路由器终端上看到以无线方式新加入的树莓派

二、安装宝塔操作面板
宝塔官网https://www.bt.cn/new/download.html
首先先安装wget
sudo apt install wget
然后按照宝塔官网的说明,我们先切换到root用户,然后在终端上输入从宝塔官网复制的安装脚本,如下图

在终端上运行复制的安装脚本,一开始会问你要不要把面板安到/www目录下,确认之后就开始滚屏幕了,安装过程在树莓派上耗时会有点长(下图计时为27min)。完成安装后请妥善保存弹出的提示消息

注意!安装宝塔后记得运行相应服务前要在宝塔面板上开放相关端口!
三、安装HASS
(一)安装docker
Docker Engine官方安装教程(先决条件)https://docs.docker.com/engine/install/debian/#install-using-the-repository
Docker Container官方安装教程https://docs.docker.com/compose/install/linux/
1、安装Docker Engine
首先依次执行以下代码,以添加Docker的官方GPG密钥
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
执行过程中出现“sudo: unable to resolve host XXX”的解决方法参考自https://blog.csdn.net/yuzhiyuxia/article/details/19998665,修改/etc/hosts文件,在127.0.0.1后补充自己的OS名称

然后执行以下代码(已经将官网代码中的$VERSION_CODENAME替换为了bookworm)
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "bookworm") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
完成之后执行apt-get update
sudo apt-get update
然后执行下方代码
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
完成之后可以使用以下命令来验证是否完成了安装
sudo docker run hello-world

2、安装Docker Compose plugin
执行下方指令
sudo apt-get install docker-compose-plugin
完成之后可以使用下方指令进行测试
docker compose version

(二)安装HASS Container
HASS官方安装HASS Container教程https://www.home-assistant.io/installation/linux#docker-compose
首先新建/hass目录并在其中新建compose.yml文件和config文件夹
mkdir /hass
cd /hass
touch compose.yml
mkdir config
将下方内容粘贴到compose.yml中,已经将官网的/PATH_TO_YOUR_CONFIG更改为之前创建的/hass/config
version: '3'
services:
homeassistant:
container_name: homeassistant
image: "ghcr.io/home-assistant/home-assistant:stable"
volumes:
- /hass/config:/config
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
restart: unless-stopped
privileged: true
network_mode: host

通过宝塔面板设置加速URL,设置之后记得按要求重启docker。没有安装宝塔的话请自行搜索怎么给docker pull加速,其实就是改个配置文件

在/hass目录下执行“docker compose up -d”,请至少留出1h的时间让镜像拉取完成(一般1h够用了),如果时间不足,可以执行“nohup docker compose up -d &”使其转为后台运行
docker compose up -d

可以通过宝塔首页的流量监控看下下载速度(特意挑了个速度起来的时候截,哈哈)

我总共拉了23分钟才拉完(经反复尝试,拉取时间也不太稳定,有一次我用了2000多秒)

完成之后,在浏览器输入http://<ip>:8123即可访问HASS(记得在宝塔安全界面放行8123端口),<ip>替换为你树莓派的ip。
(三)HASS初始设置
接下来的教程替换为https://www.home-assistant.io/getting-started/onboarding/


不知道为啥我搜索功能不能用,但是点击下图的定位(前提是输入框什么都不要有)却可以粗略定位一下。 大致定位之后拖动蓝色标标到正确位置后点下一步

如果那个定位也用不了的话就得自己拖了,默认初始标点在接近世界地图的尺度上在下图位置,自己拖到你家然后慢慢放大再定位就行




四、安装HACS极速版
HACS极速版链接https://gitee.com/hacs-china
我试了下命令行自动安装,但是好像没连上服务器,于是改为手动安装
首先点击上方注释链接中的方法4给出的链接下载hacs.zip,然后在终端执行下方命令创建/hass/config/custom_components文件夹和/hass/config/custom_components/hacs文件夹
mkdir -p /hass/config/custom_components/hacs
随后将下载的hacs.zip传到/hass/config/custom_components/hacs(使用宝塔的文件页面或其他方法)
完成之后执行下方指令进入/hass/config/custom_components/hacs目录并解压hacs.zip
cd /hass/config/custom_components/hacs
unzip hacs.zip
执行完毕后重启HASS

在配置->设备与服务->添加集成中搜索HACS

把前面选项都打上勾后点击提交

如果你足够幸运在这时可以裸连github,那么恭喜你完成了本文全部内容,可以退出本文了。等下,先点个赞再走!
好了,那帮子幸运儿走了,剩下我们这些倒霉蛋开会,下面我将使用科学的方法使HACS可以连接到github。至于本机是使用科学还是魔法就看个人喜好了。
UsbEAm Hosts Editor下载地址https://www.dogfight360.com/blog/475/
首先在上述链接下载UsbEAm Hosts Editor,完成之后在个人电脑运行该程序

测试github各ip延迟


IP从上到下依次尝试应用选中,会有两种结果,如下两图。应应用一个理论可用的ip后在自己的主机上尝试裸连github,如果无法连接就继续换ip,直到能裸连为止,记下可以裸连的ip


然后设置树莓派,编辑/etc/hosts文件
nano /etc/hosts
在顶上(防止有文件结尾问题)新增一条“<ip> github.com”,ip是你刚才可裸连的ip

然后在宝塔面板Docker选项卡的容器界面单独重启homeassistant

完成之后便可再次尝试添加HACS了,出现下图就说明成功了!

ok,散会!