智能家居折腾记 篇一:小米手机1通过armhf方式安装homeassistant

2018-12-15 11:49:00 285点赞 1948收藏 266评论

小编注:此篇文章来自#原创新人#活动,成功参与活动将获得额外100金币奖励。详细活动规则,请猛戳此链接

追加修改(2018-12-15 21:41:26):
我这篇文章有一个贴图错误,就是homeassistant括号那里,发了第一篇发现可能一下写的比较长,文字表达也不够清楚,后续我会拆成专题章节,多放图片,争取每一步的操作都有展示。这里向评论区的给位说声感谢。

题记:

        从2010年开始接触到第一台安卓智能机以来,自己的手机换了一茬又一茬。但是有一台小米1一直舍不得卖掉保留到现在。在2012年就是这台具有里程碑意义的一款手机,让我从此成为米粉。 这台手机没有前置摄像头,运行优酷看视频都困难,所以一直在我的抽屉里吃灰,有一次无意间看到一篇安卓智能机变树莓派的文章,参考里面的安装方式不成功继续找了其他的一些文章,安装过程中也积累了一些经验,今天把这些记录下来分享给大家。这台手机安装好homeassistant平台以后我会逐步完善家里的智能家具设备,让这个平台更好用。后续的更新也会随着折腾的深入记录下来。

      这里要感谢这两篇文章的作者,让我少走了许多的弯路。在这里也提醒有意折腾的朋友多查百度,多看其他人的文章,有些文章中可能因为命令行的排版或者系统版本的原因有和自己遇到的问题不一致的情况,就需要结合更多人的文章思考,我这里对小米手机1的安装过程做梳理。参考文章如下:

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

[基础教程] 怎么顺利安装Home Assistant,新手教程

       第一篇介绍的比较全面,包括deploy软件的安装,homekit,mqtt等安装。这里我只介绍homeassistant的安装部分,其他安装部分可以参考该文。另外一篇写的是armhf平台安装homeassistant的过程,解决了很多安装过程中的依赖错误。但是有些排版上的问题,有些安装步骤和我的系统也不太一样。

1.安装准备

1.1 具备以下条件可以尝试       

1.手机的安卓版本要在4.0以上并且有root权限,保证deploy能够安装。没有root权限的朋友可以去参考下termux安装homeassistant的方法,但是我卡在最后安装homeassistant那里,可能是新版的HA需要解决一些依赖问题,我没有弄好,这里就不做展开了。

2.我的手机处理器是armv7架构,属于armhf平台,更老的手机处理器请选择armel架构安装系统。操作系统推荐debian 9和ubuntu 18因为python3的版本比较高,能够满足目前homeassistant的安装需要。

1.2 Deploy设置

    设置过程请参看这篇文章↓

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

    我这里没有完全按照这篇文章的方法做,这里把自己的设置贴上来供大家参考。如果用我的方法没有弄好就请看看这篇文章,也许会有启发。

    首先,安装好deloy后需要给root权限,我不知道busybox安装能有什么用因为卸载掉了busybox好像也能正常运行,不过busybox本身不大,就留着吧。

    然后,进入软件,左上角的三根横线点开,进入settings设置参见截图。

deploy settingsdeploy settings

这里要注意把锁定屏幕常量,锁定wifi一直连接这些都打开,免得手机省电状态断网清理后台,然后在自己的清理后台的地方把deploy设置到白名单,不让后台清理,这样就能保证deploy一直运行了。

deploy settingsdeploy settings

其次,第一次运行deploy要更新下ENV也就是更新环境,如果换操作系统,在换之前也要先remove env移除环境,不然可能无法正常安装系统。不喜欢英文环境可以切换语言到中文。

    接下来要找到右下角的三横线带小竖线的这个图标打开系统安装部分的设置

Deploy system settingsDeploy system settings

    我之前按照教程选择了ubuntu 16.04版本,结果安装到homeassistant的时候提示python版本低于3.5.3,我自己编译安装了3.6以后环境又不知道咋设置了,弄的一时很狼狈,后来用ubuntu 18.04的时候因为依赖问题没有安装成功,最后在debian上折腾好了,其实ubuntu 18.04也是可以的,而且内置了python 3.6这对以后homeassistant的升级有很大帮助,这里推荐喜欢折腾的朋友选择ubuntu 18.04也就是bionic这个。安装源另外一篇教程换了中科大的,我这里几次没有安装成功,后来还是老实的用官方的源,虽然慢,不过成功率还是高一些的。一般来说第一次都没办法正常的装好,需要点停止后再安装一次,直到ssh那里装好了,显示deloy就行了。

Debian 9的设置Debian 9的设置

    我这里用的是debian 9,系统选项参考设置。我的处理器支持armhf,能选择hf的选一下,因为armel这种是不带硬件浮点运算的,可能性能上会差一些,但是我的处理器不支持64位,所以无法用arm64,如果是A53或者A73这种新的支持64位系统的处理器可以用arm64,这样安装依赖会简单很多,这里只针对armhf平台做说明。

yoyo    用户名密码建议改简单点,喜欢麻烦的可以保持默认。下面有一项INIT的勾选enable很简单这里就不做说明了,INIT里面保持默认设置就可以了。

    设置好之后点右上角的三个点,选安装,经过漫长的等待和不停的重装后系统终于装好了,这里看人品吧。我反正装了多次。小米手机1通过armhf方式安装homeassistant 

    装好以后点start,系统启动没有fail项就算成功了。局域网中找台电脑挂上putty或者Xshell去访问吧。

2. homeassistant安装过程

现在进入正题,debian和ubuntu的命令基本一样。以下部分ubuntu 18安装的朋友可以继续参考。

2.1 python安装环境的配置以及homeassistant安装

首先,激活debian并更新,我个人习惯用nano编辑器,所以再装个nano,如果喜欢vi编辑器的可以跳过这步。

sudo apt-get update

sudo apt-get upgrade

sudo apt-get install nano

然后,安装必要的依赖环境 -y的意思是直接点yes确认,免得每个包都来一遍。

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 -y

依赖安装可能比较慢,等待装好就可以了。

因为debian 9已经内置了python 3.5.3所以安装python这步就可以略过了。

接着要安装python3必要的依赖和PIP3

sudo apt-get install python3-pip python3-dev -y

新建用户和组

sudo adduser --system homeassistant

sudo addgroup homeassistant

sudo usermod -G dialout -a homeassistant

这里有一个两个教程都没有写的坑,就是homeassistant这个用户的sudo权限问题,教程的说法是在deploy里赋予root权限,但是我这里没成功。



小米手机1通过armhf方式安装homeassistant


小米手机1通过armhf方式安装homeassistant

这里我利用了visudo命令,意思是赋予某个用户sudo或者root权限,请按照文中涂黄的地方修改,这样在homeassistant的用户下就可以正常的使用sudo命令了。这里因为要用vi命令,可能有些新人不太了解怎么去编辑,首先进入文件后点键盘上的i键,这样就可以用方向键找到需要去改动的行,输入好对应的文字以后点键盘的esc键推出编辑。再输入:wq就可以保存退出了。

写到这里顺带把root和homeassitant的密码设置了,免得以后麻烦。输入:

sudo passwd root

出现Enter new unix password:

这时候设置,后面用winscp的时候需要用root账号登陆。同理,搞定homeassistant


小米手机1通过armhf方式安装homeassistant


然后要做的事情就是设置环境以及进入环境

sudo su -s /bin/bash homeassistant

virtualenv -p python3 /srv/homeassistant

这里注意python3后面有个空格再斜杠,不然这条命令过不去。

source /srv/homeassistant/bin/activate

如果环境部署好就和图上一样,我设置的用户名是abc。前面有(homeassistant)homeassistant就可以了。

小米手机1通过armhf方式安装homeassistant

在环境下安装HA,注意前面是(homeassistant)$ 复制后边的代码:

(homeassistant)$ pip3 install --upgrade pip

(homeassistant)$ pip3 install --upgrade setuptools

(homeassistant)$ pip3 install netdisco

(homeassistant)$ pip3 install --upgrade homeassistant

不出意外的话homeassistant就安装好了,在环境中输入hass启动。第一次启动时间很长,需要耐心等待。

小米手机1通过armhf方式安装homeassistant

见到路由器出来就差不多了,用浏览器访问你的deploy的ip地址:8123看下页面是不是已经出来了。出来后可以设置下用户名密码,看看主页,如果没问题就在putty上按ctrl+c退出命令行。至此,homeassistant安装完成。朋友们可以退出putty或者输入exit推出homeassitant用户,为后续设置开机启动做准备。

2.2 设置hass开机启动

因为deploy是一种chroot容器,与真正在计算机不太一样,无法用常规方式做开机启动,这也是我在一开始的设置里就说要勾选INIT enable的原因。

先参考项目文档,往下找找到python environment的脚本,备用。从文档中复制,自己创建文件后编辑。

sudo touch /etc/init.d/hass-daemon
sudo nano /etc/init.d/hass-daemon

需要修改 RUN_AS 和 PRE_EXEC 这两个值

RUN_AS="homeassistant"
PRE_EXEC="source /srv/homeassistant/bin/activate;"

保存配置文件之后接着执行下面的命令

sudo chmod +x /etc/init.d/hass-daemon
sudo update-rc.d hass-daemon defaults
sudo service hass-daemon install

最后可以手动尝试启动服务

sudo /etc/init.d/hass-daemon start

启动脚本中定义了日志输出,可以通过下面的命令查看日志

tail /var/opt/homeassistant/home-assistant.log

另外需要注意的是,官方文档中的启动脚本是指定了配置文件的路径的

CONFIG_DIR="/var/opt/homeassistant"

如果需要编辑配置文件需要到该目录下编辑。

当然也可以修改会默认的目录下面

CONFIG_DIR="/home/homeassistant/.homeassistant

如果,到这里hass能正常启动说明服务安装成功了,现在添加到开机启动项。

小米手机1通过armhf方式安装homeassistant

首先在设置里面确认INIT的设置是/etc/rc.local目录。

然后继续在putty中输入命令

sudo nano /etc/rc.local

这里字有点多,我把我的代码贴出来分享给大家。

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other value on error.

# In order to enable or disable this script just change the execution bits.

#

# By default this script does nothing.


sudo /etc/init.d/hass-daemon start

exit 0

然后ctrl+x保存退出就可以了。在手机的deploy软件下点停止再启动,看下rc.local是不是正常启动,过一会就能通过浏览器访问到homeassistant了。

一般用户到这里就可以结束了,对于喜欢折腾的朋友可以继续看,我要做微信访问和内网穿透访问以及远控手机。

3. MoloHub安装

MoloHub是一个可以让用户通过微信,google以及facebook访问到homeassistant的插件,这个插件可以穿透内网,不需要复杂的设置。

项目地址

进入后往下找到一键安装,把命令粘贴到putty下运行即可,如果提示找不到curl命令,那就通过sudo apt-get install curl安装一个。

正常情况下进入homeassistant会出现molo,点击之后会让你扫描二维码,用微信扫描关注后就可以访问了,非常简单。

小米手机1通过armhf方式安装homeassistant


4. 内网穿透安装以及开机启动设置

4.1花生壳内网版的安装及设置

内网穿透无非就花生壳,ngrok,frp几种大家可以根据自己的需要进行安装,我这里用的是花生壳。

首先在花生壳的官网登陆,注册一个免费域名,开通内网穿透需要花6块钱,价格不贵,相对稳定。花生壳会给你一个免费的域名,不要急着关网页,一会要需要回来设置。注册后会提示你关注花生壳的微信公众号,这里关注上,在微信客户端添加好自己的账号密码,绑定内网穿透要用。

然后再开个窗口,打开花生壳的网址,下载树莓派版本,目前最新版本3.0。

下载后的文件通过winscp拷贝到/home文件夹下待用。

putty输入命令

cd /home

ls

sudo dpkg -i phddns_rapi_3.0.2.armhf.deb

不出意外应该装好给出一个SN

进入网址b.oray.com

用这个SN登陆,默认密码是admin。登陆以后就会弹出一个二维码让你扫描绑定自己的账号,这里绑定上就行了。

回到最初注册花生壳的页面,

   

小米手机1通过armhf方式安装homeassistant

点击开通内网穿透的账号进入设置界面。

小米手机1通过armhf方式安装homeassistant

左侧找到内网穿透,添加映射,这里只能添加两个映射,我添加了SSH和hass,本地的IP地址是127.0.0.1。设置好以后就可以用了。

4.2 花生壳内网版开机启动以及定时启动

4.2.1 开机启动    

设置好以后总不能每次启动deploy都输入一次命令,为了偷懒我就打起了设置开机启动的主意。在花生壳树莓派安装的教程里面提到了可以通过phddns start/status/stop/restart的命令实现花生壳打开,查看状态,关闭,重启等功能。但是没说这个命令在哪,我在debian 9里面按照花生壳的教程没搞定,但是在/usr/sbin文件夹发现了这个文件,尝试输入./phddns start 能用,说明这个就是花生壳自己的服务端了,接下来就考虑怎么把这个东西设置成开机启动。

    前面已经设置过hass-daemon的开机启动,这里照猫画虎的来一次。

    首先把phddns拷贝到etc/init.d目录下,感觉命令行有困难的可以用wiscp    

    sudo cp /usr/sbin/phddns /etc/init.d

    然后查看文件是否已经复制好

    cd /etc/init.d

    ls

    接着给phddns赋予可执行权限

    sudo chmod +x /etc/init.d/phddns
    加入启动项

    sudo update-rc.d phddns defaults
    sudo service phddns install

    加入以后输入(注意/前面有个.) ./phddns start

    如果出现正常的连接提示就没问题了,然后在/etc/rc.local文件里添加启动项

#!/bin/sh -e

#

# rc.local

#

# This script is executed at the end of each multiuser runlevel.

# Make sure that the script will "exit 0" on success or any other value on error.

# In order to enable or disable this script just change the execution bits.

#

# By default this script does nothing.


sudo /etc/init.d/hass-daemon start

sudo /etc/init.d/phddns start

sudo /etc/init.d/cron

exit 0

这里添加了cron是为了后面定时任务方便,所以一起写了,这个命令已经在系统中带了,所以不用配置。

最后在deploy里面点关闭再启动下,看看b.oray.com的右上角图标有没有绿色的点出来,一般等会就有了。

4.2 定时重启

 花生壳虽然好,但是内网环境毕竟有点不稳定,所以定时重启花生壳让域名解析到地址是必要的,这里就用到了linux中著名的定时命令cron,这个命令在/etc/crontab中可以打开编辑器查看,里面有一些语法说明。

我在最后加了一行

*/10 *    * * *   root    /etc/init.d/phddns restart 

意思是平均每10分钟重启一次花生壳。这个大家不要太贪心设置成1分钟,一般设置成10分钟或者30分钟都是可以的,不然你输入命令或者在改文件的时候断线了可别赖我。重连的意思就是断开再连。crontab文件如下,仅供参考。

 /etc/crontab: system-wide crontab Unlike any other crontab you don't have

# to run the `crontab' command to install the new version when you edit

# this file and files in /etc/cron.d. These files also have username

# fields, that none of the other crontabs do.


SHELL=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin


# m h dom mon dow user  command

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )

52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

*/10 *    * * *   root    /etc/init.d/phddns restart

#

最后保存退出,deploy重启加载cron以后就能正常运行了。

5. 远程控制手机 

    添加这一行的目的是避免偶尔手机卡顿或者deploy出错需要重启,总不能自己跑回家就为了点一下吧。这个软件我也是偶然发现的,很好用推荐给大家。Air Droid,这个软件的用来管理手机文件的,不需要连接usb线缆,也不用在同一个网里面。本来我考虑过teamviewer,但是这个软件的quickconnect需要连接的时候在手机上点下确认,不适合我。软件很容易部署,跟着提示走就好了,在air mirror里面就可以远程控制手机了。

    末了还要提醒下,deploy和airdroid都要在手机里设置成开机运行,并且第一次连接的时候点确认给软件管理权。我还在手机里安装了重启软件,点下就能重启,但是我这个小米1(一定要装v5系统,v4不知道,2.3装不上deploy)最近重启后会有概率连不上wifi,所以我也就不敢随便重启了,想起来给清理下内存就好了。我已经在小米手机的网络管理禁用其他不必要联网的应用了,但是系统应用无法禁用,这个浏览器每天给我弹东西,看来小米植入广告也没有放过小米1这个老古董。我的截图是pc客户端,当然web页面也是可以的,这样就很方便随时查看手机的状态。

小米手机1通过armhf方式安装homeassistant

    到最后还是要做一件事,把本教程中提到的软件和配置文件贴个百度云上来,方便各位朋友。欢迎大家交流。后续我还会开homeasistant配置的坑,和大家一起交流(绿米的空调伴侣坑死我了,死活用不了)等我弄的七七八八了再开坑继续写,也欢迎各位群里的高人指点小弟。 

总结

    写这个用了我大概两天的时间,但是这个HA用下来的感觉可能还是不如原生的小米之家,他的优势是能把不同牌子的智能家居设备集成到一起,相互联动。可能是受限手机性能的原因,偶尔花生壳或者ssh会连不上,也就促成我折腾到目前这样的状态,之前的很多朋友写了不同的教程给我启发,但是找起来很分散很麻烦,我也怕自己久了会忘记现在怎么处理这些问题,所以写下来给大家分享,也算是备忘。后续我还会接着开HA的坑,喜欢的朋友麻烦关注我吧。

展开 收起
评论266

发表评论请 登录
  • 最新
  • 最热
评论举报

请选择举报理由

相关文章推荐

更多精彩文章
更多精彩文章
1.9K
扫一下,分享更方便,购买更轻松