在安卓手机中使用Termux安装Home Assistant Core
一次用小米5尝试在Termux中安装Home Assistant Core,之前知道有这个东西,一直没接触过,家里也有不少智能设备,而且美的不支持米家,所以空调的控制一直使用美的美居这个App,做不到和温湿度传感器进行联动,所以准备先用手机装下试试。
准备工作
首先说这是Home Assistant Core,并不支持Supervisor和插件。但是一些基础功能还是有的,至少原生支持的一些设备都是可以添加并且控制的,比如常见的小米(Miot)、华为等都是可以添加的。
不同版本区别
插件都依赖容器所以Core和Container都不支持。
软件
- Termux
以下操作都是直接利用python安装hass,其实也可以在手机中利用虚拟机直接安装OS,也就是系统版本。虽然有一个j4125的软路由,但还是想在手机上折腾(?)
操作步骤
肯定是先啃文档啊,没有比文档更权威的教程了。https://www.home-assistant.io/installation/linux#install-home-assistant-core
安装依赖
pkg update
pkg upgrade
pkg install -y screen clang python rust make build-essential libjpeg-turbo libpng binutils pkg-config
创建虚拟环境
# 设置源
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 创建目录
mkdir homeassisant && cd homeassisant
# 创建虚拟环境
python -m venv venv
screen -S hass
# 激活虚拟环境
source venv/bin/activate
官方文档在这里是要创建用户的,因为Termux非完整linux环境,而且是单用户所以也就创建不了了。
安装
export CARGO_BUILD_TARGET=aarch64-linux-android && pip install homeassistant
pip install tzdata
安装进行解决。编译maturin的时候如果没有加上 CARGO_BUILD_TARGET 变量的话,会报类似下面的错误。一会安装好执行的时候也需要一个额外变量才可以启动,更多可以看这个https://wiki.termux.com/wiki/Python
creating build/lib.linux-aarch64-3.10 creating build/lib.linux-aarch64-3.10/maturin copying maturin/import_hook.py -> build/lib.linux-aarch64-3.10/maturin copying maturin/__init__.py -> build/lib.linux-aarch64-3.10/maturin running build_ext running build_rust error: Don't know the correct rust target for system type aarch64-unknown-linux-android. Please set the CARGO_BUILD_TARGET environment variable. [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ERROR: Failed building wheel for maturin Failed to build maturin
不出意外的话,输入这条命令后不会出现什么报错。安装之前用screen创建了一个窗口,是因为安装过程比较漫长,需要编译的东西挺多的,防止退出后进程丢失。小米MIX3这一步安装编译至少花了12个小时以上,因为前一天的下午3点开始安装,睡前凌晨1点没有安装完。
启动
MATHLIB=m hass --debug
首次启动需要加上 MATHLIB=m ,应为需要安装numpy,加debug呢是为了更好的查看错误。
中间会出现这样一个错误,官方论坛中也有人遇到,但是问题比较新也没找到解决办法,猜测是与python版本有关,好在不影响使用。这次安装花不了多长时间,大约十几分钟之后就可以直接访问到了。
http://IP地址:8123/,IP地址加上8123的端口就可以直接访问了。
配置
只要打开这个页面,后续就没有什么大问题了,跟着官方文档的图例走就行了,https://www.home-assistant.io/getting-started/onboarding/
下次启动就不用带额外变量和debug了直接 hass 就可以了。
注意
Python版本
在手机上使用Termux来安装的话,要注意固定python版本,因为Termux上好像不支持旧版本安装(也有可能是我没找到)。如果真的要长时间使用的话不建议频繁更新Python版本。
一次在手机上的尝试,其实Core的版本基础功能这就够了,自动化场景都有只不过,除了默认支持的设备外其他的添加比较麻烦,因为不支持插件。但是Core版本的探索就到这了,下次就是对OS的深入了解了。
文章评论
<code>pip install tzdata</code> 貌似也不行
@等风起 尝试重启termux或手机,然后重新操作一下。注意要在虚拟环境中安装这个包,如果还有问题,只能说去官方论坛搜一下相关报错信息看下有没有同一问题的了,https://community.home-assistant.io/
退出termux软件后,再打开termux运行hass不行了?No command hass found, did you mean:
command has in package has
command pass in package pass
@等风起 可能是python相关目录并没有加入到环境变量,可以尝试<code>python -m hass</code>看是否可以启动。如果可以启动,那么如果觉得用python -m 不方便那就找一下python的bin目录(应该在这里或者叫Scripts)加入到环境变量里就行了。
@管理员 再一个就是进入:8123注册账号登录到家庭位置一直过不去,说时区不对
@等风起 可能是少个时区的数据库,可以试试安装一下,<code>pip install tzdata</code>
@管理员 Invalid time zone passed in. Valid options can be found here: http://en.wikipedia.org/wiki/List_of_tz_database_time_zones for dictionary value @ data['time_zone']. Got 'Asia/Shanghai'
@管理员 这也进不去了呢
按照博主的教程成功搭建了,但怎么实现开机自启呢
@四天 termux官方有个插件 https://github.com/termux/termux-boot 处理开机启动的
hello,请问下可以在termux里面装 supervisor 版本的 HA吗?
@test Supervised 还是要求 docker 的,目前来讲原生Termux上是没办法安装docker的。倒是可以用 AnLinux 装一个发行版linux,类似虚拟机但据说性能没差太多,因为是完整arm linux,所以是可以正常安装的。一些需要完整linux环境的程序目前都跑在这个虚拟机上。