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

2022-03-31 11:18:07 浏览数 (1)

头图不能少(・_・;头图不能少(・_・;

博客: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:

最终Docker最终Docker

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

Web控制面板Web控制面板

安装了Xiaomi MIoT后,可以桥接更多设备到HomeKit平台:

Web控制面板Web控制面板

桥接效果:

桥接到HomeKit(iPhone)桥接到HomeKit(iPhone)
桥接到HomeKit(macOS)桥接到HomeKit(macOS)

这样就可以在macOS上操作非HomeKit设备了。

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

树莓派校验

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

首先,我们先成功连接上树莓派:

成功远程登录树莓派成功远程登录树莓派

注意更新一下软件:

代码语言:shell复制
sudo apt update -y
sudo apt upgrade -y

查看树莓派的Linux版本:

代码语言:shell复制
# 查看Linux版本
lsb_release -a
Linux版本Linux版本

如果要完整支持HomeAssistantSupervised,最好根据HomeAssistantSupervised官方支持系统说明查看本地的系统是否满足:

2022年3月2022年3月

可以看到,截止到文章发布,官方文档说明是需要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
安装networkManager安装networkManager

禁用ModemManager

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

代码语言:shell复制
# 停止ModemManager
sudo systemctl stop ModemManager
# 禁止ModemManager开机自启
sudo systemctl disable ModemManager
ModemManagerModemManager

到此,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:

树莓派选择aarch64版本树莓派选择aarch64版本

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

代码语言:shell复制
# 下载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成功安装OS-Agent成功

其他依赖

还有一些其他的依赖需要安装,参考自: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
安装Docker安装Docker
Docker安装完成Docker安装完成

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

代码语言:shell复制
sudo usermod -aG docker pi

重启设备

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

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

ping检测ping检测

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

稳定稳定

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

Supervised

安装

现在开始安装Home Assisistant Supervised啦。

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

代码语言:txt复制
# 下载deb安装包
wget https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
# 安装
sudo dpkg -i homeassistant-supervised.deb

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

选择树莓派4B选择树莓派4B
选择树莓派4B-64选择树莓派4B-64

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

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

卡很久卡很久

如果你出现grub配置错误,比如:

grub错误grub错误

解决方法很简单:

代码语言:shell复制
sudo vim /etc/default/grub

添加:systemd.unified_cgroup_hierarchy=false

代码语言:shell复制
sudo vim /boot/cmdline.txt

添加:systemd.unified_cgroup_hierarchy=false

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

安装成功安装成功

如果过程中出现这样的错误:

安装失败安装失败

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

成果

使用docker命令,查看Supervised的容器状态:

Docker正常Docker正常

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

状态正常状态正常

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

代码语言:shell复制
# 重启服务器
sudo reboot

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

成功访问成功访问
状态正常状态正常

配置文件

找到配置文件

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

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

配置文件配置文件

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

代码语言:shell复制
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。

0 人点赞