详解树莓派上如何安装Home Assistant Supervised

本文最后更新于 2023年9月17日 上午

前言

Home Assistant的大名,想必大家都知道,使用它可以轻易把米家的设备,桥接到Apple的HomeKit,让用户可以用Siri就可以控制小米设备。当然,我们用树莓派,不想使用HA的系统,又像获得更全面的HA体验,可以试试HAS。

首先,我们看看Home Assistant Supervised和Home Assistant System以及Core的区别,参考自compare-installation-methods
区别

所以,使用Home Assistant Supervised,基本上是Home Assistant的完整版,当然,有一定的要求。

Docker和Supervised安装过程中,需要稳定供电;尤其是安装Supervised前,重启载入新配置时,如果供电更不上,SSH连接容易不稳定。

因此,强烈建议用高瓦数的PD头给树莓派4B供电(如:30W PD充电头)。

效果展示

最后的效果很简单,Home Assistant Supervised依赖于Docker,所以会有这些Docker所属于Home Assistant Supervised:
最终Docker

使用IP:8123可以访问Web控制面板:
Web控制面板

安装了Xiaomi MIoT后,可以桥接小米设备到HomeKit等平台:
Web控制面板

桥接效果:
桥接到HomeKit(iPhone)
桥接到HomeKit(macOS)

这样就可以在macOS上操作米家设备(而不需要下载米家……),或者用Siri直接操作。

呜呜呜,现在在房间里写代码,天黑时候去客厅,终于不用打着手电筒去开灯了(*≧ω≦)

还可以在多个设备上安装Home Assistant APP,实现多设备信息共享:
多设备共享信息

关于付费

首先,明确说明,小白用户完全可以看此篇文章后,自己搭建。玩树莓派、Linux,本身就需要自己多探索,什么问题都问,连reboot英文都看不懂?基础的排查都不会?我实在没那么多时间。本文不提供任何免费辅助,看了教程后,自行配合搜索引擎搭建。

迫于生计:

感谢所有捐赠用户⁄(⁄ ⁄ ⁄ω⁄ ⁄ ⁄)⁄

树莓派校验

现在,就让我们开始安装流程吧~~

首先,我们先成功连接上树莓派:
成功远程登录树莓派

注意更新一下软件:

1
2
sudo apt update -y
sudo apt upgrade -y

查看树莓派的Linux版本:

1
2
# 查看Linux版本
lsb_release -a

Linux版本

如果要完整支持HomeAssistantSupervised,最好根据HomeAssistantSupervised官方支持系统说明查看本地的系统是否满足:
2022年3月
可以看到,截止到文章发布,官方文档说明是需要Debian11,我的树莓派系统是满足的。

其实,用其他系统也可以,只是Supervised可能功能受限,比如:Supervised版本的Nginx或者Php用不了。对基础功能。
但是,桥接设备到Apple的HomeKit,没有影响。(我用Debian10安装时候,就是这样)。

辅助视频

嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷~B站视频地址:https://www.bilibili.com/video/BV1Bq4y1a7Bs

NetworkManager

HomeAssistantSupervised需要NetworkManager的支持,树莓派官方使用的是ModemManager、openresolv和dhcpcd5。

原本的配置可以不动,但是需要固定Mac地址并禁用ModemManger。

因为NetworkManager一旦安装就会开始工作。所以我们先创建一个NetworkManager的配置文件来固定Mac地址,防止我们后续操作重启时候,树莓派的Mac地址频繁变更。

固定Mac地址

预编写NetworkManager的配置:

1
2
3
4
# 创建配置目录和文件
sudo mkdir -p /etc/NetworkManager/conf.d/
# 对文件追加内容
sudo vim /etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf

追加的内容:

1
2
3
4
5
[connection]
wifi.mac-address-randomization=1

[device]
wifi.scan-rand-mac-address=no

创建配置文件

之后就可以安装network-manager了。

安装Network-Manager

安装完Network-Manager后,网络可能会出现短暂的丢包。这个时候多等一下就好,并且在完成ModemManager的禁用前,请勿重启树莓派系统!!!

安装:

1
sudo apt install -y network-manager

安装networkManager

禁用ModemManager

有些教程会让你卸载dhcpcd5,但是这样重启后需要重新配置网络,并且不能用树莓派的方法配置,这让我这没有显示器的用户很苦恼……所以这里我们就不卸载dhcpcd5,直接禁用ModemManager即可。

1
2
3
4
# 停止ModemManager
sudo systemctl stop ModemManager
# 禁止ModemManager开机自启
sudo systemctl disable ModemManager

ModemManager

到此,NetworkManager部分就准备好了。

Apparmor

安装Apparmor很简单:

1
sudo apt install -y apparmor-utils jq software-properties-common apt-transport-https avahi-daemon ca-certificates curl dbus socat

安装依赖
但是需要注意,需要把Apparmor的启动配置参数加到树莓派的启动参数内(参考自:https://github.com/Kanga-Who/home-assistant/issues/25):

1
2
# 使用vim打开/boot/cmdline.txt
sudo vim /boot/cmdline.txt

末尾添加:apparmor=1 security=apparmor

OS-Agent

还需要安装OS Agent。这个并没有在Debian的软件源内,所以我们需要使用dpkg安装。最新OS Agent的下载地址:https://github.com/home-assistant/os-agent/releases/latest
树莓派选择aarch64版本

比如,我这里下载并安装1.2.2版本的OS Agent:

1
2
3
4
# 下载OS Agent 1.2.2
wget https://github.com/home-assistant/os-agent/releases/download/1.2.2/os-agent_1.2.2_linux_aarch64.deb
# 使用dpkg安装
sudo dpkg -i os-agent_1.2.2_linux_aarch64.deb

安装OS-Agent成功

其他依赖

还有一些其他的依赖需要安装,参考自:https://github.com/home-assistant/supervised-installer

1
2
3
4
5
6
7
sudo apt-get install \
jq \
wget \
curl \
udisks2 \
libglib2.0-bin \
dbus -y

安装依赖

2022.11.27后Homeassistant正式需要Systemd Journal的支持;我们同样可以使用软件包管理器进行安装:

1
sudo apt install systemd-journal-remote -y

安装依赖

Docker

如果你之前有安装Docker,可以跳过本步骤。

之后,下载Docker官方脚本,并使用阿里源进行Docker的安装:

1
2
3
4
# 下载Docker安装脚本
sudo curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里镜像源下载并安装Docker
sudo sh get-docker.sh --mirror Aliyun

安装Docker
Docker安装完成

把我们自带的pi用户添加到docker用户组内:

1
sudo usermod -aG docker pi

重启设备

上诉操作,我们已经重新配置了网络、安装了依赖和添加了启动参数,所以在正式安装Home Assisistant Supervised前,我们需要重启设备。

重启设备后,ping一下设备,看看能不能有稳定的包返回:
ping检测

重启时候,会新增一些进程,期间ping的响应会是断断续续的,要等到回报稳定再开始SSH连接:
稳定

需要注意,如果最后设备长时间Request timeout for icmp_seq,在网络没问题情况下,可能是树莓派供电不足,实在不行可以上65W的PD充电器。

Supervised

安装

现在开始安装Home Assisistant Supervised啦。

因为有选项卡,请不要在screen内操作!!!

1
2
3
4
# 下载deb安装包
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
# 安装
sudo dpkg -i homeassistant-supervised.deb

之后,没有问题就会出现选项卡,我们选择树莓派4B:
选择树莓派4B
选择树莓派4B-64

我的是树莓派4B,如果你是树莓派3,应该知道怎么操作吧?注意多下滑点,有树莓派raspberrypi4-64版本。

安装过程……根据自己的网络,这一步可能会卡很久,如果还是不行,记得科学一下再重新安装:
卡很久

如果你出现grub配置错误,比如:
grub错误
解决方法很简单:

1
sudo vim /etc/default/grub

添加:systemd.unified_cgroup_hierarchy=false

1
sudo vim /boot/cmdline.txt

添加:systemd.unified_cgroup_hierarchy=false

之后重启系统,重新进入系统后,再次使用命令安装(sudo dpkg -i homeassistant-supervised.deb)即可安装成功:
安装成功

如果过程中出现这样的错误:
安装失败

一般是网络问题,重新执行命令安装(sudo dpkg -i homeassistant-supervised.deb)即可安装试试。

成果

使用docker命令,查看Supervised的容器状态(如果并没有Homeassistant容器;那么等10min~20min再试试,期间保持树莓派运行,Homeassistant会组建初始化完成):
Docker正常

进入IP:4357,可以查看Supervised的状态:
状态正常

但是,这个时候IP:8123无法进入Home Assisistant Supervised的管理页面,你需要重启一次服务器:

1
2
# 重启服务器
sudo reboot

重启后,等待5分钟左右(Home Assisistant Supervised第一次启动比较慢),就可以通过IP:8123在浏览器访问了:
成功访问

状态正常

配置文件

找到配置文件

另外,安装一些插件(比如著名的xiaomi_miot_raw,需要自己编辑Home Assisistant的配置文件。

但是,官方好像没说这个配置文件在哪里。其实在/usr/share/hassio/homeassistant内:
配置文件

如果后续版本更新,不在这里。可以使用find命令进行搜索:

1
sudo find / -name "homeassistant"

查找配置文件

如何Nginx反代

另外,如果有Nginx Https反代的需求,需要让Nginx支持websocket服务的反代;参考配置:

1
2
3
4
5
6
7
8
location / {
proxy_pass http://127.0.0.1:8123;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}

END

到此,树莓派安装Home Assisistant Supervised就结束了。是不是还有人想知道如何桥接小米设备到Apple HomeKit?

这个…… 下次有机会和大家说,再和大家详细说说Nginx的反代和FRP映射,让我们可以远程访问Home Assisistant。



详解树莓派上如何安装Home Assistant Supervised
https://www.mintimate.cn/2022/03/29/raspberryInsatllHAS/
作者
Mintimate
发布于
2022年3月29日
许可协议