在 如何让米家设备轻松接入 HomeKit? 这篇文章中,我看到了大家对于 HomeKit 的热情,不少小伙伴都表示,文章里主要介绍了不同的方向,但在实际操作过程,想要一份更清晰的「说明书」。想来上一次写接入 HomeKit 的文章已经是 2016 年,正好就趁着这个机会来更新一下。

这篇文章将从零开始,向你介绍如何通过在树莓派安装 HomeBridge,将几个典型的米家设备接入到 HomeKit 中。准备好了吗?那我们话不说,直接开始吧。

你需要准备的东西

在开始之前,我们首先得购买对应的硬件设备。在这个方案中,你需要准备的有这些东西:

  • 一台电脑(此处以 Mac 为例子)
  • 一个树莓派(建议 3B+ 及以上)
  • 一张 16GB 以上的 TF 卡和读卡器(用来给树莓派装系统)
  • 一根 MicroUSB 线(给树莓派连接电源,如果是树莓派 4,则需要准备一根 USB-C 线)
  • 一个安卓模拟器
  • 有了这些硬件设备之后,我们就可以开始在电脑上进行操作了

当然了,这里只是以我的环境作为例子,如果你想在其他平台上安装 HomeBridge 肯定也是没问题的,官方也给出了对应的安装指南。只不过考虑到要保持接入家居的实时可用性,就需要一台常开的设备来运行 HomeBridge,所以树莓派无论是在功耗还是性价比上,都是再合适不过的选择。

macOS 和 Linux 的小伙伴可以用系统自带的终端进行操作,而 Windows 的小朋友们可以选择刚推出不久的 Windows Terminal。

给树莓派安装系统

首先自然是给树莓派安装 Raspbian 系统。打开 这个网站,并选择「Raspbian Buster with desktop」进行下载。

至于为什么选择它的原因,主要有两点:一是「Raspbian Buster with desktop and recommended software」解压之后的系统镜像比较大,会占用更多空间,而它所推荐的软件都是我们不需要的;二是我并不确定 lite 版的系统是否缺失一些必要的支持,因此最保险的还是选择「Raspbian Buster with desktop」版本的系统。

下载好 zip 文件之后解压,可以获得一个 img 格式的镜像文件。这时候将我们的 TF 卡连接到电脑上,打开 balenaEtcher 这款软件,选择刚刚解压好的 Raspbian 系统,将它刷进 TF 卡中。

大约十分钟之后,你就拥有了一张能够让树莓派启动的「系统盘」了。不过这时候先不要着急着给树莓派开机,因为我们还需要做一些设置,好让电脑能够直接无线远程连接到树莓派,省去插拔 HDMI 和键鼠的麻烦。

将 TF 卡重新连接到电脑,可以看到一个名为 boot 的磁盘。接着,我们打开终端,依次输入下面的代码:

cd /Volumes/boot touch ssh touch wpa_supplicant.conf sudo nano wpa_supplicant.conf

输入完之后,会提示你需要密码。这里输入你电脑的登陆密码即可。需要提醒的是,输入密码的过程中终端不会显示任何内容,输入完回车就行了。完成之后,你会在终端进入到一个文本编辑器中。在编辑器内复制以下内容,并将对应 Wi-Fi 的 SSID 和密码改成你家的。

country=CN ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1
network={ ssid="你家Wi-Fi的名称" psk="你家Wi-Fi的密码" key_mgmt=WPA-PSK priority=1 }

需要提醒的是,如果你家的 ssid 是隐藏的,那么就需要在 priority=1 的后面加入一条 scan_ssid=1 的参数。

就像上面这样

设置完成后,按下 ⌃control+X,然后输入 y 并按下回车键进行保存,就可以将 TF 卡插入树莓派,连接电源开机启动了。回到 Mac 上,我们继续用终端进行操作。

安装 HomeBridge

要正式开始安装 HomeBridge 了。跟着下面的步骤一步一步来,你也可以在一杯咖啡的时间里,将 HomeBridge 轻松地安装在树莓派上。

不过在此之前,你需要到路由器后台,找到树莓派的局域网 IP 地址。接着在终端内输入

ssh pi@树莓派的IP地址

随后,电脑可能会向你问一个问题,不用管它问什么,直接输入 yes,然后输入连接树莓派的 ssh 默认密码:raspberry

再次需要提醒的是,输入密码的过程中终端不会显示任何内容,输入完回车就行了。如果出现了下面的界面,说明连接就成功建立了。

第二步,是对树莓派内置软件源进行更换。由于众所周知的原因,Raspbian 在更新软件包时可能会遇到速度缓慢甚至是无法更新的问题,因此我们将国外的软件源更换为国内的清华镜像源,加快连接速度。替换软件源的很简单,按照下面的操作步骤执行即可。

sudo nano /etc/apt/sources.list

将原有的内容删除,或是加 # 进行注释,并替换为下面的内容:

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

完成后,按下 ⌃control+X,然后输入 y 回车进行保存。接着,继续修改 /etc/apt/sources.list.d/raspi.list 文件,输入:

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

将里面内容用下面的内容取代,然后同样用上面的方法进行保存:

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

完成后,先进行一遍软件源更新。在终端中依次输入以下代码:

sudo apt-get update sudo apt-get upgrade

中途会询问你,是否进行更新,输入 y 之后回车即可。好了,等待十分钟左右,你就可以将树莓派里的软件包都更新到最新的版本了。

现在,我们可以正式开始安装 HomeBridge,话不多说,直接依次在终端中执行下面的代码:

curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -

sudo apt-get install -y nodejs gcc g++ make python

node -v

sudo npm i -g npm

sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x

sudo hb-service install --user homebridge

需要注意,第二步和第五步由于需要从国外的服务器下载对应的软件包,因此建议大家配置一下网络环境,不然可能会十分慢。其次,第三步中,node -v 的含义是为了查看安装的 node 版本。如果输入之后得到类似 v12.X.X 的结果,那就说明 node 安装成功,可以进行下一步。

跑完所有代码之后,HomeBridge 便已经成功部署在了树莓派上,接下来我们就可以安装对应的插件,将米家设备接入到 HomeKit 中。

安装插件,编写 config.json

得益于安装了 homebridge-config-ui-x 这一款插件,现在你可以打开一个浏览器,输入上面返回的任意一个 IP 地址,进入 HomeBridge 后台管理界面(默认的账户密码都是 admin)。

进入到这里之后,我们就可以在插件页面搜索对应的米家插件进行安装。这里我推荐来自「deserteagle」(GitHub 用户名为银行码 YinHangCode)的米家插件,不仅种类较多,而且基本上都能长期稳定工作。这里我们以米家空气净化器和米家空调伴侣作为例子,演示如何将它们接入 HomeKit 中。

首先,在插件页面用关键词搜索到对应的插件,点击安装。两款插件安装完成后,来到配置页面,开始编写 config.json。

说到编写 config.json 这个文件,就到了新手最头疼的地方。但其实不用害怕,都是四级水平不到的英语,理解起来并不困难。但请一定一定要认真阅读一遍作者的 Readme 和 config 例子,不然你必然会出现错误。

这里我贴出我的一部分 config.json,对里面的内容进行细致的讲解。不过需要注意的是,json 格式的文件并不支持注释,如果需要使用这份 config.json 文件,除了需要将对应内容更改为你的设备之外,还需要删除掉 # 和后面的中文注释

另外还需要提醒大家的是,json 文件的 {}[],  等符号一定不能弄错,否则一定会报错。如果是运行时提示 config 文件出现错误,首先检查自己是不是哪里打多了一个 ,,或者是哪里遗漏了一个括号,再检查语法是否正确。

{

    "bridge": { #homebridge基础设置,大部分都不需要修改

        "name": "HomeBridge",

        "username": "00:00:00:00:00:02",

        "port": 58888,

        "pin": "199-71-226" #你在家庭应用进行配对时的配对码,支持自定义

    },

    "platforms": [

        {

            "platform": "MiAirPurifierPlatform", #插件平台名称,固定不可更改

            "deviceCfgs": [

                {

                    "type": "MiAirPurifier2S", #型号名称,固定不可更改

                    "ip": "192.168.1.195", #空气净化器的IP地址

                    "token": "b5d7120997c45761f3adac05887c5fc2", #空气净化器的token

                    "airPurifierDisable": false, #是否在家庭应用中不显示空气净化器

                    "airPurifierName": "空气净化器", #在家庭应用中显示的名称

                    "silentModeSwitchDisable": false, #是否在家庭应用中不显示空净睡眠模式开关

                    "silentModeSwitchName": "空净睡眠模式", #在家庭应用中显示的名称

                    "temperatureDisable": false, #是否在家庭应用中不显示空净检测的环境温度

                    "temperatureName": "温度", #在家庭应用中显示的名称

                    "humidityDisable": false, #是否在家庭应用中不显示空净检测的环境湿度

                    "humidityName": "湿度", #在家庭应用中显示的名称

                    "buzzerSwitchDisable": true, #是否在家庭应用中不显示空净的静音开关

                    "buzzerSwitchName": "MiAirPurifier2S Buzzer Switch", #在家庭应用中显示的名称

                    "ledBulbDisable": true, #是否在家庭应用中不显示空净的屏幕显示开关

                    "ledBulbName": "空气净化器显示屏", #在家庭应用中显示的名称

                    "airQualityDisable": false, #是否在家庭应用中不显示空净检测的空气质量

                    "airQualityName": "空气质量" #在家庭应用中显示的名称

                }

            ]

        },{

            "name": "Config", #这部分不需要修改,是homebridge UI插件自动生成的

            "port": 8581,

            "auth": "form",

            "theme": "pink",

            "tempUnits": "c",

            "platform": "config"

        }

    ],

    "accessories": [ #是使用「platform」还是「accessories」,需要根据插件的说明进行选择

        {

            "accessory": "MiHeaterCooler", #插件名称,固定不可更改

            "name": "空调", #在家庭应用中显示的名称

            "address": "192.168.1.146", #空调伴侣的IP地址

            "token": "5ff11db226e994e41a4b7653cd713c6f", #空调伴侣的token

            "ratedPower": 735 #空调的额定功率,非必须参数

        }

    ]

}

其中,获得 token 的操作相对麻烦一些,但却又是米家设备接入 HomeKit 必不可少的一项参数。那么,要如何获取对应设备的 token?如果你不了解,可以跟着下面的步骤操作:

  • 第一步,我们打开准备好的安卓虚拟机,安装一个旧版的米家 app(必须要旧版,建议找 2017 年左右的版本);
  • 第二步,打开米家 App,登陆你的账号,检查你需要接入的设备是否显示在 App 中,然后简单进行操作,确定设备能够响应;
  • 第三步,安装 RE 浏览器,进入到 /data/data/com.xiaomi.smarthome/databases/ 目录下,找到 miio2.db 文件,并将它复制到电脑上;
  • 第四步,打开 这个网站,将 miio2.db 文件上传,然后点击 submit,就可以获取到所有设备的 token 了。建议将这份表格保存好,以备后期万一出现 bug 时进行修复。

至此,将米家设备接入 HomeKit 的所有操作完成。你终于可以拿起 iPhone,将设备加入到家庭应用中,享受 Siri、快捷指令和家庭自动化带来的便利体验了。

总结

文章的篇幅看起来有一些长,但实际上莫过于就是三大步:「装系统 - 装 HomeBridge - 装插件并适配」,熟练之后,你可以轻松在半小时不到的时间里接入数个米家设备。

但落实到每一步来说,都需要你的细心和耐心,如果中途出错,不要急于放弃,好好阅读返回的报错内容,并学会用 Google、百度搜索一下,或者是再仔细阅读插件开发者所写的 Readme 文件,看看问题是出在了哪里,对症下药进行解决。

当然,如果实在是有一些你无法找到的 config.json 错误,私信我,带上你的 config 文件和报错内容,我也很乐意提供帮助。

也是不禁回想起过去,为了折腾一个 YeeLight 彩光灯,而耗费的一天时间。虽说现在 HomeBridge 已经默默为我服务多年,但当年成功点亮灯泡那一刻的喜悦,至今都记忆犹新。

> 下载少数派 客户端、关注 少数派公众号,让你的生活更精彩 🎉

> 特惠、好用的硬件产品,尽在 少数派sspai官方店铺 🛒