程序开发 ·

使用 Homebridge 连接苹果 Homekit

为什么要搭建 Homebridge

起初事情是这样的,在2017年圣诞节差不多的时候收到了一个 TP-Link 的智能插座(长得不怎么样,照片就不放了),就是通过 Wi-Fi 控制的那种,使用 TP-Link 自家的 App:Kasa

无奈 Kasa 是真的特别弱鸡,虽然支持连接到 Amazon 的 Alexa,然而我并没有任何 Echo 设备 🤷(Chrome 不支持男性摊手表情,差评)。于是博主尝试添加设备至 Google Home,it works!
不过,从去年的8月开始,博主已经成为 iPhone 用户了,使用 Google Assistant 控制确实不方便,外加博主还是 OCD 原生控

然而 ——  🤷‍♀️ 苹果的 Homekit 不支持 TP 家的产品

硬件支持

"树莓派"

所有的搭建基本都在树莓派上完成

  • Macbook Pro 一台

非必要,我只不过不想在树莓派上用迷你键盘敲代码🙃️,于是拿 MPB 来进行远程 ssh

软件依赖

注意:本文不是一篇手把手的新手教程,需要一定的 Shell 基础和树莓派基础

  • 给你的树莓派找一个合适的 Distro
  • nodejs
  • npm
  • avahi
  • homebridge
  • homebridge-tplink-smarthome

关于 Distro,博主的的 Distro 并没有任何的参考价值,因为博主的树莓派同时是一个智能 TV ,所以用的 Distro 是 OSMC (一个基于 Kodi 的媒体中心)

Homebridge 简介

Homebridge,从名字上就可以看出来这个软件本质是一个 bridge。

Homebridge 通过各种插件,支持了国内外无数的智能家居硬件,然后将自己伪装成苹果的 Homekit 硬件,接入 iOS 和 Siri

代码详细

我就假设你用的 Distro 是像 Raspbian 那样的类 Deb/Ubuntu 系统了,所以本文所有的涉及包管理器的命令将以 apt-get 做例子(之后会用到 npm),如果你是其他系统,请自行在 yum 和 rpm 等命令间切换。

本教程所有命令将以 sudo 权限执行,建议直接 sudo su 切换到 root

首先,安装 nodejs:
这里有一个坑,不要直接用 apt 装,不知道为什么每次试就会出错……

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

然后我们需要安装依赖,avahi,为安装 Homebridge 作准备:

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

然后安装最新版本的 Homebridge

sudo npm install -g --unsafe-perm homebridge

OK,到这里,主体安装完毕了,这里,博主要支持的设备是 TP-Link 家的,所以,接下来会安装专门针对 TP 家族产品的依赖,如果你在使用其他智能产品,可以尝试找找其他依赖,或者在本博客评论,我可以试着帮忙找找看

安装 TP-Link 依赖

sudo npm install -g homebridge-tplink-smarthome

到这里其实已经可以投入使用了,但是如果你以后想使用其他智能硬件的话,还是加个配置为妙:

cd ~ #注:后期如果发现配置不生效,请把配置文件扔到/root里
mkdir .homebridge
cd .homebridge
vi config.json #这里使用Vim,可以选择自己习惯的编辑器

然后编辑内容:

{
    "bridge": {
        "name": "Homebridge",
        "username": "CC:22:3D:E3:CE:30",
        "port": 51826,
        "pin": "031-45-154"
    },
}

这是最基础的配置内容

然后敲命令:

sudo homebridge

大概就会出现这样的景象:

"Homebridge"

启动苹果的 Home(家庭) 应用,扫码,就可以连接啦~

填坑

这里还是有很多坑需要填的…… 🙂

坑一:ssh 挂起

如果你和博主一样,是通过 ssh 连接树莓派的,那么,如何让 homebridge 在 ssh 端开之后继续运行呢??

解决方案是:screen

Screen 可以创建一个面板,运行命令后,再挂起面板,就一直在后台运行啦

安装 Screen

sudo apt-get install screen

启用 Screen

screen

然后就可以继续敲命令啦,敲完之后,按下 Ctrl+A,然后按 D,就能够挂起面板了

这样就可以放心断开 ssh 了;需要恢复面板的时候,可以:

screen -ls #这里会返回一个ID
screen -r ID

坑二:硬件已添加

如果你因为某些原因在 Homekit 删除了你的智能硬件,你想重新加入 Homebridge,手机就会提示:该硬件已被添加,请重置

那么怎么重置呢?

解决方法:

rm -rf ~/.homebridge/accessories
rm -rf ~/.homebridge/persist

然后就可以重连了

参考

博主搭建过程中参考了一篇文章:树莓派进阶(一):借助树莓派与 HomeBridge,从米家到 HomeKit

结语

现在博主愉快的使用 Apple Watch 上的 Siri 控制台灯……

"Siri"

现在在尝试把 Homebridge 接入 Echo……

最后,有很多人写过关于 Homebridge 的文章,但我还是要写,因为有太多我走过的坑要分享,就这样

参与评论