赞
踩
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大小。
HASS只对HASS OS操作系统给出了32GB的建议,并没有对安装在Debian上需要购买存储卡的大小给出建议,因此我购买了64GB A2的SD卡,注意在此处一定要买A2的。
网线在此十分好用,只要插到路由器上就能直接有网。然后能直接SSH进去管理;否则就只能显示器+键盘进行线下配置了(你说无线网?不好意思,我从来没预配置成功过,如果你足够幸运或许你可以不需要本条目中的内容,因为似乎从Debian 12开始,就不再支持预配置设置无线网络了,或许将来可能会重新支持吧)。
大致有两种可选择,一是带风扇的主动散热,二是全金属壳的被动散热。我一开始买的带风扇的主动散热,好家伙噪音那叫一个飞起,后来我换成了被动散热的壳子,平常摸起来就是温温的,我觉得这个散热程度可以接受,综上我比较推荐被动散热。
这个看情况,如果运气好了,裸连也能完成关键操作步骤。否则只能科学(改hosts,本文用的方法)或魔法(嗯,魔法)。
可以选择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卡上所有数据,选择是就行了,然后开始烧录
后面会有验证文件阶段,树莓派官网文档的机翻:“如果想活得特别危险,可以点击取消验证跳过验证”
下方内容为选择使用网线进行远程配置的人看的,选择使用屏幕+键盘的直接使用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登录到树莓派了。
接下来的内容选择屏幕+键盘的可以接着看啦
借鉴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
执行下方指令设置时区
timedatectl set-timezone Asia/Shanghai
完成之后可以执行“timedatectl”查看是否设置成功。
建议新增普通用户作为平时登录的账号,直接登root有点不讲究(但其实后文全是root账户在操作哈哈,记得自己增删sudo)。
首先装一下sudo
apt install sudo
在终端输入下方指令进入新增用户流程
adduser 用户名
随后设置密码及其他信息。我这里新增的用户叫zdzx,后面文章内容所有出现zdzx的地方都应该为你自己新增的用户名。
添加刚刚新建的用户到sudo组
usermod -aG sudo 用户名
更新登录信息并将密码登录设置为首位
再次连接默认登录的就是刚刚新建的用户。
编辑/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)。完成安装后请妥善保存弹出的提示消息
注意!安装宝塔后记得运行相应服务前要在宝塔面板上开放相关端口!
Docker Engine官方安装教程(先决条件)https://docs.docker.com/engine/install/debian/#install-using-the-repository
Docker Container官方安装教程https://docs.docker.com/compose/install/linux/
首先依次执行以下代码,以添加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
执行下方指令
sudo apt-get install docker-compose-plugin
完成之后可以使用下方指令进行测试
docker compose version
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。
接下来的教程替换为https://www.home-assistant.io/getting-started/onboarding/
不知道为啥我搜索功能不能用,但是点击下图的定位(前提是输入框什么都不要有)却可以粗略定位一下。 大致定位之后拖动蓝色标标到正确位置后点下一步
如果那个定位也用不了的话就得自己拖了,默认初始标点在接近世界地图的尺度上在下图位置,自己拖到你家然后慢慢放大再定位就行
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,散会!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。