22

HomeBridge 操作指南:从零开始,将你的米家设备接入 Homekit

 4 years ago
source link: https://sspai.com/post/59636
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

如何让米家设备轻松接入 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」进行下载。

MZFZv2i.png!web

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

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

uymqEfI.png!web

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

MzmAnuR.png!web 就像上面这样

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

安装 HomeBridge

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

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

ssh pi@树莓派的IP地址

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

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

Nfq6B3f.png!web

第二步,是对树莓派内置软件源进行更换。由于众所周知的原因,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
fyQvyi3.png!web

完成后,按下 ⌃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
fYvaY3z.png!web

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

sudo apt-get update
sudo apt-get upgrade

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

AzA36vV.png!web

现在,我们可以正式开始安装 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 安装成功,可以进行下一步。

uaqYbiM.png!web

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

FF32man.png!web

安装插件,编写 config.json

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

j2ERF3M.png!web

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

RbIRBz3.png!web

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

qyiIbau.png!web

说到编写 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 已经默默为我服务多年,但当年成功点亮灯泡那一刻的喜悦,至今都记忆犹新。

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK