最近在网上买了一个支持苹果homekit控制的通断模块,打算接在卧室的灯上,这样天冷了也不用起床去关灯了。结果买回来后发现使用不太稳定,因此打算自己研究一下原理看看能否改造。
目前在网络上搜索接入苹果homekit的方式大体上有两种:
1、直接使用基于ESP8266的模块集成homekit通信协议,使模块与苹果手机直连。这也是我买的模块采用的方式。
2、搭建一个Linux中枢设备,在设备上安装homebridge插件,使linux设备与苹果手机按照homekit协议通信。然后中枢设备可以采用任意其他连接方式控制终端设备,比如232,485,can,wifi,zigbee,蓝牙,2.4G等等。
第1种方式我搜索到大部分是做on/off控制的功能,也就是通断控制,控制方式比较局限。但好处是可以跟苹果手机直连,不需要第三方做协议的转换。目前github上都有开源的代码,但因为源代码量较大且家里网络访问github网站速度比较慢,导致源代码没有下载完,因此最终也没有编译成功。打算以后换个电信网络试一下能否提高代码的clone速度。第2种方式的好处是通过bridge可以安装多种协议插件,比如yeelight、aqara协议插件,通过协议插件与苹果手机通信,然后将数据在linux设备中解析后通过其他协议控制终端设备,支持的协议多且控制设备比较灵活,缺点是需要第三方linux设备中转。
我下面是采用的第2种方式进行试验的,使用的是虚拟机中Ubuntu做为linux设备,然后安装homebridge插件搭建起初步的平台。实测安装完成后可以在homebridge UI界面中解析到局域网中小米1s台灯的控制信息,这款台灯是采用的yeelight协议(实际上用的也是ESP8266模块自己封装的协议,协议源码没有对外开放)
homebridge在github上的开源链接:
https://github.com/homebridge/homebridge/wiki/Install-Homebridge-on-Debian-or-Ubuntu-Linux
1、 安装Node.js
# setup repo
curl -sL https://deb.nodesource.com/setup_14.x | sudo bash -
# install Node.js
sudo apt-get install -y nodejs gcc g++ make python net-tools
# test node is working
node -v
下载node.js的过程比较慢,大概需要40分钟,下载完成后等待自动安装。
2、 切换npm安装源为国内源,提高下载速度
npm config set registry https://registry.npm.taobao.org
npm config get registry
其中第一行是设置淘宝npm源,第二行是检验是否设置成功,如果能正确输出设置的网址,切换成功。
3、 安装Homebridge和Homebridge UI
使用指令同时安装bridge和bridge UI
sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
为使Homebridge作为服务器在开机时启动,使用下面命令配置
sudo hb-service install --user homebridge
4、 登入Homebridge UI
使用下面命令查看主机IP地址,然后在浏览器中打开http://<ip address of your server>:8581,默认账户与密码均为admin。
5、 可以使用下面命令查看是否安装成功,如果成功安装后会显示安装路径
sudo which homebridge
sudo which homebridge-config-ui-x
6、Homebridge常用命令与路径
Config File Path | /var/lib/homebridge/config.json |
Storage Path | /var/lib/homebridge |
Restart Command | sudo hb-service restart |
Stop Command | sudo hb-service stop |
Start Command | sudo hb-service start |
View Logs Command | sudo hb-service logs |
Systemd Service File | /etc/systemd/system/homebridge.service |
Systemd Env File | /etc/default/homebridge |
7、安装成功后截图如下