关于 HomeKit 和智能家居,早在 iOS 8 的时候 Apple 就力图去打造一个非常非常洗脑的生态。而今来看,联合各大知名的硬件厂商,和智能家居品牌,Apple 这一步棋下的可以说是很成功了。
但是,打开 Apple Store 之后,你会发现 Apple 所提供的智能设备似乎有一部分不是自己想要的,或是价格上远高于自己的预算的。所以,大部分人都把目光投向了号称“啥都要做”的小米。但是 Apple 有严格的认证协议和条件,除了使用难用的小米 App 之外就没有办法了吗???并不,大部分机智的 Coder 早就做过了 HomeKit 的逆向工程。而之前少数派也曾发表过「通过树莓派,将小米智能家居和 HomeKit 连接起来」。
不过,可能你手头没有树莓派,那也没关系,只要一台旧电脑或安卓手机,你也能把 HomeKit 和小米智能套装连接起来。
关于小米智能套装
我所购买的是米家智能家庭礼品装。内含:
米家多功能网关 x 1
米家智能插座(Zigbee 版)x 1
米家无线开关 x 1
米家人体传感器 x 1
米家门窗传感器 x 1
随附配件若干(背贴胶,按键针,说明书/三包凭证)
之所以选择礼品装的原因是,我个人认为礼品装包含的物件基本上是基础所需的,比单买要合适而且方便。
当然,除此之外,在小米商城里还有其他不同种类不同功能的智能家居,比如烟雾报警器,温湿度传感器等等。这里也不一一介绍了,可以按照自己的所需去购买。但是请注意一下,智能网关是必须的。
连接 HomeKit
方法 1
方法 1 是使用一台不关机的的电脑,Linux, Mac, Windows 都可以搭建 HomeBridge. 鉴于我身边只有 macOS 使用,所以接下来所说的都是关于 macOS 的教程。
首先,安装 Xcode
MAS 里可以下载到最新的版的 Xcode
Node.js
Node.js 这里有 Windows 版,macOS 版,还有 Source Code 提供下载。网站应该没有被墙,下载安装即可。
注:必须安装 Node.js 不然会出现下面步骤无法进行的情况。
安装 Homebridge
你需要打开 Mac 上的终端,找不到的话可以通过聚焦搜索输入终端打开。
打开后在里面输入 sudo npm -g install homebridge
在终端滚动很久很久很久之后,当你的终端显示如图的时候,就已经安装完毕了。
接下来去 App Store 下载米家 App
在应用里可以选择添加已有的配件
然后请点击智能网关 —— 右上角的三个白色点 —— 关于
疯狂点击白色空白区域,直到出现新的信息。
这时候我们需要点击局域网通信协议并且将其刷新打开刷新密码。这个是后续要用的 Sid
然后退回上一级菜单,点击网关信息,在密密麻麻的文字里面找到 mac 字样没你会发现后面有相关网关地址。记住这个,建议将其复制下来在其他应用(去掉 (:) 符号并且修改为小写) 。这个是后续要用的 Password
然后我们将会创建一个新的配置文件,可以选择复制到终端。请别忘记修改“Username”为自己的电脑用户名。
cd ~mkdir .homebridgenano .homebridge/config.json
分段输入,分段输入,分段输入
之后我们需要配置 json 文件
你可以选择复制下方代码到终端中
{"bridge": {"name": "Homebridge","username": "CC:22:3D:E3:CE:30","port": 51826,"pin": "123-45-678"}, "platforms": [{"platform": "AqaraPlatform","sid": [“d2016dd68ad14043”],"password": ["7811dcb35e17"]}]}
在这段代码里面,name 可以自定义修改;username 建议不要随便修改;port 可以自定义修改,只要不被占用就好了;pin 可以自定义修改,格式需要保存为 xxx-xx-xxx;sid 是前文提到的局域网通讯协议,password 则是网关信息。
复制完成后可以输入 Command + O 保存,然后输入 Command + X 退出编辑模式回到终端窗口。
接下来我们运行 HomeBridge
继续在终端输入(分段输入)
cdhomebridge
当你看到如下图的二维码或者是数字出现,意味着运行成功。(数字是你在 json 文件里设置的密码)
你可选择使用 Home App 里面的添加配件扫描二维码或者是添加数字。
然后你可以在 Home 里添加网关和其他配件,并且愉快地使用了。
注:当然你可能会遇到不同的错误出现。下面是会遇到的一些问题。
Q: 终端安装 Homebridge 出现循环代码错误怎么办?
A: 如果你是 macOS High Sierra 用户,使用 sudo npm -g install homebridge
安装会出现下图的错误。所以请更换输入 sudo npm -g install homebridge --unsafe-perm
进行安装。
Q: 运行 HomeBridge 出错怎么办?
A: 检查配置文件里面的 Pin 文件是否有错,检查(网关 mac )和(局域网协议密码(重点留意)),直到成功后会跳出小方框,其实就是刚才配置 config.json 里面的 pin 文件数字。
Q: Home 显示配件已添加,需要重置,怎么办?
A: 在 config.json 文件里修改 username 和 pin 文件后再走一遍。
还有一个问题是我遇到还没有解决的,是关于配件 No Password For Getway 的问题,如果有解决方案,请在评论提醒我,谢谢啦。
方法 2
方法 2 是使用一台闲置的 Android 设备来作为智能家居中枢。所需设备:1. 已 root 的 Android 设备,一台电脑,小米多功能网关。
需要下载的软件有:Linux Deploy, BusyBox (Android) ;Xshell, Xftp, Termius, VNC Viewer ( PC/Mac/Chrome Store ) 注:可用其他软件代替
注:Android 推荐使用 Lineage OS 或者其他原生系统 ROM, 也请避免运存不足后台被杀,如果有设置自动清理或者超级省电功能的,请设置白名单,避免被杀。
首先,需要安装 BusyBox
非常简单,点击“安装”之后,即可完成。
第二,配置 Linux Deploy
打开软件,然后点击屏幕左上角,打开菜单栏 —— 设置 —— 更新环境
第三,安装 Linux Deploy
Root 权限是必要的,而且第一步的 BusyBox 也不可以省略。如果你的 Android 设备是 6.0 及以上,则需要在应用权限设置内给予 Linux Deploy 的访问存储权限。
打开 Linux Deploy 会看到一个默认配置,在这里需要修改。
发行版,默认的 Debian 修改为 Ubuntu
架构可选默认或调整为 arm 64
源地址可修改 http://mirrors.ustc.edu.cn/ubuntu-ports/
用户名和密码可以默认,后续如果忘记可以返回 App 内查看。
勾选 “允许 SSH 服务器启动”
设置后回到主界面,点击右上角三个白点,可以选择安装。
等待一段时间后,可以看到 Deploy 字符,这就差不多成功了。
然后点击启动,等到 Start 出现就 Okay 了。
至此手机上的操作就已经暂时结束了,剩下的就转到电脑上吧。
安装 HomeBridge
- 准备工作
使用这个软件部署的 Ubuntu 默认是没有安装 curl 命令,需要的手动安装一下:
sudo apt-get install -y curl
- 直接使用官网提供的脚本(可前往前文提供的官网进行选择)
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
- 安装 Avahi 依赖包
同样是必备工具之一
sudo apt-get install libavahi-compat-libdnssd-dev
- 安装 HomeBridge
sudo npm install -g --unsafe-perm homebridge
接下来执行以下命令创建一个 HB 的配置文件。
mkdir ~/.homebridge cd ~/.homebridge nano config.json sudo apt-get install nano
这里给出一个和请问一样的示例,记得修改:
你可以选择复制下方代码到终端中
{"bridge": {"name": "Homebridge","username": "CC:22:3D:E3:CE:30","port": 51826,"pin": "123-45-678"}, "platforms": [{"platform": "AqaraPlatform","sid": [“d2016dd68ad14043”],"password": ["7811dcb35e17"]}]}
在这段代码里面,name 可以自定义修改;username 建议不要随便修改;port 可以自定义修改,只要不被占用就好了;pin 可以自定义修改,格式需要保存为 xxx-xx-xxx;sid 是前文提到的局域网通讯协议,password 则是网关信息。
复制完成后可以输入 Command + O 保存,然后输入 Command + X 退出编辑模式。
和 Mac 不同,运行 Linux Deploy 之前需要注意一下。
首先编辑一下 avahi-daemon 服务的配置文档。
sudo nano /etc/avahi/avahi-daemon.conf
我们需要将文档中 publish 的所有参数都注释掉,在对应的配置项之前加 # 号即可。
......[[publish]]disable-publishing=yesdisable-user-service-publishing=noadd-service-cookie=nopublish-addresses=yespublish-hinfo=nopublish-workstation=nopublish-domain=yespublish-dns-servers=192.168.50.1, 192.168.50.2publish-resolv-conf-dns-servers=yespublish-aaaa-on-ipv4=yespublish-a-on-ipv6=no......
然后需要修改 avahi-daemon 服务的启动参数。
sudo nano /etc/init.d/avahi-daemon
找到启动服务的地方 dstart( ) 这一段,在 $DAEMON 后面添加上 --no-drop-root 参数。
d_start() { $DAEMON --no-drop-root -c && return 0 if [ -e $DISABLE_TAG -a "$AVAHI_DAEMON_DETECT_LOCAL" != "0" ]; thenDisabled 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 startsudo /etc/init.d/avahi-daemon start
如果两个服务都启动成功的话,就可以尝试启动 HB 服务了,即直接运行:
homebridge
关于更多的 HomeBridge 插件可以前往 homebridge-plugin - npm search 进行搜索。
方法 3
方法 3 采用树莓派连接方式,关于树莓派相关文章请参阅少数派。
参考来源
- GItHub项目 nfarina/homebridge
- 少数派文章 从米家到 HomeKit,你只需要一个树莓派
- 智能家居文章 无需树莓派,安卓手机也能搞定 HomeKit