追加修改(2018-12-15 21:41:26):
题记:
从2010年开始接触到第一台安卓智能机以来,自己的手机换了一茬又一茬。但是有一台小米1一直舍不得卖掉保留到现在。在2012年就是这台具有里程碑意义的一款手机,让我从此成为米粉。 这台手机没有前置摄像头,运行优酷看视频都困难,所以一直在我的抽屉里吃灰,有一次无意间看到一篇安卓智能机变树莓派的文章,参考里面的安装方式不成功继续找了其他的一些文章,安装过程中也积累了一些经验,今天把这些记录下来分享给大家。这台手机安装好homeassistant平台以后我会逐步完善家里的智能家具设备,让这个平台更好用。后续的更新也会随着折腾的深入记录下来。
没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢
[基础教程] 怎么顺利安装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 settings
deploy settings
其次,第一次运行deploy要更新下ENV也就是更新环境,如果换操作系统,在换之前也要先remove env移除环境,不然可能无法正常安装系统。不喜欢英文环境可以切换语言到中文。
接下来要找到右下角的三横线带小竖线的这个图标打开系统安装部分的设置
Deploy system settings
Debian 9的设置
我这里用的是debian 9,系统选项参考设置。我的处理器支持armhf,能选择hf的选一下,因为armel这种是不带硬件浮点运算的,可能性能上会差一些,但是我的处理器不支持64位,所以无法用arm64,如果是A53或者A73这种新的支持64位系统的处理器可以用arm64,这样安装依赖会简单很多,这里只针对armhf平台做说明。
yo
用户名密码建议改简单点,喜欢麻烦的可以保持默认。下面有一项INIT的勾选enable很简单这里就不做说明了,INIT里面保持默认设置就可以了。
设置好之后点右上角的三个点,选安装,经过漫长的等待和不停的重装后系统终于装好了,这里看人品吧。我反正装了多次。
装好以后点start,系统启动没有fail项就算成功了。局域网中找台电脑挂上putty或者Xshell去访问吧。
2. homeassistant安装过程
现在进入正题,debian和ubuntu的命令基本一样。以下部分ubuntu 18安装的朋友可以继续参考。
2.1 python安装环境的配置以及homeassistant安装
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权限,但是我这里没成功。
写到这里顺带把root和homeassitant的密码设置了,免得以后麻烦。输入:
sudo passwd root
出现Enter new unix password:
这时候设置,后面用winscp的时候需要用root账号登陆。同理,搞定homeassistant
然后要做的事情就是设置环境以及进入环境
sudo su -s /bin/bash homeassistant
virtualenv -p python3 /srv/homeassistant
source /srv/homeassistant/bin/activate
如果环境部署好就和图上一样,我设置的用户名是abc。前面有(homeassistant)homeassistant就可以了。
(homeassistant)$ pip3 install --upgrade pip
(homeassistant)$ pip3 install --upgrade setuptools
(homeassistant)$ pip3 install netdisco
(homeassistant)$ pip3 install --upgrade homeassistant
不出意外的话homeassistant就安装好了,在环境中输入hass启动。第一次启动时间很长,需要耐心等待。
2.2 设置hass开机启动
因为deploy是一种chroot容器,与真正在计算机不太一样,无法用常规方式做开机启动,这也是我在一开始的设置里就说要勾选INIT enable的原因。
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能正常启动说明服务安装成功了,现在添加到开机启动项。
首先在设置里面确认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的插件,这个插件可以穿透内网,不需要复杂的设置。
4. 内网穿透安装以及开机启动设置
4.1花生壳内网版的安装及设置
内网穿透无非就花生壳,ngrok,frp几种大家可以根据自己的需要进行安装,我这里用的是花生壳。
然后再开个窗口,打开花生壳的网址,下载树莓派版本,目前最新版本3.0。
下载后的文件通过winscp拷贝到/home文件夹下待用。
putty输入命令
cd /home
ls
sudo dpkg -i phddns_rapi_3.0.2.armhf.deb
不出意外应该装好给出一个SN
进入网址b.oray.com
用这个SN登陆,默认密码是admin。登陆以后就会弹出一个二维码让你扫描绑定自己的账号,这里绑定上就行了。
点击开通内网穿透的账号进入设置界面。
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
#!/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 定时重启
我在最后加了一行
*/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和airdroid都要在手机里设置成开机运行,并且第一次连接的时候点确认给软件管理权。我还在手机里安装了重启软件,点下就能重启,但是我这个小米1(一定要装v5系统,v4不知道,2.3装不上deploy)最近重启后会有概率连不上wifi,所以我也就不敢随便重启了,想起来给清理下内存就好了。我已经在小米手机的网络管理禁用其他不必要联网的应用了,但是系统应用无法禁用,这个浏览器每天给我弹东西,看来小米植入广告也没有放过小米1这个老古董。我的截图是pc客户端,当然web页面也是可以的,这样就很方便随时查看手机的状态。
到最后还是要做一件事,把本教程中提到的软件和配置文件贴个百度云上来,方便各位朋友。欢迎大家交流。后续我还会开homeasistant配置的坑,和大家一起交流(绿米的空调伴侣坑死我了,死活用不了)等我弄的七七八八了再开坑继续写,也欢迎各位群里的高人指点小弟。
总结