小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

2021-11-17 16:32:52 23点赞 210收藏 20评论

0 前言

iPhone也用了好久了,家里的米家设备比较多,一直只能通过米家app来操作。这些天看到可以通过homeassistant实现将米家设备接入苹果homekit,并且支持siri,功能很全,所以就准备折腾一番。

网上很多教程都是很久之前的了,有些也过时了,所以这次重新整理记录一下折腾的步骤,帮助一样遇到困难的朋友。

1 准备工作

准备一台可以root的安卓手机,我用的是索尼Xperia Z Premium,我,这是我2016年发疯,花了5000多块钱买的手机,现在闲鱼二手只要三四百块钱,高通骁龙835处理器,非常容易root,刷上原来机锋论坛马大的固件包,除了玩游戏,其他都能用途,现在真是性价比之王啊。(边框掉漆了)

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

2 安装linux

手机要先root,然后安装busybox(酷安有)以及linux deploy(我从github下载的原版)。

1.打开deploy之后,先点击右下角的配置

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

发行版GNU/Linux选择debian;架构选择arm64;发行版本选择buster;用户名和用户密码自行设置,简单一些;初始化选择启用;ssh选择启用;源改为:https://mirrors.163.com/debian;空间大一点设置成8192MB。

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

2.之后点击左上角,选择“设置”,关闭“屏幕常亮”,钩选锁定wifi和CPU唤醒;在“环境”一栏点击“更新环境”,更新一下deploy运行的环境。

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

3.点击右上角,选择“安装”,之后就是耐心等待,安装完成之后会显示"<<deploy",之后点击右上角的“配置”。

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

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设置运行环境,运行好之后应该会如下图所示。

小白从零开始:一台安卓手机安装homeassistant将米家设备接入苹果homekit

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(默认端口),如:

http://192.168.50.149: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管理器,打开左侧菜单点击【终端模拟器】,然后下滑任务栏里开启唤醒锁即可。其实任何终端应该都有唤醒锁功能,开启就行啦。

展开 收起
20评论

  • 精彩
  • 最新
  • 一直要输入密码,又没设置过[sudo] password for homeassistant:

    校验提示文案

    提交
  • 设定root用户的密码,我刚设置的密码在建立文件夹时密码就不对了

    校验提示文案

    提交
  • 安装完这个之后安卓手机需要常驻在家里吧。。我希望是能走nas里透过homeassistant服务来实现siri控制米家。

    校验提示文案

    提交
  • 算了我还是花点钱吧

    校验提示文案

    提交
  • 楼主你好,我用华为P9 root后进行安装,但是在putty SSH登录手机,一直在让我输入 password,输入linux Deploy上设置的密码后,显示ACCESS DENIED。
    找了很多地方都没有相关资料,请问楼主有碰到类似情况吗?

    校验提示文案

    提交
  • 如果只是为了siri手动控制设备,直接米家app里设定手动场景添加到siri就行了。
    设定后可以跟小爱同学一样的效果。

    校验提示文案

    提交
  • 先收藏了,有大佬出来评论了,我再来看看

    校验提示文案

    提交
  • 怎么做到8g镜像的?

    校验提示文案

    提交
  • 在吗作者我在最后安装hass.的时候报错pip3 install --upgrade homeassistant

    校验提示文案

    提交
    同样的问题

    校验提示文案

    提交
    看看执行完source /srv/homeassistant/bin/activate后,前缀是不是
    (homeassistant) root@localhost

    校验提示文案

    提交
    收起所有回复
  • @站立的家巧 作者在不

    校验提示文案

    提交
  • 楼主你好,报错Failed building wheel for ruamel.yaml怎么解决

    校验提示文案

    提交
  • 求解惑1:HA接入的各品牌商的插件,比如米家,是否涉及逆向工程侵犯品牌商知识产权?[思考]
    求解惑2:为什么国内没有厂家把用户需要的软件集成进硬件盒子里直接出售?主要阻塞点是哪些?

    校验提示文案

    提交
    1不是米家的逆向工程,是抓包得到cookie,然后就能连接米家设备。2.tb有成套出售的hass盒子

    校验提示文案

    提交
    收起所有回复
  • 小白收藏先

    校验提示文案

    提交
  • 怎么装supervisor 我搞了半天没装上nodered

    校验提示文案

    提交
  • 你好,请问手机一直显示ssh 打开失败怎么处理呀

    校验提示文案

    提交
  • @站立的家巧 我linux哪里启动一直都没用。【12:14:521 1: Extracting 11bsemanage1.. 【12:14:521 1: 【12:14:531 I: Extracting 11bpam0g. 112:14:531 I: Extracting 11bpcre3 . . 112:14:531 1: Extracting per1-base. [12:14:54] I: Extracting sed ..• 【12:14:541 I: Extracting 1ogin. 【12:14:551 I: Extracting passwd.• . 【12:14:55] I: Extracting 11bsystendo。 112:14:551 1: Extracting 11budev1•• • 112:14:561 I: Extracting sysvinit-ut11s... 【12:14:561 I: Extracting tar• 【12:14:56] I: Extracting tzdata.•. [12:14:571 I: Extracting libsmartcols1. 【12:14:571 I: Extracting 1ibuuid1.•• 【12:14:571 1: Extracting mount. . . 112:14:571 1: Extracting ut11-1inux.•• [12:14:58] I: Extracting zlib1g... 【12:14:581 ## core/emulator : doinstall && do_configure 【12:14:581 ## core/ mnt : do_instal1 && do_configure [12:14:58] : Configuring core/mnt.. (12:14:59) in core/net : do install añ do configure [12:14:59] :: Configuring core/net [12:14:59] chroot: can't execute "/debootstrap/ debootstrap': No such file or directory [12:14:591

    校验提示文案

    提交
  • 很厉害啊,正想体验一下

    校验提示文案

    提交
提示信息

取消
确认
评论举报

相关文章推荐

更多精彩文章
更多精彩文章
相关好价
最新文章 热门文章
210
扫一下,分享更方便,购买更轻松