安卓手机安装HomeAssistant(无需Root,不含Supervisor)

29,536 阅读8分钟

前排提醒

一路的连环坑踩过来,我有话说:

  1. 如果你想一步到位且心情愉悦的上车HA,那么我强烈建议你使用香橙派安装HA,点击这里前往安装教程;它比树莓派便宜,重要的是能使用HA的全部功能;
  2. 如果你只是想用安卓手机简单体验下,可以继续看这个教程;

前提

  1. 了解什么是快乐星球 home-assistant(简称HA)
  2. 老安卓机一部
  3. 安装HA建议用docker,因为python、pip会有各种依赖报错。
  4. 带有黄色感叹号的注释部分请仔细阅读

背景知识点

如你所知/所不知的,几句经验之谈,急性子可跳过。

  • 手机上装HA,需模拟出Linux系统
    • iOS暂不支持安装HA。商店搜索iSH shell可模拟Alpine Linux。但请相信我,它没叼用。因为它是简版linux,种种原因它不支持docker;通过Python安装HA总是依赖报错(bcrypto之类的红字),竖子不足与谋。iPhone上装HA这条路,何其坑爹。

    • 安卓模拟Linux可以用Termux或Alpine Term,在这里推荐Alpine Term。Root与否不重要,Termux虽可模拟Linux,但安装HA跟iOS一样会遇到一些依赖报错,苦等半天一片红你气不气?安装docker也是总遇到问题,当然在网上有见过其他人用Termux安装成功的,然后评论区一堆报错提问也没得解决,就当我是个菜逼吧。

准备

  1. 下载App:Alpine Term

    ⚠️ 安装完成后不建议删除apk安装包,后面如果有问题方便重新安装

安装

安装并运行Alpine Term,每次启动app都要等待加载,持续几分钟到十几分钟不等,若想HA长时间在线,建议开启app的后台运行权限,以我的红米Note4X为例,手机设置-电量和性能-应用配置-选择Alpine Term-设置后台为‘无限制’;同时设置Wi-Fi为休眠状态下始终保持链接。其他品牌型号请自行探索。

得益于Alpine Term内置集成的docker,省老鼻子事儿了,我们可以直接使用docker安装HA且无需换源。

  1. 首先切换到root用户: 执行sudo -i 输入默认密码 alpine,此步骤用以省却后续重复sudo xxx的操作

  2. 执行service docker start 启动docker

     常见问题:"cannot connect to docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?"
     
     安卓手机性能有差异,docker可能不会立刻成功启动,即使你看到它说[ok]的情况下,执行docker pull或者启动hass,也可能会报错 
    
     当然你完全可以无视这条提示继续往下走,但你要知道这个错误特征
     遇到这个错误时,你可以等待个三两分钟,再执行其他docker命令
    
  3. 执行 docker pull homeassistant/home-assistant 拉取船新版本的HA到 本地。

     ⚠️1.这个过程比较久,个人网络差异,建议做好2-3小时的心理准备;
     ⚠️2.timeout报错,直接点击键盘上方的向上箭头按钮⬆,再一次执行pull命令即可
     ⚠️3.报错"no space left on device",如果你有过其他操作,建议删除app清空app数据,重新安装
     ⚠️4.它显示的一个文件列表,逐个Download下载成功会后,会再逐个pull一遍,留意下这个特性,遇事不慌
     ⚠️5.pull成功后,会显示一长串 sha256:xxxxxxxxxx 和 Status: Downloaded newer image for homeassistant/home-assistant:xxxxxxxxx
     ⚠️6.不同地区网络环境也不一样,有条件的建议按需配置vpn
    
  4. 执行mkdir hass创建安装目录,名字hass可以随意。

     生成路径会是 /root/hass, 因为操作步骤1后你已经在root路径下了,执行ls命令应该能查看到创建好的hass文件夹
     ⚠️ 路径/root/hass会在步骤5中用到,请自行替换
    
  5. 开始安装docker run -d --name="hass" -v /root/hass:/config -p 8123:8123 -e TZ="Asia/Shanghai" homeassistant/home-assistant

     ⚠️ --name="hass"目的是给HA加个名称,后续docker启动HA都会用到。
          若遇到了--name报错命令不支持,可把--name="hass"干掉,但安装成功后需要执行docker ps,查看最后一项name字段找到程序的旧名字,然后"docker reanme 旧名字 新名字" 来重新取名,建议新名字hass。
     ⚠️ 如果遇到容器名字冲突,可能是存在同名容器,建议docker ps检查是否已经安装了。如果没有安装,建议重复执行一次步骤5,还不行的话删掉app重来
    
  6. 启动HA,执行docker start hass 看到输出hass字样表示HA启动成功🍺

     ⚠️ 关闭HA 执行 "docker stop hass"
    
  7. 端口映射hostfwd_add tcp::8123-:8123,可以理解成打破Alpine Linux与外层Linux之间的套娃壁垒,使局域网内的其他设备可以访问到内层的HA

     ⚠️操作和命令:在Alpine Term软件里,手指从屏幕的左向右滑会出现菜单
     点击QEMU,执行命令 hostfwd_add tcp::8123-:8123
    
  8. 访问Home Assistant的两种方式:

    1. 当前手机浏览器访问127.0.0.1:8123
    2. 获取当前手机IP假设为192.168.0.xx,通过其他手机电脑访问192.168.0.xx:8123

重启

当Alpine Term应用重启后,需要再次执行的步骤有:

  1. 登录到alpine用户,账号密码默认alpine

  2. 执行sudo -i 输入默认密码 alpine

  3. service docker start 启动docker

  4. docker start hass 启动HA

  5. 端口映射hostfwd_add tcp::8123-:8123,要去QEMU里操作,参照前面步骤7

     ⚠️ HA重启后的3-5分钟内,浏览器访问不到HA属于正常现象
     可能设备性能有差异,导致HA实际启动很慢,耐心等待即可
    

设置自启动

自启动会导致app启动后等待时间变久,请自行判断是否启用

  1. 执行rc-update add docker boot app每次启动时,docker都会自启动
  2. 在HA运行状态下执行 docker update --restart=always hass 每次docker启动后,HA都会自动运行

重启进阶

如果你使用了上面自启动设置,那么每次重启app后只需执行下方端口映射命令即可

hostfwd_add tcp::8123-:8123 要去QEMU里操作,参照前面安装步骤7

    ⚠️ HA重启后的3-5分钟内,浏览器访问不到HA属于正常现象
    可能设备性能有差异,导致HA实际启动很慢,耐心等待即可

注意事项

  1. 遇到网络超时timeout错误,就多试几次问题不大,不需要换源啥的。
  2. 遇到HA启动报错的话就多执行两次
  3. 如果经过前面两步仍存在奇怪的问题,建议修改时区,再不行就手机恢复出厂设置重新来一遍防止有脏数据,防止有脏数据残留
  4. 通过此教程方式安装的HA,不包含Supervisor,其实HACS完全能够平替
  5. 安卓版本/app版本/docker版本/HA版本,这种不太需要注意,只要能跑Alpine Term,能安装HA,能有什么压力。实在不行衫裤跑路也挺省心。
  • 修改时区(可选项) 两条命令TZ='<UTC+8>' 修改完成后执行date查看时间,另外可按照 date -s "28 Mar 2022 13:20:00" 的格式修改具体时间

HACS

本教程安装的HA没有supervisor,不能安装Add-on官方应用商店,hacs是HA的社区商店,基本可以平替,安装米家设备/美的空调什么的就靠它啦

HomeKit方向

本教程安装的HA支持米家设备集成,不支持HomeKit集成。

HomeKit需要保证docker使用的网络与iPhone在同一网段

比如iPhone的IP地址192.168.0.66,那么需要做到docker的网络eth0 的IP也需要是192.168.0.xx。

为了实现这一点,我试过macvlan和其他host模式

但局限于我们的linux系统的通信是qemu桥接出来的,我不道qemu怎么才能改配置。

若你有其他设备想支持HomeKit(比如电脑、开发板),请确保在本篇文章安装成功后,或熟悉安装流程的前提下,再查看如何支持HomeKit的教程

最后

  • 受设备性能差,这种版本不适合深度使用,只适合入门体验
  • 由于安卓docker的搭建方式不能接入HomeKit,已经转战开发板搭建了
  • 淘宝价格230块入了香橙派3 LTS开发版,已搭建完成,可接入HomeKit

相关链接

香橙派安装HomeAssistant

常见问题

QA- docker pull 408 关闭局域网中存在的VPN

QA- docker failed to register layer no space left

www.jianshu.com/p/ac591f49a…