小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit
0 前言
用iPhone也用了好久了,家里的米家设备比较多,一直只能通过米家app来操作。这些天看到可以通过homeassistant实现将米家设备接入苹果homekit,并且支持siri,功能很全,所以就准备折腾一番。
网上很多教程都是很久之前的了,有些也过时了,所以这次重新整理记录一下折腾的步骤,帮助一样遇到困难的朋友。
1 准备工作
准备一台可以root的安卓手机,我用的是索尼Xperia Z Premium,我,这是我2016年发疯,花了5000多块钱买的手机,现在闲鱼二手只要三四百块钱,高通骁龙835处理器,非常容易root,刷上原来机锋论坛马大的固件包,除了玩游戏,其他都能用途,现在真是性价比之王啊。(边框掉漆了)
2 安装linux
手机要先root,然后安装busybox(酷安有)以及linux deploy(我从github下载的原版)。
1.打开deploy之后,先点击右下角的配置
发行版GNU/Linux选择debian;架构选择arm64;发行版本选择buster;用户名和用户密码自行设置,简单一些;初始化选择启用;ssh选择启用;源改为:https://mirrors.163.com/debian;空间大一点设置成8192MB。
2.之后点击左上角,选择“设置”,关闭“屏幕常亮”,钩选锁定wifi和CPU唤醒;在“环境”一栏点击“更新环境”,更新一下deploy运行的环境。
3.点击右上角,选择“安装”,之后就是耐心等待,安装完成之后会显示"<<deploy",之后点击右上角的“配置”。
4.运行完成之后点击最下面的“启动”,看到starting extra/ssh ... done,以及下一行的<<< start就是启动成功了。
3 安装python和依赖库,安装homeassistant
参考https://post.smzdm.com/p/adwl3r2n/
1.用ssh方式登录到手机。
windows下可以用putty或者xshell这两个软件,win10可以直接用shell终端,macos下可以用自带的终端terminal,或者下载一个terminus。
使用操作自带的终端应用的话,可以直接使用命令ssh 用户名@ip地址:端口号(端口一般默认都是22,所以也可以不输入)。
2.登录之后用命令:
sudo su -
直接使用超级用户权限,方便操作。
3.安装python,按顺序输入以下命令
1)先更新一下apt-get组件
sudo apt-get update
sudo apt-get upgrade
上面这两条命令是更新一下系统的相关组件。
2)安装依赖库
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 -y
这一条命令是安装一些必要的依赖环境,-y的意思是直接点yes确认,免得每个包都来一遍。
3)sudo adduser --system homeassistant
sudo addgroup homeassistant
sudo usermod -G dialout -a homeassistant
这三条命令分别是新建用户(homeassistant)和用户组。
4)sudo passwd root
设定root用户的密码,方便以后用scp方式登录的时候使用。
5)sudo su -s /bin/bash homeassistant
virtualenv -p python3 /srv/homeassistant
上面这条命令可能会失败,这个时候需要进入到/srv/文件夹下,新建homeassistant文件夹,命令如下:
sudo mkdir /srv/homeassistant
然后赋予权限:
sudo chmod 777 /srv/homeassistant
接着再运行命令就好了。
source /srv/homeassistant/bin/activate
为homeassistant设置运行环境,运行好之后应该会如下图所示。
6)在设置好后的来环境下安装homeassistant,在(homeassistant) root@ localhost:~#后边的复制下面的代码
(homeassistant)$ pip3 config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
上一条是将pip3安装器的源更换为清华的国内源,这样安装会快一些。
(homeassistant)$ pip3 install --upgrade pip
(homeassistant)$ pip3 install --upgrade setuptools
(homeassistant)$ pip3 install netdisco
(homeassistant)$ pip3 install --upgrade homeassistant
运行的最后一条就是安装homeassistant,然后就是漫长的等待。等再次看到(homeassistant) root@ localhost:~#就是安装好了。
四、启动homeassistant
参考https://post.smzdm.com/p/adwl3r2n/
1.第一次启动使用命令:
hass
就会启动homeassistant系统。第一次启动的时间比较久,所以需要耐心等待。过个5到10分钟,就可以在浏览器中输入手机的IP地址加端口8123(默认端口),如:
看看能否进入到系统页面。
能进入页面的话,第一步就是创建用户名和密码,之后可以在命令终端里按键盘上的ctrl+c键,结束hass进程,进行下一步的设置。
2.在后台开启homeassistant用户进程
用ssh登录手机linux系统开启进程有个问题,就是关闭ssh后所有创建的进程也会一同关闭。可以理解成所有在ssh为父进程,ssh下创建的进程其实都子进程,父进程一关,子进程也就都会关掉。为了解决这个问题,可以使用nohup命令或者setsid命令。我自己现在用的是setsid。
再次登录到手机之后,先用:
sudo su -
进入超级用户模式
source /srv/homeassistant/bin/activate
这时会显示:(homeassistant) root@localhost:~#
使用命令:
nohup hass &
或者
setsid hass(推荐使用这个命令)
这两个命令会将hass在后台运行,其父pid为1,退出ssh后不会终结服务。其中nohup运行后输出的消息都输出到相应目录下的nohup.out文件。
如果想指定将信息输出到哪个文件,可以用:
nohup hass > xxx.out >2 &1 &
其中xxx.out是想要输出的文件名。
可以使homeassistant在后台运行。
注:可以使用命令:
ps -ef
查看后台所有进程
ps -ef |grep hass
可以查看hass进程的pid编号。假设进程pid为28678,可以用
kill 28678
强制结束进程。
五、米家设备接入homeassistant
目前已经运行起了home assistant系统,下一步就是将米家设备接入home assistant了。
home assistant里自带了一个能自动接入小米设备的插件,所以就省了我们一个一个地添加了。
要安装这个插件,需要安装hacs中的xiaomi miot auto或者xiaomi miio插件。在home assistant安装hacs。hacs可以是home assistant的一个社区商店,里面是很多个人开发的插件。这个需要使用home assistant的 supervisor功能安装,但是通过我们这种方式安装的supervisor属于core模式,没有supervisor功能,所以需要我们用稍微麻烦一点的方法安装。
1.安装xiaomi_miot
1.1通过hacs安装:
在https://github.com/hacs/integration/releases/tag/1.15.2网址,下载hacs.zip。解压后得到hacs文件夹。
要使用hacs,还需要一个GitHub账号,并且对hacs授权。
1.2直接用wget安装(然后跳过2、3)
wget -q -O - https://cdn.jsdelivr.net/gh/al-one/hass-xiaomi-miot/install.sh | HUB_DOMAIN=hub.fastgit.org bash -
参见:https://github.com/al-one/hass-xiaomi-miot
2.在home/homeassistant/.homeassistant文件夹中新建"custom_components"和"www"这2个文件夹。命令如下:
cd home/homeassistant/.homeassistant
mkdir custom_components
mkdir www
这样就创建了文件夹。
接着就是通过winscp(Windows系统)把下载的hacs文件夹复制到custom_components下面。假设我们把hacs文件夹复制到了/root/文件夹下,使用如下命令:
cp -r root/hacs home/homeassistant/.homeassistant/custom_components
这样就把hacs复制进去了,然后重启home assistant系统,就能在最左侧看到HACS了。
3.点击hacs,新增储备库,搜索xiaomi miot auto,注意后面一定要有个auto,新增了之后会提示重启,重启即可。
4.重启之前来到“配置” -“集成”,搜索xiaomi miot auto,安装之后就按照提示登录就可以了。
六、总结
坑1: ERROR: Failed building wheel for cryptography Failed to build cryptography ERROR: Could not build wheels for cryptography which use P EP 517 and cannot be installed directly
解决方法:
sudo apt-get install pep517 libffi-dev libssl-dev
坑2: http依赖安装出问题
解决方法:pip3 install aiohttp_cors
参考:https://www.hachina.io/03.非典型安装(高级用户)/安装HomeAssistant%20Core/
坑3:定时启动服务
在linux deploy里,内置了定时启动的服务,在/etc/文件夹下的cron.daily、cron.hourly、cron.monthly里面,把写好的脚本放进去。再用命令:
service cron start启动就可以了。
坑4:查找某进程的pid
pgrep - f hass
或者
ps -ef | grep hass
坑5:查找所有进程占用的端口
lsof -i:8123
坑6:以下命令可以查看磁盘各分区大小、已用空间等信息:
df -h
坑7:关闭唤醒锁。这个很重要。假如不关的话锁屏一段时间后安卓系统会自动限制后台运行,来达到省电的作用。怎么关呢?把系统的省电方案更改为均衡,并且关闭诸如休眠省电之类的选项。然后把Linux deploy在设置里让其保持后台运行。然后下载MT管理器,打开左侧菜单点击【终端模拟器】,然后下滑任务栏里开启唤醒锁即可。其实任何终端应该都有唤醒锁功能,开启就行啦。
专业垃圾佬
校验提示文案
秩序者
校验提示文案
通宵夜虫
校验提示文案
Hin_1st
校验提示文案
椽紘
找了很多地方都没有相关资料,请问楼主有碰到类似情况吗?
校验提示文案
值友2527749546
设定后可以跟小爱同学一样的效果。
校验提示文案
骑着驴去西藏
校验提示文案
Lam丶
校验提示文案
小布小朋友
校验提示文案
小布小朋友
校验提示文案
值友8104959280
校验提示文案
值友7439116533
求解惑2:为什么国内没有厂家把用户需要的软件集成进硬件盒子里直接出售?主要阻塞点是哪些?
校验提示文案
cccccno
校验提示文案
wuhaoquan
校验提示文案
值友5972407012
校验提示文案
值友5972407012
校验提示文案
roseybear
校验提示文案
roseybear
校验提示文案
值友5972407012
校验提示文案
值友5972407012
校验提示文案
wuhaoquan
校验提示文案
值友2527749546
设定后可以跟小爱同学一样的效果。
校验提示文案
cccccno
校验提示文案
值友7439116533
求解惑2:为什么国内没有厂家把用户需要的软件集成进硬件盒子里直接出售?主要阻塞点是哪些?
校验提示文案
秩序者
校验提示文案
椽紘
找了很多地方都没有相关资料,请问楼主有碰到类似情况吗?
校验提示文案
值友8104959280
校验提示文案
专业垃圾佬
校验提示文案
小布小朋友
校验提示文案
小布小朋友
校验提示文案
Hin_1st
校验提示文案
Lam丶
校验提示文案
通宵夜虫
校验提示文案
骑着驴去西藏
校验提示文案