2018 更新,插件大更,按照本教程执行操作可能会出现问题。本文不再更新,请在 GitHub 参考正确的配置文件格式。

如果你无法控制插座和网关灯

这说明你的 password 填写错误,请注意 HomeKit 获取设备数据(例如你的开关是否打开)无需密码,成功配置 HomeKit 不代表你的密码正确,且该密码 [区分大小写,重要],在 iOS 米家 App 中获取到的 Key 应该为全部大写,则你应该修改 config.json 中的密码(不修改 sid)为大写,这一点在两个版本的视频教程中都按照了「作者有误导性的要求的(作者只要求了 MAC 地址全部小写,但让人看起来像是密码和 sid 都要小写,因为 sample 也是全部小写的,可能作者本身使用 Android 环境)」全部使用小写,请根据自己情况填写大小写

这里再特别提醒,不是一定要大写,是区分大小写。

如果你在 iOS 获取密码,并且在配置文件中填写大写密码,你确定什么也没做错,仍然无法控制,你可以请求你身边的 Android 朋友帮助让他们登陆你的账号重新刷新密码(该操作无需在局域网内,有小米账号密码即可),Android 客户端会自动获取小写密码,保存后在配置文件中填写小写即可。如果你没有方便的 Android 手机也可以使用 Android 模拟器/虚拟机来完成该操作。

强烈建议跟随视频教程


以下为原正文部分

iOS Home App 还是米家?

HomeKit 相信各位都非常熟悉了,得益于它原生自带,在 iOS 上可以说是十分优秀的。无论是你可以告诉 Siri 我回家了,早上好等这样的文字激活你设置好的场景,还是可以直接从控制中心看到和控制你所有支持的设备,比起其他第三方智能家居 App 使用体验都更佳。

米家则是小米很早就推出的智能家庭系统,其最大的特点是便宜和基础。它的很多设备说实话,可以做到绝大多数目前支持 HomeKit 的设备正在卖,并高价卖的功能。如 D-link 推出的 180 度家庭摄像机,售价 1600 多。除了可以直接看完 180 度,无需旋转机器,还可以设置网格内点特别关注功能以外,其他对比小米,或者国内很多品牌真的没有什么特点可言,因此米家也成为了用户进入智能家庭领域的入门首选。

小米曾经自己推出米家 - HomeKit 的工具,只可惜限定了小米路由器硬盘版,且十分不稳定,不知道看到这篇文章的还有没有使用该插件的朋友。而小米自己的米家 App 不仅无法快速控制(部分设备支持)且 App 内有商城广告等信息,界面冗杂。因此是时候我们动起手来将它手动桥街到 HomeKit 了,这里使用的是小米公司的合作企业 (?) 绿米开放的 API。

完成以下的操作,你只需要一个树莓派,或者永不关机(或者你需要的时候不关机的)Mac Windows 或 Linux 设备。整个过程可能需要 30 分钟,我特别录制了一个完整的从 0 到全的教程视频,以 macOS 举例。Windows 可以在 GitHub 找到 HomeBridge 项目并了解如何安装,并安装对应的插件,然后在 Windows 中使用与视频类似的方法完成。

操作之前

1. 文中提到的树莓派是英国树莓派基金会开发的 Linux 单板机电脑,售价便宜,其目的是用于教育行业降低学校教学生编程的成本。也得益于此,很多人也用它来做小型开发。这里用它主要是看中了它一直不关机功耗较低的特点,HomeBridge 本身可以在任何系统运行(包含 Windows)但是如果你将一台自用的电脑一直开机,不仅对硬件有些损耗,电消耗也是较大的。

2. 你最好有一定使用 Linux 或者 macOS 终端的基础,这样接下来的操作你不仅不会觉得困难,反而会感到非常熟悉。如果没有也不要紧,请紧跟视频教程操作。

3. 以下看似复杂的操作其实做起来都很简单,你知道第一次做好之后,以后只需要当你树莓派关机之后重启的时候重新打开一下 Homebridge 就好了(甚至你可以写一个开机自启动连这步都不需要)你就可以一直享受 HomeKit 带给你的方便。

项目地址

核心 HomeBridge 和 插件 HomeBridge-Mi-Aqara

文字教程

以下直接做一个上面视频的文字版本,流程也按照视频上的来:

大家好,这个视频是教你如何将米家的设备通过树莓派 HomeBridge 连接到你 iOS 设备的 Home App 上的,首先我们要明确它支持的设备

[门窗传感器] 是类似 Apple 在销售的 Elgato Eve Door & Window 是很类似的,它是由一个磁铁一样的,当磁铁激活的时候也就是门和墙壁靠近连接上,它就认为你关门了,如果磁铁断开就表明你开着门。

[圆形的开关] 主要是和小米的米家其他设备联动,但是很遗憾这个不支持今天要讲的 HomeKit。

[温湿度传感器] 可能北方用的比较多,南方大概会少一些,字面意思理解就可以。

两个 插座 有基础班和 Zigbee 版,你需要购买因为只支持 Zigbee 版,Zigbee 是刚刚说的传感器的传输协议,也是为什么只有 Zigbee 版才能支持今天说的 HomeKit 的原因。

还有就是 Yeelight 的几个设备,但是你可能需要了解另一篇文章。因为 HomeBridge 实际上支持众多插件,Yeelight 与接下来用到的插件不相同,可以参考少数派稍早前选过的文章,虽然方法类似但是也是有区别的。

另外支持的设备还有 Aqara 墙壁开关,上述设备可以在小米之家,小米官网,米家 App 中购买。

在你使用这些传感器之前,你需要购买这个 149 元的网关,这是使用这些传感器的基础,是必备的,不能单独只购买传感器,如果你已经有网关了,可以单独购买这些传感器增加它们的监测点。

其实 Apple 在卖的 Elgato 系列为什么这么贵呢?有一个原因是它自带网关,HomeBridge 其实就是有点类似网关的东西。

在开始之前,你一定要能够用 SSH 登陆上你的 Pi,注意 2016 年 11 月的新版本系统之后,树莓派默认禁用 SSH,你需要手动开启。如果你没有屏幕,请将 SD 卡连上读卡器,找到 boot 这个分区,创建一个叫做 ssh 的空白文件,方法是 cd 到该文件夹,然后执行下面命令。

sudo touch ssh

好的,我们回到刚刚的 GitHub 项目(HomeBridge)找到 Wiki,点击右边的 More,找到 Running HomeBridge on a Raspberry Pi。第一步是安装 C++ 14,如果你知道你是 Raspberry Jessie 版本,这不可以跳过,如果你不清楚你的版本,运行这个命令检测一下 gcc -v

如果你是 4.9.2 就可以不用管了,否则执行以下命令:

sudo apt-get install gcc

接下来安装 NodeJS,Wiki 上有很大一部分是手动方法,你只需要输入以下命令就可以。如果你发现速度很慢,你可能需要更改中国软件源,参考文章:Raspbian 中国软件源

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash - 
sudo apt-get install -y nodejs

接下来是安装 Avahi,当然也只需要简单的复制一行代码就可以:

sudo apt-get install libavahi-compat-libdnssd-dev

最后安装 HomeBridge 本体和插件:

如果你使用 Raspbian Stretch 则必须加上 --unsafe-perm 参数:

sudo npm install -g --unsafe-perm homebridge

或者

npm install homebridge

然后安装所需要的插件

sudo npm install -g --unsafe-perm homebridge-mi-aqara

安装好后便可以直接输入 homebridge 回车看能否正常运行,如果你看到灰色底和数字 031-45-154 就可以按 Ctrl+C(注意以下涉及到 Ctrl 的,均为 Mac 也需要使用 Ctrl 而不是 Command)停止运行。接下来执行以下命令创建一个文件夹:

mkdir ~/.homebridge (可能提示已经创建 则可以忽略本步骤)
cd ~/.homebridge (定位到该文件夹)
nano config.json (如果你喜欢 vi 编辑器也可以)

然后复制进入以下文字:

{"bridge":{"name":"Homebridge","username":"CC:22:3D:E3:CE:23","port":51826,"pin":"233-62-666"},"platforms":[{"platform":"MiAqaraPlatform","sid":[""],"password":[""]}]}

其中 name 是你在 iOS 家庭 App 上可以看到的桥(你一般不会看到)的名字,我建议就叫 Homebridge,username 需要是类似 MAC 的格式,但是文字可以随意填写,所以你也不需要更改了。port 随意,确保不要被占用。pin 随意,为密码,需要是 8 位数字,格式为 xxx-xx-xxx,比如 123-45-678。下面的 platform 不能修改sidpassword 是什么,这就需要在手机上操作了,首先按 Ctrl+O 回车保存。

在手机上打开米家 App,点击你的网关,右上角三个 ···,并狂按底部空白区域(视频说掉了,重要),直到出现局域网通信协议和套装版本,主版本,网管信息为止。

点击局域网通信协议,打开,并刷新一个密码,大小写请保持,并记录该文本。

返回,点击网关信息,找到 mac: 后的文字,如本截图中的 28:6C:07:85:B3:0E去掉 : 并全部改为小写,也记录这段文字,如本截图中的文字处理后的结果就是 286c0785b30e

第一个文字就是你的 sid,第二个就是 password。如果你有多个网关用逗号链接,比如 cb30a01c1bcc4b3c, dc41b12d2cdd5c4d, ed52c23e3dee6d5e,password 同理。打开刚刚在树莓派编辑的 config.json 输入上面获得的文字,并 Ctrl+O 保存。7 月 5 日更新注意,下面这张图 sid 和 password 填反了。

然后你就可以再次直接运行 homebridge 了,你会发现它包含以下文字:Loading 1 platforms... Initializing AqaraPlatform platform..,并有一个你设置好的新密码,电脑上的操作就到这里了(不要关闭终端窗口)

打开 iPhone, iPad 等设备上的家庭 App,点击添加配件,点击 Homebridge,手动输入你设置的八位密码(一般来说用相机扫描不太能成功……)并可以配对成功。

接下来你就可以手动设置你的设备,更改名字,位置和类型,下面的包含在个人收藏可以让你在控制中心快速访问这些配件。

全部配置完毕后,你的 Home 已经全部配置成功。

你可以在控制中心快速控制或者查看设备状态。

在 Home App 中长按会有更多选项界面。

最后你会发现,你的 HomeBridge 一旦 SSH 窗口关闭就会停止,你可以安装 screen 来解决这个问题。apt-get 安装即可:sudo apt-get install screen

安装完毕后 screen -S(注意是大写)窗口名字可以随意取,如:screen -S homebdg

然后在这里面运行 homebridge

即使关闭 SSH,只要树莓派开机都会保持运行,或者你也可以直接设置为开机启动,详细可单独搜索方法,教程到这里也就结束了。

如果在过程中遇到任何问题,欢迎在评论提出。如果文章有毛病,也可以向我提修改建议 :)