前言
前陣一直在鼓搗智能家居,用樹莓派接入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
