家里多少会有跑不动的淘汰下来的旧手机,安装homeassistant跑起智能家居服务器,焕发第二春真香。
敢和官方产品以及各种盒子比功耗比性能。
docker需要科学上网,其它的安装方式好象并不适用于手机的linux deploy系统。
确实,core安装是最困难的一种安装方式,本文并不是写给小白的操作教程,需要有一定动手能力,对linux系统有一定了解并具备相应的操作经验的朋友才可以采用这种方式完成homeassistant core的安装。
重点技能:debian升级版本、编译python、能从安装中的报错信息中能找到关键字,安装所缺的包。
呃,好吧,笔者把新鲜出炉安装好homeassistant 202408版的镜像分享出来,那么,root好之后的arm64架构的手机可以用linuxdeploy直接挂载使用了。这比docker还要简单了吧。
手机:2G运存/16G存储以上,可root的手机,如本文所用之小米5
电脑:准备好终端工具如putty,传输工具如winscp
网络:手机和电脑在同一局域网
HA的更新太快,对于环境的依赖也在不断变化,这导致网上的安装教程基本上都会卡死在某一步。我仅列出我觉得比较重大的避坑点,也是为现在和以后遇到问题的朋友提供一些参考。
使用homeassistant用户安装时会容易遇到报错,可能是权限的问题,我暂时未找到解决方案。本文是以root用户完成的安装。
此步骤非本文重点,简要介绍一下,详细步骤有不清楚的,请自己百度查找。
小米5是2016年上市的,早期有官方的ROOT方法,后来失效了,好在解锁还是可以,目前比较靠谱的是用magisk(面具)APP来root。
很多小米手机都有一个刷机锁。
在设置 -> 开发者选项 -> 设备解锁状态中查看锁定情况,如果是锁定的并且现在要开锁,那么就下载解锁工具解锁,全过程很简单跟着官方教程走就行了。
刷机锁的网站
小米手机root需要刷成开发版。
注:开发版线刷包应该也可以,步骤会略有不同,此处略过。
github magisk下载,安装到手机上。
注:若下载不了或太慢,建议使用国内github镜像,这个镜像网站不太稳定,一段时间这个能用,过段时间不能用了又要重新找,笔者目前使用的是:kkgithub.com
把卡刷包/线刷包解压开,找到boot.img,传到手机上,用magisk打开修补。
至此完成root的破解。
linuxdeploy github下载
注:同magisk下载。
重要提示:此步安装完成后,符合条件的朋友可以跳到最后,下载本人分享镜像文件直接加载运行,免去自行安装之苦。
打开linux deply app
点击右下角的设置图标,进入设置界面:
[attach]62558[/attach]
配置项很多,修改下面这些即可,未列出的保持缺省设置。
发行版 | debian | 我选debian,ubuntu应该也可以,但我没完整尝试过,个人觉得debian更稳定 |
---|---|---|
架构 | arm64 | 小米5的CPU是骁龙820支持arm64,其它手机自行查找核对应该选哪种架构 |
发行版版本 | buster | 这是debian 10,linux deploy最高只提供这个版本,但已经过时了,难以安装最新版的homeassistant,先装它。 |
源地址 | http://mirrors.ustc.edu.cn/debian/ | 国内镜像都可以,不过升级时需要用中科大的源来升级 |
安装类型 | 镜像文件 | 用镜像文件的好处是方便备份和分享 |
安装路径 | ${EXTERNAL_STORAGE}/ha202408.img | 这个文件就在手机存储的根目录下,取这个名字是homeassistant202408版的意思。 |
镜像大小 | 8192 | 8G够用了,万一以后不够的话还有办法扩容。 |
用户名 | homeassistant | 用这个用户名,后面安装ha的时候就不用再新建用户了。 |
用户密码 | 888888 | 自己安装的话,自己定密码。我分享的镜像统一用这个密码,拿到镜像后请自已修改密码。 |
允许使用初始化系统 | 勾选 | |
启用SSH服务器 | 勾选 |
配置好之后,回APP首页,点开右上角三个点,选“安装”,即可自动安装。
安装完成后,点左下的启动,即可启动debian 10。
如果一切顺利的话,现在就可以用终端工具登录到系统上进行操作了。
我使用的终端工具是putty,并习惯于用winscp传输文件。接下来的操作主要是通过这俩完成的。
这两个都是开源软件,官网无墙,请自行百度下载安装。
工具用法本文不表,请自备技能。
在同一局域网的电脑上,用putty登录前面安装好的debian 10,切换到root用户,并设置root密码。
后面的系统升级操作都要以root用户来进行的。
注:我分享的镜像中root密码也是888888,拿到后请自己修改密码。
login as: homeassistant
[email protected]'s password:
Linux localhost 3.18.71-perf-g4a0ef96 #1 SMP PREEMPT Thu Nov 22 00:40:45 CST 2018 aarch64
Debian GNU/Linux 10 (buster) [running via Linux Deploy]
$ su -
root@localhost:~# passwd root
New password:
Retype new password:
passwd: password updated successfully
root@localhost:~#
升级前先更新当前的软件包核安全补丁到最新版本,并删除未使用的依赖项:
apt update && apt upgrade -y
apt --purge autoremove
我是用vi来修改的,你们喜欢用什么都可以,也可以通过winscp来打开这个文件进行修改。
vi /etc/apt/sources.list
修改后应该是这样的:
deb http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye main contrib non-free
deb http://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
deb http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-updates main contrib non-free
deb http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
deb-src http://mirrors.ustc.edu.cn/debian/ bullseye-backports main contrib non-free
apt update
apt full-upgrade
升级过程中有几个地方有交互的:
[attach]62559[/attach]
这里选Y,确认继续。
[attach]62560[/attach]
这里选Yes
[attach]62561[/attach]
这里要选N,也是缺省值。
[attach]62562[/attach]
此处选默认的第二项即可。
执行:
cat /etc/debian_version
输出应该是11.X
https://zhuanlan.zhihu.com/p/400092868
https://www.jiloc.com/49766.html ... 8%E6%8F%8F%E8%BF%B0
除了第二步sourcelist的内容不一样,如下所示,其余步骤同10升级到11:
deb http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
deb-src http://mirrors.ustc.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware
本步骤参考链接:
https://zhuanlan.zhihu.com/p/636675047
要点一:升级之前要修改root的密码,后面用root登录做下面的升级。
也是避免sudoer文件在升级中不小心选错了被初始化,导致linuxdeloy生成的用户不再具备sudo的权限。
这会导致系统中没法执行超级用户的命令。
要点二:采用中科大的源,因为只有这个源支持http的方式,其它源仅支持https会产生问题。
官方安装文档:
https://www.home-assistant.io/installation/linux
步骤基本上是按上面的来,但针对我的环境现状,做了调整,记录如下:
sudo apt-get update
sudo apt-get upgrade -y
sudo apt-get install -y python3 python3-dev python3-venv python3-pip bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libtiff6 libturbojpeg0-dev tzdata ffmpeg liblapack3 liblapack-dev libatlas-base-dev
这一步会安装python3,得到的是3.11的版本,并不满足homeassistant的安装需要(python 3.12)。所以在这一步之后编译安装python 3.12。
在Ubuntu/debian上编译安装Python 3.12的步骤如下:
sudo apt update
sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libsqlite3-dev libreadline-dev libffi-dev wget
wget https://www.python.org/ftp/python/3.12.5/Python-3.12.5.tar.xz
tar -xvf Python-3.12.5.tar.xz
cd Python-3.12.5
./configure --enable-optimizations
make -j $(nproc)
sudo make altinstall
python3.12 --version
rm -rf /usr/bin/python3
rm -rf /usr/bin/python
ln -s /usr/local/bin/python3.12 /usr/bin/python3
ln -s /usr/local/bin/python3.12 /usr/bin/python
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
这一步可以免掉了,前面linux deploy已生成了。其实笔者在后面用homeassistant安装时报错,而加了sudo则完成,但这样就装到root用户下面了。那么,就当是root用户安装了吧。
创建目录并改变用户为 homeassistant
sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant
下面为Home Assistant Core生成一个虚拟环境并切换过去,这件事是用homeassistant
用户来做的。
sudo -u homeassistant -H -s
cd /srv/homeassistant
python3 -m venv .
source bin/activate
注:前面的步骤都是从原文操作步骤中翻译过来的,实际也是按这个来进行的。但后面的操作必须加sudo才能过。我想啊,是不是直接用root用户来安装得了,反正这手机也不用来做别的,把root用户密码设复杂一点就行了呗。当然这样做是不太安全,但我并不清楚这个安装过程必须什么样的权限,如果把homeassistant加到root组或赋于root权限,不也同样不安全吗?
sudo python3 -m pip install wheel
sudo pip3 install homeassistant==2024.8.2
第一次执行homeassistant时,还是会检查所需的包,并安装之,这个过程仍然需要root权限,而且即使是root,过程中仍然可能报错。
su -
hass
第一次运行需要比较长的时间,可能是5到10分钟,根据设备性能和遇到错误的情况,这个时间会有不同。
笔者根据遇到的错误信息,新增的安装如下:
apt install libpcap-dev
pip3 install numpy
pip3 install zlib_ng
pip3 install isal
如果遇到的错误多的话,建议另外开一个终端专门用于安装缺失的包。
==注:这里是难点,不同的安装时间和安装环境遇到的错误信息可能不同,特别依赖于安装者的解决问题的经验和能力。==
hass
现在可以了,打开手机或电脑的浏览器,输入:"http://IP:8123" ,这里IP是你手机的IP,显示在linux deploy的首页上端。
见到以下页面,即大功告成。
前述步骤的安装后的镜像,可以复制到符合以下条件的手机上直接使用。
同一架构(arm64)的手机,且已成功root并安装了linuxdeploy
隔壁的王叔叔 发表于 2024-8-18 18:19
老早就有此意,我有个红米,k30手机,屏幕坏了,6G+256G,我觉得跑个ha卓卓有余吧。 ...
lqf1206 发表于 2024-8-18 12:11
请教之前装宝塔ssh连不上了,宝塔正常运行!
fluter 发表于 2024-8-18 18:51
足足有余,多余的部分可以做点别的,比如做个本地的人脸识别怎么样?
隔壁的王叔叔 发表于 2024-8-18 19:41
可以,我先搞定黑屏如何连上他。
fluter 发表于 2024-8-17 19:09
[md]
## 追加彩蛋
前述步骤的安装后的镜像,可以复制到符合以下条件的手机上直接使用。
lqf1206 发表于 2024-8-18 23:15
电脑USB投屏/局域网无线
lqf1206 发表于 2024-8-18 23:15
电脑USB投屏/局域网无线
lqf1206 发表于 2024-8-18 21:03
镜像亲测可用,感谢分享!!!
隔壁的王叔叔 发表于 2024-8-19 08:24
我知道这一招儿,但是黑屏了,没办法点那个adb信任连接。是屏幕直接掉下来了。触屏才做不了。 ...
隔壁的王叔叔 发表于 2024-8-19 08:25
你这个是哪个软件安卓投屏?
欢迎光临 『瀚思彼岸』» 智能家居技术论坛 (https://bbs.hassbian.com/) | Powered by Discuz! X3.5 |