在安卓手机中使用Termux安装Home Assistant Core

2022年07月22日 37817点热度 2人点赞 12条评论

一次用小米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

编译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的深入了解了。

文章评论

  • 等风起
    2024年01月14日

    <code>pip install tzdata</code> 貌似也不行

    • 管理员
      2024年01月14日

      @等风起 尝试重启termux或手机,然后重新操作一下。注意要在虚拟环境中安装这个包,如果还有问题,只能说去官方论坛搜一下相关报错信息看下有没有同一问题的了,https://community.home-assistant.io/

  • 等风起
    2024年01月13日

    退出termux软件后,再打开termux运行hass不行了?No command hass found, did you mean:
    command has in package has
    command pass in package pass

    • 管理员
      2024年01月13日

      @等风起 可能是python相关目录并没有加入到环境变量,可以尝试<code>python -m hass</code>看是否可以启动。如果可以启动,那么如果觉得用python -m 不方便那就找一下python的bin目录(应该在这里或者叫Scripts)加入到环境变量里就行了。

      • 等风起
        2024年01月13日

        @管理员 再一个就是进入:8123注册账号登录到家庭位置一直过不去,说时区不对

      • 管理员
        2024年01月14日

        @等风起 可能是少个时区的数据库,可以试试安装一下,<code>pip install tzdata</code>

      • 等风起
        2024年01月13日

        @管理员 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'

      • 等风起
        2024年01月14日

        @管理员 这也进不去了呢

  • 四天
    2023年09月15日

    按照博主的教程成功搭建了,但怎么实现开机自启呢

  • test
    2022年09月17日

    hello,请问下可以在termux里面装 supervisor 版本的 HA吗?

    • 管理员
      2022年09月17日

      @test Supervised 还是要求 docker 的,目前来讲原生Termux上是没办法安装docker的。倒是可以用 AnLinux 装一个发行版linux,类似虚拟机但据说性能没差太多,因为是完整arm linux,所以是可以正常安装的。一些需要完整linux环境的程序目前都跑在这个虚拟机上。