【小白旧物利用】安卓系统搭建使用Homeassistant&Homebridge(一)
孤独时代のJoker
2022年01月26日 16:45
收录于文集
共1篇

Part 1 前言

        近期看了一阵子的智能家居视频,但囿于没有足够的小钱钱购置自己的家庭服务器,只能作罢,但那天随手刷到了一个安卓机配置环境安装HA和HB的介绍文章,于是心动想自己跟着搞一下,折腾了一个周末终于搞好。期间历经空间不足换设备、网络连接失败等问题,但最终通过查询各种教程、询问多次度娘和Bing,终于是解决好了遇到的问题。虽然安装之后的功能并不完善(主要是由于目前智能设备太少TAT),但是目前已经可以把服务跑起来,做一个记录,也为后续同学亲自动手搭建智能家居系统做一个参考吧^ ^~

        P.s:本篇为软硬件小白依照教程&自己摸索完成的安装记录,为非专业人士自己搞着玩的内容,欢迎各类意见给到(杠精勿扰)~

Part 2 硬件及基础准备

        就像你准备运动,一定会先做好前期准备工作:办健身房年卡or购置装备,这里我们使用淘汰下来的旧手机就ok了,介绍一下安卓平台(这不重要,只要空间足够还可以开机使用就行):型号:魅族Pro 6 Plus,系统:Flyme 8.0+,剩余容量:30+G

        这里手机的CPU型号不做高配要求,在使用本机之前有考虑过用小米盒子(2代),但我没有找到对应的刷机包,也没有好用的刷机设备,于是作罢。And在本平台搭建前,我使用了魅蓝(带SD卡版本),一开始只给分配了4G的容量,后来折腾一番到安装HomeBridge的时候容量不足了(尴尬),而且有个问题在于他会先占用手机自身的容量,导致手机系统一直提示容量不足...于是怒换平台重来一遍......

        为了实现手机完成类似Nas/服务器的功能,我们需要开启手机Root权限,一般来说开启后会重启设备,之后就获得了一台可以自由玩耍设备。

        然后这里我们需要准备两个软件:BusyBox和Linux Deploy(类似Docker的容器),对应安装文件为:linuxdeploy-2.6.0-259.apk 和 busybox1.34.1.apk 两款软件都可以度娘获得~

        — — ①BusyBox安装:直接打开apk文件安装,进入软件后再点击“安装”or“Install”完成对工具的准备。

        — — ②LinuxDeploy安装:直接打开apk文件安装,完成后点击左上角,找到配置文件,起一个自己喜欢的名字,然后再进入设置,点击“更新环境”。推荐点亮以下三项内容,完成后就可以开始设置运行的环境并进行安装了~!

        安装好后可以勾选以下三项保证环境在后台能够运行

设置后台运行 此外还要在手机系统上设置后台运行防止误杀进程

Part 3 容器配置

        到这里可以算是进入正题了,我们需要点击右下角对我们要运行的环境进行配置,几个选项如下配置即可:

  • 发行版GNU/Linux【系统版本】:Ubuntu

  • 架构(自动选择上了不用管):arm64

  • 发行版本:bionic

  • 源地址【需要改成国内源 速度更快(这里我选择了ustc源)】:http://mirrors.ustc.edu.cn/ubuntu.img

  • 镜像大小【关键!按照你的需要选择,之前分了4G结果不够】:8192MB (8G)

  • 用户名:android

  • 用户密码:xxxxxx

  • 特权用户:root(后续用root进行操作)

  • 初始化启用:✔

  • SSH启用:✔(可以顺便改个端口,不改默认22也可以)

    配置好后点击右上角“安装”,然后就去干点别的(例如:吃个零食)等他安装好,等到最后一行出现"<<<  deploy"就说明安装完成了,再点击左下角的“启动”就可以愉快地进入容器啦~

Part 4 Ubuntu环境设置(Python & Sqlite)

        有的同学觉得可能说,Ubuntu环境自带了Python和Sqlite你为啥还要重新安装呢?

        这里我安装的Ubuntu版本为18.04 LTS,自带Python3.6.5和Sqlite3.22.0,但是在安装homeassistant(HA)的过程中发现HA会提示Python版本过低以及Sqlite版本低导致HA启动不起来的问题,于是直接从根上解决问题,对于高版本Python是否能够很好兼容HACS插件可能还需要再观察。于是我这边选择了Python3.9.5和Sqlite3.37.2作为安装HA的底层环境来开展后续的安装。

        ①用android用户登陆后 使用命令切换到root用户方便操作:

代码块
Shell
自动换行
复制代码
sudo su -
复制成功

        ②更新系统的apt-get部件:

代码块
Shell
自动换行
复制代码
# 同步源给到的命令索引
sudo apt-get update
# 升级已安装的软件包
sudo apt-get upgrade
复制成功

        ③安装相应的依赖库&Python3依赖

代码块
Shell
自动换行
复制代码
# -y 表明全部同意,就不用一个一个点击确认啦
sudo apt-get install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev virtualenv yum -y

# 安装curl
sudo apt-get install -y curl
# 安装Python3的依赖和pip3
sudo apt-get install python3-pip python3-dev -y
复制成功

        ④用户权限管理(具体设置见下图)

代码块
Shell
自动换行
复制代码
# 安装nano或者vim 看个人习惯
sudo apt-get install nano
sudo apt-get install vi
# 安装wget 方便后续安装各种包
sudo apt-get install wget
# 权限设置
sudo visudo
复制成功

                如下图所示即可。图中有一部分写错了,要注意!

这里白字倒数第三行写错了 55555 :(   应该是   %homeassistant

        ⑤用户管理——root和homeassistant

代码块
Shell
自动换行
复制代码
# 新增homeassistant用户&用户组
sudo adduser --system homeassistant
sudo addgroup homeassistant
# 修改用户群组
sudo usermod -G dialout -a homeassistant
# 设定root用户的密码
sudo passwd root
# 设定homeassistant用户的密码
sudo passwd homeassistant
复制成功

        到这里一些基础环境就准备好了,接下来开始安装高版本的python和sqlite

        — — Python 3.9.5 安装

        ①下载、解压、编译

代码块
Shell
自动换行
复制代码
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar -xvf Python-3.9.5.tgz
# 进入解压后的目录
cd Python-3.9.5
mv Python-3.9.5 Python3.9
# 编译并指定安装路径 请耐心等待...
sudo ./configure --prefix=/usr/lib/python3.9 --with-openssl=/usr/bin/openssl
sudo make
sudo make install
复制成功

        ②备份python副本并建立软连接

代码块
Shell
自动换行
复制代码
# 备份副本
sudo mv /usr/bin/python /usr/bin/python.bak
sudo mv /usr/bin/python3 /usr/bin/python3.bak
# 建立软连接
sudo ln -s /usr/lib/python3.9/bin/python3 /usr/bin/python3
sudo ln -s /usr/lib/python3.9/bin/python3 /usr/bin/python
# 完事查看一下python版本是否与已安装的一致
python3 -V
复制成功

        ③pip升级

代码块
Shell
自动换行
复制代码
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
sudo python3 get-pip.py
# 建立pip软连接
sudo ln -s /usr/lib/python3.9/bin/pip3 /usr/bin/pip3
sudo ln -s /usr/lib/python3.9/bin/pip3 /usr/bin/pip
# 查看pip pip3版本
pip3 -V
pip -V
复制成功

        Python升级个人感觉注意好依赖和软连接,清楚安装位置就可以了。

        — —  Sqlite 3.37.2 安装

        ①查看sqlite3版本

代码块
Shell
自动换行
复制代码
python3
>>> import sqlite3
>>> sqlite3.sqlite_version
复制成功

        ②下载sqlite安装包,安装地址:https://www.sqlite.org/download.html ,选择sqlite-autoconf的版本,解压后编译文件

代码块
Shell
自动换行
复制代码
wget https://www.sqlite.org/2022/sqlite-autoconf-3370200.tar.gz
tar zxvf sqlite-autoconf-3370200.tar.gz
cd sqlite-autoconf-3370200
# 编译
./configure
sudo make
sudo make install
复制成功

        ③确认安装完成和对应文件地址

代码块
Shell
自动换行
复制代码
ls -l /usr/local/lib/*sqlite*
ls -l /usr/local/include/*sqlite*
复制成功

        ④上述步骤完成之后我发现默认的sqlite版本没有改变,尝试将安装后的sqlite3文件放到/usr/bin/中发现还是不行,因此重新编译python以匹配最新安装的sqlite,编译后就是热乎的3.37.2的版本啦~

代码块
Shell
自动换行
复制代码
cd sqlite-autoconf-3370200
cp sqlite3 /usr/bin/sqlite3
# 并且由于sqlite3的版本可能与高版本python有所不同,为了不产生不必要冲突,对python3.9重新编译
cd Python3.9/
LD_RUN_PATH=/usr/local/lib ./configure LDFLAGS="-L/usr/local/lib" CPPFLAGS="-I/usr/local/include"  --prefix=/opt/python3.9
LD_RUN_PATH=/usr/local/lib make
make
sudo make install
# 如果还不行的话可以再尝试移除系统安装的旧版本
sudo apt-get remove sqlite3 libsqlite3-dev
复制成功

Part 5 Homeassistant安装配置

    ①设置环境

代码块
Shell
自动换行
复制代码
# 创建python3虚拟环境来跑homeassistant
virtualenv -p python3 /srv/homeassistant
# 此处有坑 之前安装python3.9的时候是将原有库覆盖安装的 导致有些包的内容无法匹配,比如virtualenv就不行,因此备份之前的软连接后重新以python3.9的virtualenv建立软连接并升级版本
sudo mv /usr/bin/virtualenv /usr/bin/virtualenv.bak
sudo ln -s /usr/lib/python3.9/bin/virtualenv /usr/bin/virtualenv
sudo pip3 install --upgrade virtualenv
复制成功

        ②进入虚拟环境

代码块
Shell
自动换行
复制代码
# 创建虚拟环境【直接建立在root用户下】
virtualenv -p python3 /srv/homeassistant
# 上条如果跑不起来就要到srv下创建文件夹并赋权
sudo mkdir /srv/homeassistant
sudo chmod 777 /srv/homeassistant
# 进入虚拟环境
source /srv/homeassistant/bin/activate
复制成功

成功的话会显示上图内容

        ③安装相关包

代码块
Shell
自动换行
复制代码
# 如果感觉速度慢的话重新设置下pip源
pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
# 安装相关包
pip3 install --upgrade pip
pip3 install --upgrade setuptools
pip3 install netdisco
pip3 install --upgrade homeassistant
复制成功

        ④安装完毕后输入hass就可以启动homeassistant啦

代码块
Shell
自动换行
复制代码
hass
# 地址为你LinuxDeploy上对应的ip地址,端口号为8123,一般为192.168.XXX.XXX:8123
复制成功

        下一篇给大家带来Homebridge的安装配置与HA、HB的连接方法~

        鸣谢:各位前辈总结的经验帖是完成本次DIY的重要指导和参考,但从中也发现了一些新出现的问题,花费了不少时间进行修正和调整,本文仅作为个人安装经验的分享,非专业码农基于兴趣搭建,再次感谢你能看到这里!:)

        主要参考经验帖:

    [1]小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit_软件应用_什么值得买 (smzdm.com) https://post.smzdm.com/p/amm5dn84/

    [2]智能家居折腾记 篇一:小米手机1通过armhf方式安装homeassistant_智能家居_什么值得买 (smzdm.com) https://post.smzdm.com/p/adwl3r2n/

    [3]没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢_智能家居_什么值得买 (smzdm.com) https://post.smzdm.com/p/553097/

    [4]怎么顺利安装Home Assistant,新手教程 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com) https://bbs.hassbian.com/thread-1937-1-32.html

    [5]闲置安卓手机安装HA变身智能家居中枢,及网关接入教程 - 『HomeAssistant』综合讨论区 - 『瀚思彼岸』» 智能家居技术论坛 - Powered by Discuz! (hassbian.com) https://bbs.hassbian.com/thread-993-1-1.html

    [6]在Ubuntu上升级SQLite,并让Python使用新版SQLite - animalize - 博客园 (cnblogs.com) https://www.cnblogs.com/animalize/p/6337440.html