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:
使用IP:8123
可以访问Web控制面板:
安装了Xiaomi MIoT后,可以桥接小米设备到HomeKit等平台:
这样就可以在macOS上操作米家设备(而不需要下载米家……),或者用Siri直接操作。
呜呜呜,现在在房间里写代码,天黑时候去客厅,终于不用打着手电筒去开灯了(*≧ω≦)
还可以在多个设备上安装Home Assistant APP,实现多设备信息共享:
现在,就让我们开始安装流程吧~~
注意更新一下软件:
sudo apt update -y
sudo apt upgrade -y
查看树莓派的Linux版本:
# 查看Linux版本
lsb_release -a
如果要完整支持HomeAssistantSupervised,最好根据HomeAssistantSupervised官方支持系统说明查看本地的系统是否满足:
可以看到,截止到文章发布,官方文档说明是需要Debian11,我的树莓派系统是满足的。
其实,用其他系统也可以,只是
Supervised
可能功能受限,比如:Supervised版本的Nginx或者Php用不了。对基础功能。
但是,桥接设备到Apple的HomeKit,没有影响。(我用Debian10安装时候,就是这样)。
嘿嘿,做教程视频不易(B站根本不会推荐引流),请务必一键三连嗷~B站视频地址:https://www.bilibili.com/video/BV1Bq4y1a7Bs
HomeAssistantSupervised需要NetworkManager的支持,树莓派官方使用的是ModemManager、openresolv和dhcpcd5。
原本的配置可以不动,但是需要固定Mac地址并禁用ModemManger。
因为NetworkManager一旦安装就会开始工作。所以我们先创建一个NetworkManager的配置文件来固定Mac地址,防止我们后续操作重启时候,树莓派的Mac地址频繁变更。
预编写NetworkManager的配置:
# 创建配置目录和文件
sudo mkdir -p /etc/NetworkManager/conf.d/
# 对文件追加内容
sudo vim /etc/NetworkManager/conf.d/100-disable-wifi-mac-randomization.conf
追加的内容:
[connection]
wifi.mac-address-randomization=1
[device]
wifi.scan-rand-mac-address=no
之后就可以安装network-manager了。
安装完Network-Manager后,网络可能会出现短暂的丢包。这个时候多等一下就好,并且在完成
ModemManager
的禁用前,请勿重启树莓派系统!!!
安装:
sudo apt install -y network-manager
有些教程会让你卸载dhcpcd5
,但是这样重启后需要重新配置网络,并且不能用树莓派的方法配置,这让我这没有显示器的用户很苦恼……所以这里我们就不卸载dhcpcd5
,直接禁用ModemManager
即可。
# 停止ModemManager
sudo systemctl stop ModemManager
# 禁止ModemManager开机自启
sudo systemctl disable ModemManager
到此,NetworkManager部分就准备好了。
安装Apparmor很简单:
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):
# 使用vim打开/boot/cmdline.txt
sudo vim /boot/cmdline.txt
末尾添加:apparmor=1 security=apparmor
。
还需要安装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
sudo apt-get install \
jq \
wget \
curl \
udisks2 \
libglib2.0-bin \
dbus -y
如果你之前有安装Docker,可以跳过本步骤。
之后,下载Docker官方脚本,并使用阿里源进行Docker的安装:
# 下载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的响应会是断断续续的,要等到回报稳定再开始SSH连接:
需要注意,如果最后设备长时间
Request timeout for icmp_seq
,在网络没问题情况下,可能是树莓派供电不足,实在不行可以上65W的PD充电器。
现在开始安装Home Assisistant Supervised
啦。
因为有选项卡,请不要在screen内操作!!!
# 下载deb安装包
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
# 安装
sudo dpkg -i homeassistant-supervised.deb
我的是树莓派4B,如果你是树莓派3,应该知道怎么操作吧?注意多下滑点,有树莓派
raspberrypi4-64
版本。
安装过程……根据自己的网络,这一步可能会卡很久,如果还是不行,记得科学一下再重新安装:
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
)即可安装试试。
但是,这个时候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 Https反代的需求,需要让Nginx支持websocket服务的反代;参考配置:
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";
}
到此,树莓派安装Home Assisistant Supervised
就结束了。是不是还有人想知道如何桥接小米设备到Apple HomeKit?
这个…… 下次有机会和大家说,再和大家详细说说Nginx的反代和FRP映射,让我们可以远程访问Home Assisistant。