博客:https://www.mintimate.cn
Mintimate’s Blog,只为与你分享
前言
Home Assistant的大名,想必大家都知道,可以桥接到设备到Apple的HomeKit等等。当然,我们用树莓派,不想使用HA的系统,又像获得更全面的HA体验,可以试试HAS(Home Assistant Supervised)。
首先,我们看看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:
使用IP:8123
可以访问Web控制面板:
安装了Xiaomi MIoT后,可以桥接更多设备到HomeKit平台:
桥接效果:
这样就可以在macOS上操作非HomeKit设备了。
呜呜呜,现在在房间里写代码,天黑时候去客厅,终于不用打着手电筒去开灯了(*≧ω≦)
树莓派校验
现在,就让我们开始安装流程吧~~
首先,我们先成功连接上树莓派:
注意更新一下软件:
代码语言:shell复制sudo apt update -y
sudo apt upgrade -y
查看树莓派的Linux版本:
代码语言:shell复制# 查看Linux版本
lsb_release -a
如果要完整支持HomeAssistantSupervised,最好根据HomeAssistantSupervised官方支持系统说明查看本地的系统是否满足:
可以看到,截止到文章发布,官方文档说明是需要Debian11,我的树莓派系统是满足的。
其实,用其他系统也可以,只是
Supervised
可能功能受限,比如:Supervised版本的Nginx或者Php用不了。对基础功能。 但是,桥接设备到Apple的HomeKit,没有影响。(我用Debian10安装时候,就是这样)。
NetworkManager
HomeAssistantSupervised需要NetworkManager的支持,树莓派官方使用的是ModemManager、openresolv和dhcpcd5。
原本的配置可以不动,但是需要固定MAC地址并禁用ModemManger。
因为NetworkManager一旦安装就会开始工作。所以我们先创建一个NetworkManager的配置文件来固定MAC地址,防止我们后续操作重启时候,树莓派的Mac地址频繁变更(我也不知道,为什么NetworkManager会导致MAC地址变更……)。
固定MAC地址
预编写NetworkManager的配置:
代码语言:shell复制# 创建配置目录和文件
sudo mkdir -p /etc/NetworkManager/conf.d/
# 对文件追加内容
sudo vim /etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf
追加的内容:
代码语言:txt复制[connection]
wifi.mac-address-randomization=1
[device]
wifi.scan-rand-mac-address=no
之后就可以安装network-manager了。
安装Network-Manager
安装完Network-Manager后,网络可能会出现短暂的丢包。这个时候多等一下就好,并且在完成
ModemManager
的禁用前,请勿重启树莓派系统!!!
安装:
代码语言:txt复制sudo apt install -y network-manager
禁用ModemManager
有些教程会让你卸载dhcpcd5
,但是这样重启后需要重新配置网络,并且不能用树莓派的方法配置,这让我这没有显示器的用户很苦恼……所以这里我们就不卸载dhcpcd5
,直接禁用ModemManager
即可。
# 停止ModemManager
sudo systemctl stop ModemManager
# 禁止ModemManager开机自启
sudo systemctl disable ModemManager
到此,NetworkManager部分就准备好了。
Apparmor
安装Apparmor很简单:
代码语言:shell复制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):
代码语言:shell复制# 使用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:
比如,我这里下载并安装1.2.2
版本的OS Agent:
# 下载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
其他依赖
还有一些其他的依赖需要安装,参考自:https://github.com/home-assistant/supervised-installer
代码语言:shell复制sudo apt-get install
jq
wget
curl
udisks2
libglib2.0-bin
dbus -y
Docker
如果你之前有安装Docker,可以跳过本步骤。
之后,下载Docker官方脚本,并使用阿里源进行Docker的安装:
代码语言:shell复制# 下载Docker安装脚本
sudo curl -fsSL https://get.docker.com -o get-docker.sh
# 使用阿里镜像源下载并安装Docker
sudo sh get-docker.sh --mirror Aliyun
把我们自带的pi
用户添加到docker用户组内:
sudo usermod -aG docker pi
重启设备
上诉操作,我们已经重新配置了网络、安装了依赖和添加了启动参数,所以在正式安装Home Assisistant Supervised
前,我们需要重启设备。
重启设备后,ping一下设备,看看能不能有稳定的包返回:
重启时候,会新增一些进程,期间ping的响应会是断断续续的,要等到回报稳定再开始SSH连接:
需要注意,如果最后设备长时间
Request timeout for icmp_seq
,在网络没问题情况下,可能是树莓派供电不足,实在不行可以上65W的PD充电器。
Supervised
安装
现在开始安装Home Assisistant Supervised
啦。
代码语言:txt复制因为有选项卡,请不要在screen内操作!!!
# 下载deb安装包
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
# 安装
sudo dpkg -i homeassistant-supervised.deb
之后,没有问题就会出现选项卡,我们选择树莓派4B:
我的是树莓派4B,如果你是树莓派3,应该知道怎么操作吧?注意多下滑点,有树莓派
raspberrypi4-64
版本。
安装过程……根据自己的网络,这一步可能会卡很久,如果还是不行,记得科学一下再重新安装:
如果你出现grub
配置错误,比如:
解决方法很简单:
代码语言:shell复制sudo vim /etc/default/grub
添加:systemd.unified_cgroup_hierarchy=false
sudo vim /boot/cmdline.txt
添加:systemd.unified_cgroup_hierarchy=false
之后重启系统,重新进入系统后,再次使用命令安装(sudo dpkg -i homeassistant-supervised.deb
)即可安装成功:
如果过程中出现这样的错误:
一般是网络问题,重新执行命令安装(sudo dpkg -i homeassistant-supervised.deb
)即可安装试试。
成果
使用docker命令,查看Supervised的容器状态:
进入IP:4357
,可以查看Supervised
的状态:
但是,这个时候IP:8123
无法进入Home Assisistant Supervised的管理页面,你需要重启一次服务器:
# 重启服务器
sudo reboot
重启后,等待5分钟左右(Home Assisistant Supervised第一次启动比较慢),就可以通过IP:8123
在浏览器访问了:
配置文件
找到配置文件
另外,安装一些插件(比如著名的xiaomi_miot_raw,需要自己编辑Home Assisistant的配置文件。
但是,官方好像没说这个配置文件在哪里。其实在/usr/share/hassio/homeassistant
内:
如果后续版本更新,不在这里。可以使用find
命令进行搜索:
sudo find / -name "homeassistant"
如何Nginx反代
另外,如果有Nginx Https反代的需求,需要让Nginx支持websocket服务的反代;参考配置:
代码语言:text复制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
就结束了。
这个…… 下次有机会和大家说,再和大家详细说说使用轻量应用服务器安装Nginx和FRP,对其进行反代和映射,让我们可以远程访问Home Assisistant。