如何将任何智能设备连接到 HomeKit(使用 Raspberry Pi)
已发表: 2022-01-29许多智能设备跳过 Apple HomeKit 支持,仅与 Alexa、Google 和其他平台集成。 不过,通过这个 Raspberry Pi hack,您可以使用开源 Homebridge 软件将 HomeKit 支持添加到任何智能设备。
适用于任何智能设备的 HomeKit
如果您全心全意使用 HomeKit,那么一个大问题是支持它的智能设备很少。 例如,唯一阻碍一些廉价智能灯泡的是它们缺乏对 HomeKit 的支持。 亚马逊选择的“智能灯泡”是 TECKIN 的四件装,在撰写本文时,它的成本约为 40 美元,比一个 LIFX 灯泡还低。
当然,它们不如 LIFX 优质。 颜色没有那么鲜艳,它们在浴室里发出嗡嗡声,但只要 10 美元一瓶,它们的价值就相当无与伦比了。
不过,主要问题是它们不支持 HomeKit。 他们并不完全愚蠢——他们使用 Google Home、Alexa、IFTTT 和制造商的应用程序。 它们适合只有 TECKIN 智能灯泡的人。
但是,由于您无法从 HomeKit 访问它们,因此您无法从 Home 应用、控制中心中的小部件或 Siri 控制它们。 您也不能将它们包含在具有其他品牌灯泡的场景中或在自动化中使用它们。 如果您已经投资了 HomeKit,那么这很可能会破坏交易。
认识 Homebridge
幸运的是,有一个技巧可以让这些特殊的灯泡更加有用。 HomeKit API 允许称为网桥的设备(例如 Philips Hue 的这款设备)连接在其他协议上运行的子设备。 您只需将桥接器添加为 HomeKit 中的设备,它就会在 HomeKit 中注册连接到它的每个灯。 每当您请求更新灯光时,您的手机都会与网桥对话,而网桥会与灯光对话。
因此,网桥只是将信息从一个 API 中继到另一个 API。 因为您可以通过 Internet 控制 TECKIN 灯泡,所以完全可以仅通过软件将它们连接到 HomeKit——无需专有硬件。
如果你有一个树莓派(一个 5 美元的零树莓派就可以了),你可以用一个叫做 Homebridge 的框架将它设置为一个桥接器。 这个轻量级的 NodeJS 应用程序模拟 HomeKit API 并将请求转发到您的非 HomeKit 智能设备。
基本上,你在 Pi 上运行它,它会将每个“哑”设备添加到 Home 应用程序中。 当您尝试通过 Home 应用程序或 Siri 控制灯泡时,Homebridge 会为您与设备对话。 设置好之后,就像设备一开始就支持 HomeKit 一样。
这要求设备始终运行 Homebridge,因此您不会在笔记本电脑上安装它。 Raspberry Pi 是理想的选择,但如果您有一台旧设备,您可以将其重新用作始终运行的服务器或桌面,您可以将其安装在上面。
Homebridge 是一个框架,您可以使用插件对其进行扩展。 它有一个相当大的社区支持,所以任何给定的智能设备都可能有一个 Homebridge 插件来增加对它的支持。 如果您的设备没有插件,但您的智能设备有 API,并且您精通技术,您可以自己编写一个。
不过,对于大多数人来说,设置只是安装 Homebridge 和设备的品牌插件,以及一些配置。 如果您可以使用命令行并且有一点时间,那是相当容易的。
安装和配置 Homebridge
Homebridge 是一个 NodeJS 应用程序,因此您必须安装node
和npm
才能使用它。 如果您的机器运行 Linux,您可能可以从包管理器中获取它。
在 Ubuntu 上,您必须键入以下内容来手动设置 Node 存储库,然后安装nodejs
:
curl -sL https://deb.nodesource.com/setup_13.x | 须藤 -E bash - sudo apt-get install -y nodejs
否则,您可以查阅 Node 的下载页面,了解如何为您的特定操作系统安装它。
如果你在Linux上,还需要安装一些依赖项,如下图:
sudo apt-get install libavahi-compat-libdnssd-dev
之后就可以通过npm
全局安装 Homebridge,如下图:
sudo npm install -g --unsafe-perm homebridge
您还想安装您需要的品牌插件,因为 Homebridge 只是一个框架。 例如,TECKIN 灯泡的插件是homebridge-tuya-web
,它也可以在全球范围内安装。
您将键入以下内容:
npm i homebridge-tuya-web -g
一切安装完毕后,就可以实际使用了! 键入以下内容以运行 Homebridge 一次并初始化所有内容:
家桥
它会抱怨缺少您必须创建的配置。 默认目录是~/.homebridge/
,但如果要移动它,可以使用-U
参数。
键入以下内容以在此文件夹中创建新的 JSON 配置文件:
纳米 ~/.homebridge/config.json
不管你使用什么插件,都需要以下基本配置:
{ “桥”: { “名称”:“家桥”, "用户名": "CC:22:3D:E3:CE:30", “端口”:51826, “别针”:“031-45-154” }, "description": "自定义 HomeBridge 服务器", “港口”:{ “开始”:52100, “结束”:52150, }, “平台”:[ ] }
这会为 Homebridge 配置默认端口、名称、PIN 和可分配给其他设备的端口范围。
在空的platforms
数组中,放置每个插件的配置。 您应该能够在每个插件的 GitHub 页面上找到相关说明和示例。
在下面的示例中,TECKIN 灯泡的homebridge-tuya-web
插件想知道我的用户名和密码以连接到灯泡应用程序的 API,以及其他一些事情:
“平台”:[ { "平台": "涂鸦网络平台", "name": "涂鸦网络平台", “选项”: { “用户名”:“用户名”, “密码”:“密码”, "国家代码": "1", “平台”:“智能生活”, “轮询间隔”:10 } } ]
完成所有配置后,Homebridge 就可以开始使用了。 再次运行它,你的终端应该会显示一个巨大的二维码,可能会迫使你缩小。 使用 Home 应用程序扫描它以将其和所有连接的设备添加到 HomeKit。
Homebridge 会加载您的插件,并且应该为它找到的每个设备在屏幕上记录一条消息。 添加后,您应该可以在 HomeKit 中看到它们,并且它们应该功能齐全。
与我的 LIFX 灯泡相比,我确实注意到了轻微的延迟。 这可能是因为灯泡是通过 API 控制的,而不是直接控制的。 起初,灯泡也没有正确显示一些白色和暖白色,但经过一些调整,我能够设置正确的场景。
您可以随时在自己的应用程序中配置设备,等待 Home 应用程序更新,然后在 HomeKit 中使用预制配置设置场景。
如果您需要重新添加 Homebridge,您需要删除 config 目录中的persist/
文件夹,然后在“Bridge”选项卡下的任何已连接灯泡的设置中从 HomeKit 中删除桥接器。
将 Homebridge 添加为服务
如果您希望 Homebridge 一直运行,您可能需要将其配置为在崩溃或 Raspberry Pi 重新启动时重新启动。 您可以通过 Unix 服务执行此操作。 在您确认 Homebridge 正常工作后进行设置。
首先,添加一个名为homebridge
的新服务用户:
sudo useradd -M --system homebridge
设置密码:
sudo passwd homebridge
接下来,您必须将homebridge
配置移到您的个人主目录之外。 /var/lib/homebridge/
应该没问题:
sudo mv ~/.homebridge /var/lib/homebridge/
确保使用homebridge
的人拥有该目录和所有子文件夹的所有权:
sudo chown -R homebridge /var/lib/homebridge/
完成后,您可以创建服务。 为此,请在/etc/systemd/system/
中创建一个名为homebridge.service
的新文件:
须藤纳米/etc/systemd/system/homebridge.service
然后粘贴以下配置:
[单元] 描述=Homebridge 服务 After=syslog.target network-online.target [服务] 类型=简单 用户=homebridge ExecStart=/usr/bin/homebridge -U /var/lib/homebridge 重启=失败 重启秒=10 KillMode=进程 [安装] WantedBy=多用户.target
重新加载服务守护程序以使用您的更改对其进行更新:
sudo systemctl daemon-reload
现在,您应该能够启用您的服务(将其设置为在启动时运行):
sudo systemctl 启用 homebridge
并启动它:
sudo systemctl 启动 homebridge
如果您需要调试由服务配置引起的错误,您可以通过键入以下命令查看服务的日志:
journalctl -fn 50 -u 主桥