分享

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

 HDTV 2017-08-25

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

起因

在大妈上闲逛,看到这个智能家庭的文章。虽然租住的小地方里一件智能家居设备都没有没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢,不过看了下感兴趣的人还是挺多的。

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢树莓派打造家庭中枢教程(完整版)追加修改(2017-05-0123:38:35):实话讲,不知道按着教程实操的人有多少,但是我还是尽量完善、更新这份教程。首先,Hassbian系统自带了Home-assistant,因此请使用Hassbian系统的值友跳过3.1,直接前往3.1.1。其次,3.1.1步骤如果执行失败,可以手动安装。武没娘和狄胖胖| 201 评论137 收藏1k查看详情

首先声明,本文并不能教会一个小白如何安装使用 HomeAssistant,内容方面也仅仅是如何在安卓设备上安装,没有详细的配置方法。选择 DIY 就要有足够的技能和细心来解决问题,吐槽难度的话,大可鼠标右上角点 x,然后掏钱买买买就行了。

虽然手上有树莓派,不过考虑到很多有兴趣的值友手上是没有的,所以弄个利用闲置安卓设备的解决方法分享出来。本篇涉及的命令还是比较多的,不过按照步骤一步一步来应该没有问题。

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

准备工作

条件是必须已经 root,手机,平板,安卓盒子都是可行的。不过考虑到运行内存的问题,最好是单独运行,不要兼用其他用途。

我使用的设备是刷了 LineageOS 14 的 ZUK Z2,但基本只要 Linux Deploy 支持都是可以的。Linux Deploy 对硬件的要求是最小 512MB 运行内存,推荐 1GB。

另外,由于Linux Deploy 实现功能的方式,不当操作可能会损坏手机本身系统,造成无法正常进入系统,可能需要重新刷机才能正常工作,所以一定要做好好重新刷机的准备。

推荐刷成 CM,LineageOS,魔趣等原生系统 ROM,如果使用原厂 ROM 最好重置一下出厂设置,避免运存不足杀死关键进程造成不稳定。如果 ROM 里面有各种清理内存或省电的功能,请设置好白名单,避免 Linux Deploy 被杀掉进程。

供电方面,只要不是比较老的设备,电源供电足够的话是不会经过电池的,所以这方面还是可以放心的。

理论上x86的安卓设备也行,不过手头上并没有设备可以测试,所以不保证按本教程操作可以正常运行,还请见谅。

首先需要需要下载以下两个 APP :

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢
部署Linux系统:Linux Deploy(ru.meefik.linuxdeploy)_2.0.2_Android应用_酷安网部署Linux系统:Linux Deploy(ru.meefik.linuxdeploy) 2.0.2:部署Linux系统是个在安卓上安装其他Linux发行版的工具,对于喜欢折腾的酷友来说这自然又是一个不可多得的好物。需要注意有时候有的稍微冷门一点的发行版可能没有国内的镜像,安装起来会耗费更多的时间去看看
没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢
BusyBox installer(ru.meefik.busybox)_1.26.2_Android应用_酷安网BusyBox installer(ru.meefik.busybox) 1.26.2:BusyBox installer酷友说是很好,漂亮稳定,需要busybox的可以试试,咱一般的用户貌似都用不上这个。去看看

基本环境

Linux  Deploy 使用了类似容器的技术,可以在安卓设备上运行 linux 发行版,比如:Ubuntu、Debian。不过由于内核还是要看宿主设备的内核,所以有些应用如果需要最新内核就没法用了(比如 Docker),Android 7.1.1 使用的 Linux 内核还是 3.18 版本。

HomeAssistant 是基于 Python 开发的,而 Homebridge 是基于Nodejs,两者都是可以跨平台运行的。所以只需要先使用 Linux Deploy 安装好 Linux ,然后再安装它们就能解决掉问题了没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

本文还附带了修改安装源来提高安装速度的方法,在树莓派上安装慢的问题也可以用一样的方法解决,希望能帮助有兴趣的同学。

安装 BusyBox

这里也可以选择自己喜欢的 BusyBox,没有特别要求。安装好BusyBox 之后需要打开 APP,再点击一下 Install 安装,安装路径默认为 /system/xbin 即可。

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

然后在 Linux  Deploy 的 设置 中点击一下 更新环境, 这样准备工作就完成了。

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

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

如何确认环境是否满足条件?

这里需要确定 su 是可用的,由于需要准备刷机,所以 adb 肯定是有的,而且驱动也是安装好的。至于 adb 和 驱动问题请自行解决,如果这些都解决不了的话建议还是别继续了,因为后面的更复杂没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

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

按图所示,如果最后执行 su 命令之后命令行那里变成 # 就说明满足继续的条件了,如果报错,请自行百度解决,毕竟怎么刷机这个估计都可以单独写一篇了没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢。 

安装 Linux Deploy

首先必须给 Root 权限,而且已经安装了 BusyBox。对于 Android 6.0以上的设备,需要在应用权限设置中给 Linux Deploy 访问存储设备的权限。

打开 Linux Deploy  后就会有个默认配置,这里需要修改一下配置。点击右下角那个看起来像下载的按钮没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

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

首先是发行版,这里为了后面省事将默认的 Debian 改为 Ubuntu。(Debian 的 Python 版本过低,HomeAssistant 使用了异步库需要 Python3.5+才支持。)

架构默认就行,也可以像我这样改成 arm64。这个需要根据实际设备来设置,建议默认即可(再次重申——手头没有x86的安卓设备测试)。

源地址可以修改为国内镜像源,这里我用了中科大的源。

https://mirrors.ustc.edu.cn/ubuntu-ports/

往下的需要注意的是用户名和密码,默认即可,后面如果忘记用户和密码还可以来这里查看。

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

勾选 "允许 SSH 服务器启动"。

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

设置完成之后回到主界面,点击右上角的三个点,选择 安装,剩下的就是等待了。

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

如果一切顺利,可以看到 <<< deploy 字样,说明镜像已经构建完成了。这个时间会稍久一些,大概10-30分钟。

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

点击 启动 按钮,看到 <<< start 字样就说明 OK 了。如果 Starting extra/ssh 那里有 找不到 su 命令的字样,请先回到上面的 BusyBox 安装部分,更新一下 环境设置,用 adb 测试一下 su 是否存在。

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

剩下的操作就需要用到终端了,虽然也可以安装一个 APP 解决,不过还是建议在电脑上操作,复制粘贴命令比较方便。没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢 

终端软件

Windows 上的话我用的是 XShell 和 XFtp,对于家庭和学校授权是免费的。另外推荐安装一个文本编辑器 Notepad++,因为 Windows 上的默认文件编码与 Linux 不同,如果使用自带的记事本很可能会造成 Linux 下识别不正常。以上软件的下载地址请自行搜索,或者使用熟悉的工具替代。

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

链接的地址在 Linux Deploy 上有显示,就是顶端显示的 IP。这里接受保存密钥继续,然后就是用属性里面的用户名和密码登陆就可以了,如果忘记的话,就在 App 上查看一下。

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

使用 XFTP 可以直接管理文件,不过链接地址那里需要指明一下协议 sftp,完整示例:

sftp://192.168.8.59

连接成功之后就对有权限的文件就可以直接编辑了。

其他

这里提供一下三个配置文件,可以使用 SFTP 上传到 /home/android 目录,方便后面使用

https://pan.baidu.com/s/1slVplDF

由于发行版默认没有安装 nano 所以需要手动安装一下

sudo apt-get install nano

nano 的基本操作就是 Ctrl+O 是保存,会提示是否写入,回车确认即可,Ctrl+X 是退出

HomeAssistant

运行环境

前面说过需要安装的 Python3 已经自带了,版本是 3.5.1,可以输入下面的命令查看版本

python3 -V

需要安装一下Python 的包管理器

sudo apt-get install -y python3-pip

这里为了解决安装慢的问题,需要修改一下 Python 包管理器(pip)的安装源

sudo mkdir /root/.pip

sudo sh -c "echo '[global]nindex-url = https://mirrors.ustc.edu.cn/pypi/web/simple/' > /root/.pip/pip.conf"

更新一下 pip 试试安装速度

sudo pip3 install -U pip

安装需要用到的 python 虚拟环境工具

sudo pip3 install virtualenv

安装 HomeAssistant

首先要添加一个用户

sudo useradd -rm homeassistant

在 /srv 目录下面添加 python 运行环境,

sudo mkdir /srv/homeassistant
sudo chown homeassistant:homeassistant /srv/homeassistant

之前修改过的 pip 安装源是针对 root 用户的,由于要使用 homeassistant 这个用户运行,而首次运行过程中又需要安装一些 python 包,所以这里还得来一次。

sudo mkdir /home/homeassistant/.pip
sudo sh -c "echo '[global]nindex-url = https://mirrors.ustc.edu.cn/pypi/web/simple/' > /home/homeassistant/.pip/pip.conf"

需要把新建的文件权限给 homeassistant 用户

sudo chown -R homeassistant:homeassistant /home/homeassistant/.pip

然后切换到新建的用户

sudo su -s /bin/bash homeassistant

创建 Python 虚拟运行环境并切换

virtualenv -p python3 /srv/homeassistant
source ./homeassistant/bin/activate

成功的话终端命令行应该会显示为:

(homeassistant) homeassistant@localhost:/$

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

pip3 install -U homeassistant

启动 homeassistant 之前还需要在 Linux Deploy 上设置一下,否则会因为用户没有网络访权限而启动失败。
在配置中 Privileged users 里添加 homeassistant,需要用空格和默认的 root 隔开(英文半角空格)

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

然后到主界面的右上角菜单里点击一下配置,等待完成后就可以继续了。

尝试启动 homeassistant,需要注意的是启动过程中其实也有安装一些 Python 包,所以需要等一下才可以.

hass

在终端中看到:

INFO:homeassistant.bootstrap:Home Assistant initialized in 108.88s


表示启动成功,然后就可以在浏览器中打开 https://ip_address:8123 来看看成果了

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

按 Ctrl+C 退出 homeassistant,方便下面的操作。

这里启动只是为了看一下是否能正常运行,配置好开机运行之后再进行 homeassistant 的配置。

开机运行

注意:如果是接着上面操作,请先用 exit 命令退出 homeassistant 用户

由于 Linux Deploy 运行的方式无法使用 systemctl 的方式来做开机运行。只能使用 init.d 脚本的方式添加。

先参考项目文档 https:///docs/autostart/init.d/ 添加好启动脚本。

或者直接下载我提供的配置文件 hass-daemon (注意,没有后缀,可以用 Notepad++ 打开编辑。)

如果是使用我提供的文件

sudo cp /home/android/hass-daemon /etc/init.d/hass-daemon

如果是从文档中复制的话,则需要自己创建文件后编辑

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

接着需要在 Linux Deploy 中设置一下,点击右下角那个像下载图标的按钮。

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

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

启用 INIT 下的自定义脚本执行,然后确认 Init setting 里的 init path 是 /etc/rc.local

接着在终端中编辑这个文件

sudo nano /etc/rc.local

在 exit 0  上面添加一行

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

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

这样镜像启动时就会启动 homeassistant 了。

由于手上没有任何智能家居设备,所以后续就没法测试了没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

理论上讲是可行的,当然如果有好心人捐赠个灯泡什么的给我测试就最好不过了没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

Homebridge 

运行环境

默认是没有安装 curl 的,手动安装一下

sudo apt-get install -y curl

使用官方脚本先添加好安装源

curl -sL https://deb./setup_7.x | sudo -E bash -

修改安装源

sudo nano /etc/apt/sources.list.d/nodesource.list

这次用的是清华大学的 NodeSource 源。这里需要注意,如果是树莓派,请不要修改 xenial main 这段,保留原来的值。

deb https://mirrors.tuna./nodesource/deb_7.x xenial main
deb-src https://mirrors.tuna./nodesource/deb_7.x xenial main

安装 nodejs

sudo apt-get update
sudo apt-get install -y nodejs

然后是几个编译用到的依赖包

sudo apt-get install -y python git libavahi-compat-libdnssd-dev

npm 安装一样是慢如蜗牛。也可以通过修改源来解决。老是撸大学的羊毛不好意思没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢 ,这次换成阿里爸爸的。

sudo npm install -g --unsafe-perm homebridge --registry=https://registry.npm.

我这里是可以直接安装 HomeBridge 的,如果安装失败的话,就按原贴的步骤操作一下,应该也能解决。

继续安装那个打通 HomeAssistant 的插件

sudo npm install -g homebridge-homeassistant --registry=https://registry.npm.

在运行 HomeBridge 之前还需要解决一个问题,简单来说就是由于 Linux Deploy 的运行方式,有个依赖的服务无法正常启动,会造成 HomeBridge 无法启动没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢 。

编辑一下这个服务的配置文件

sudo nano /etc/avahi/avahi-daemon.conf

需要将 publish 中的所有参数都注释掉,在对应的配置项之前加 # 号即可(.....表示省略的内容,实际是没有的)。

......
[publish]
#disable-publishing=yes
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
#publish-hinfo=no
#publish-workstation=no
#publish-domain=yes
#publish-dns-servers=192.168.50.1, 192.168.50.2
#publish-resolv-conf-dns-servers=yes
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no
......

然后需要修改服务的启动参数

sudo nano /etc/init.d/avahi-daemon

找到启动服务的地方 d_start() 这一段,在 $DAEMON 后面添加上 --no-drop-root 参数

d_start() {
   $DAEMON --no-drop-root -c && return 0

   if [ -e $DISABLE_TAG -a "$AVAHI_DAEMON_DETECT_LOCAL" != "0" ]; then
       # Disabled because of the existance of an unicast .local domain
       log_warning_msg "avahi-daemon disabled because there is a unicast .local domain"
       exit 0;
   fi;

   $DAEMON --no-drop-root -D
}

这里首先试试手动启动相关服务

sudo /etc/init.d/dbus start
sudo /etc/init.d/avahi-daemon start

两个服务都启动成功的话,就可以尝试手动启动 HomeBridge 了

Homebridge is running on port 51826.

如果看到上面的字样就表示 HomeBridge 在运行了,可以到 ios 家庭应用中查看是否能找到了。

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

同样的,由于手上没有任何智能家居设备,所以后面的功能无法测试没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

开机启动

仍然只能以 init.d 脚本的方式启动,而且这次需要先启动两个依赖的服务没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

跟 HomeAssistant 一样,需要在 Privileged users 中添加 homebridge,然后重新配置。

同样参考项目文档 https://github.com/nfarina/homebridge/wiki/Homebridge-autostart-at-boot-(init.d)-on-Ubuntu-(linux)

这次就不详细说明命令了,可以参考上面 HomeAssistant 中的说明,基本上意思差不多。

sudo useradd -r homebridge
sudo mkdir /var/opt/homebridge
sudo cp -R ~/.homebridge/* /var/opt/homebridge
sudo chown -R homebridge:homebridge /var/opt/homebridge
sudo chmod -R +x /var/opt/homebridge
sudo cp ~/homebridge /etc/init.d/homebridge
sudo chmod +x /etc/init.d/homebridge
sudo update-rc.d homebridge defaults

然后尝试手动启动 homebridge

sudo /etc/init.d/dbus start
sudo /etc/init.d/avahi-daemon start
sudo /etc/init.d/homebridge start

通过查看运行日志可以知道运行的情况

tail /var/log/homebridge.log
tail /var/log/homebridge.err

同样的,服务文件也指定了配置文件的路径,配置需要到在 /var/opt/homebridge 中修改。

修改完配置需要重启 homebridge 生效

sudo /etc/init.d/homebridge restart

需要再次编辑 /etc/rc.local 文件添加启动命令,最终的文件内容如下(.....表示省略的内容,实际是没有的)

......
sudo /etc/init.d/hass-daemon start
sudo /etc/init.d/dbus start
sudo /etc/init.d/avahi-daemon start
sudo /etc/init.d/homebridge start
exit 0

其他

查看 MAC 地址

直接用命令就可以看了

ifconfig

应该是 wlan0 网卡的 MAC 地址,就是HWaddr 后面那一段

wlan0     Link encap:Ethernet  HWaddr d8:9a:34:0d:89:95

要注意,在配置文件中填写时字母部分必须是大写。

MQTT

说实话,看不明白这个 MQTT 安装的目的是什么没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢,不过看了下安装脚本,应该是有用的没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

这里使用包管理器直接安装,版本是 1.4.8 与脚本中的 1.4.11 很接近应该没有什么问题。

sudo apt-get install -y mosquitto mosquitto-clients

安装好之后就是配置

cd /etc/mosquitto
sudo cp /home/android/mosquitto.conf /etc/mosquitto/mosquitto.conf
sudo chown mosquitto:mosquitto mosquitto.conf
sudo touch pwfile
sudo mosquitto_passwd -b pwfile "pi" "raspberry"
sudo chown mosquitto:mosquitto pwfile
sudo chmod 0600 pwfile
sudo /etc/init.d/mosquitto restart

配置文件、账号和密码使用了树莓派安装脚本的方式,另外 MQTT 应该是没有随镜像启动的,照着前面的方式到 rc.local 中添加就可以了。

SMB

从引用的几个教程并没有提到必须安装共享功能,原帖里也仅仅是用来修改配置文件。由于上传修改文件可以使用 XFtp 来解决,所以这里就省去了。
如果确实要安装的话步骤是和原帖一致的,唯一需要注意的就是启动服务要用 /etc/init.d 中的脚本启动。看大家反馈情况,如果确实是必须安装的话,就后续补充起来。(不排除挖坑不填没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢 )

FAQ

Q:为啥不安装 KODI?
A:运行内存不足的时候系统会自动杀后台,如果 Linux Deploy 被杀掉就都挂了。而且 KODI 有 android 版本,直接下载 apk 安装就是了,没必要自己手动安装.。

没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢
Kodi(原XBMC)(org.xbmc.kodi)_17.1_Android应用_酷安网Kodi(原XBMC)(org.xbmc.kodi) 17.1:小编一直不明白为啥有这么好烧包的播放器,看两个毛片也不至于啊,一般的播放器都看的清楚,也有声音,这XBMC小编之前是真没怎么接触过,看样子是个狠货,而且这体积够大,看样子解码器很强大。去看看

Q:你这贴没讲怎么设置啊?而且没看到你有什么灯,传感器之类的,是不是来骗积分的啊?
A:讲道理基于 TCP/IP 协议的话应该是都没问题的。至于其他外部设备购买的话投入比较大,加上我自己本身并没这方面的需求,所以懒得弄没有树莓派?没关系,手机也行!闲置安卓设备打造智能家庭中枢

Q:稳定性怎么样?
A:稳定性还是取决与设备本身的稳定性,目前看,除了因为操作配置不当引起直接手机挂掉之外,没有遇到正常运行中出现问题的情况。不过以上仅代表我手上的机器以及系统的情况,总的来说还是推荐刷成 CM 之类的原生 ROM。

Q:还能干嘛?
A:由于基本上就是一台运行 Linux 的服务器,抛开内核版本限制,软件方面基本上树莓派这些能做的都能做到。不过树莓派的优势在于 GPIO,这点无法替代,虽然手机的感应器也是能被识别的,不过继续折腾需要有 Linux 的技术能力。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多