DIY树莓派Homebridge智能台灯
前言
前阵一直在鼓捣智能家居,用树莓派接入Apple HomeKit小试牛刀,支持自带Home App控制和Siri调用,一个月用下来还算稳定,特此记录搭建步骤帮助有需要的朋友少走弯路~
自打2014年HomeKit发布以来,我对智能家居产生了浓厚的兴趣。想想躺在床上动动嘴就能开关灯,冬天不要太惬意!然而HomeKit认证家电售价较高,未能在国内普及,官网认证插座均价在400左右,国产便宜智能家电无法接入HomeKit则需安装各种app,无法统一管理体验大打折扣……
直到有一天,名为nfarina的大神宣布自己成功逆向HomeKit接入三方硬件。这还没完,大神随即在自己的GitHub上开源了这套名为Homebridge的系统!从此所有人都可以无偿使用Homebridge甚至二次开发,简直不要太赞!
鉴于手上还有一只勤劳的树莓派zerow在跑脚本,另有万年前众筹的控客miniK智能插座,决定DIY一款HomeKit智能台灯!
Let's get started!
实现
安装Homebridge
我计划于树莓派ZeroW上安装Homebridge(下文简称HB),根据官方wiki安装HB前需要先配置Node,网上大多教程均基于采用armv7处理器的Pi3编写,无法兼容armv6的ZeroW,强行安装会报错。通过不断摸索,我总结出了以下方法。
pi@rpi0w:~ $ sudo -i
root@rpi0w:/home/pi # cd ~
root@rpi0w:~ # wget https://nodejs.org/dist/v9.10.0/node-v9.10.0-linux-armv6l.tar.xz
root@rpi0w:~ # tar xJvf node-v9.10.0-linux-armv6l.tar.xz
root@rpi0w:~ # mv node-v9.10.0-linux-armv6l /usr/local/node
root@rpi0w:~ # echo PATH=$PATH:/usr/local/node/bin >> /.bashrc
root@rpi0w:~ # source ~/.bashrc
此方法手动下载并安装armv6版Node,为方便上电自启,建议在root权限下操作。因为众所周知的原因,国内访问境外服务器速度奇慢无比,可将npm替换为taobao镜像再安装HB及ikonke插件,该镜像每十分钟与主站同步一次。当然如果你不是强迫症患者亦可直接安装cnpm代替npm一劳永逸。
root@rpi0w:~ # npm config set registry http://registry.npm.taobao.org
root@rpi0w:~ # npm install -g --unsafe-perm homebridge
root@rpi0w:~ # npm install homebridge-ikonke-outlet
root@rpi0w:~ # homebridge
安装需要一段时间,正常情况下最后一句执行HB会报错,系统提示你没有找到配置文件无法启动。
获取插座信息
重点来了!!!
补全配置还需获取控客插座信息,需要用到ikonkeIO小工具。
pi@rpi0w:~ $ git clone https://github.com/YinHangCode/ikonkeIO.git
Cloning into 'ikonkeIO'...
remote: Enumerating objects: 67, done.
remote: Total 67 (delta 0), reused 0 (delta 0), pack-reused 67
Unpacking objects: 100% (67/67), done.
pi@rpi0w:~ $ cd ikonkeIO/
pi@rpi0w:~/ikonkeIO $ mv ikonkeIO_armv7l/* ./
pi@rpi0w:~/ikonkeIO $ chmod +x *
pi@rpi0w:~/ikonkeIO $ sh ikonkeIO.sh --discover 192.168.3.255
broadcast address: 192.168.3.255, scan ikonke device....
type: mini_w
ip: 192.168.3.33
mac: 28-aa-bb-cc-ee-ff
password: XXXXXXXX
^C
此处ip更换为局域网所在网段,通过Ctrl-C终止广播。重新配置插座WiFi连接会导致password变更。获知上述参数即可配置HB的config.json文件,在如下位置创建并写入内容文本保存。
pi@rpi0w:~ $cd ~/.homebridge/
pi@rpi0w:~/.homebridge $nano config.json
GNU nano 2.7.4 File: config.json
{
"bridge":{
"name":"Homebridge",
"username":"CC:22:3D:E3:CE:30",
"port":51826,
"pin":"031-45-154"
},
"platforms":[{
"platform":"IkonkeOutletPlatform",
"ikonkeIO":"/home/pi/ikonkeIO/ikonkeIO.sh",
"deviceCfgs":[{
"type":"mini_w",
"ip":"192.168.3.33",
"mac":"28-aa-bb-cc-ee-ff",
"password":"XXXXXXXX",
"outletDisable":false,
"outletName":"KMini outlet"
}]
}]
}
其中ikonkeIO、ip、mac、password等参数一定要填写正确,否则无法通讯。建议在路由器DHCP中为插座保留ip地址。
接入Home App与Siri
完成上述操作后可直接启动HB查看效果。
root@rpi0w:~# homebridge
*****************
QR-code
*****************
首次启动HB会产生一个巨大的二维码,使用iOS自带的Home APP添加配件扫码即可连接HB:
插座图标与名称支持自定义,自定义名称支持Siri指令。
例如:Hey Siri, turn on the light!
如果你有足够的脑洞,甚至可以写自动化脚本实现你在家中的每一个工作日起床开灯!周末或不在家中则无法触发。
开机自启
至此还剩一步,若树莓派断电或退出bash均会导致HB服务中断,建议将HB配置为上电自启。配置Linux开机自启方法很多,无外乎写文件和改服务,这里示范官方wiki推荐方法供参考。该方法要求node、npm、HB均在root权限下安装且HB为全局安装。
root@rpi0w:~ # npm install -g pm2
root@rpi0w:~ # pm2 startup
root@rpi0w:~ # pm2 start homebridge
root@rpi0w:~ # pm2 save