关于 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

第三,安装 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