當小米遇到了Apple HomeKit

大家都知道Apple下最好用的家庭工具是HomeKit

但是符合原廠HomeKit的組件都很貴,但我又是個果粉怎麼辦

爾然間看到文章可以把便宜的小米透過樹莓派接入HomeKit

實際用過的感受是HomeKit可以直接Siri 不像小米app還要打開

但像燈光顏色之類的還是得開小米app就是了

 

1.首先你需要有台樹莓派主機

我是在淘寶上買的,目前最新的是3B+版本 有分E14 中國版跟RS英國版,個人覺得應該沒太大差別

但我還是買了RS版本,Raspberry Pi就是張主機板而已,額外需要電源供應器及16G microSD tf卡裝系統

其他如外殼跟散熱片就看個人需求了,我買了有散熱片跟風扇的但風扇高轉實在很吵後來也沒裝

 

把主機板鎖上機殼,插上電線後,需要條HDMI線輸出到螢幕上還有一組鍵盤滑鼠

2.將作業系統裝在Raspberry Pi記憶卡上

先到樹莓派Raspberry Pi官網下載作業系統,我是選擇 Raspbian Stretch with desktop版本

帶桌面版有圖形化介面會比較輕鬆一點

可以參考這邊 http://www.codedata.com.tw/java/swz-03/ 下載及安裝教程,但是to tlc不用改

之後設定一下使用者密碼並開啟ssh連線

3.安装Nodejs

我是用mac請打開終端機視窗打入

ssh [email protected] 連上樹莓派

為了避免之後的錯誤,接著 su 進入最高root權限(會再要一次密碼)

 

如果出現錯誤

POSSIBLE DNS SPOOFING DETECTED 是因為保護機制登入錯誤太多次

請在mac端的終端機裡打rm -f ~/.ssh/known_hosts

#sudo apt-get update

#sudo apt-get upgrade

先把系統套件升級

安装Nodejs:
#curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash –

# sudo apt-get install -y nodejs

只裝上面這兩部的話安裝,依賴包libavahi會有問題
#sudo apt-get install -y build-essential
#sudo apt-get install gcc g++ make
#curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg
#sudo apt-get install yarn
再輸入node -v查看版本

4.安装依賴包libavahi

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

5.安裝HomeBridge

#sudo npm install -g –unsafe-perm homebridge

 

到這邊就差不多了,接下來就是安裝小米的各個插件

6.安裝homebridge小米網關的插件

#sudo npm install -g homebridge-mi-aqara (-g –unsafe-perm)

這裏安装homebridge-mi-aqara,不要安装homebridge-aqara

7.配置config.json文件

默認情况下,HomeBridge會使用用户目錄下的.homebridge文件夾作為用户存储路徑,即~/.homebridge/目錄。 若不存在,可通過如下命令建立:
#mkdir ~/.homebridge/
進入~/.homebridge/目錄,創建配置文件config.json,命令如下:
#cd ~/.homebridge/
#nano config.json
文件修改完之後输入Ctrl+X,然後輸入Y保存退出就可以了。

之後運行HomeBridge都會抓config.json裡的文檔來判別

反正要把小米的裝置接入HomeBridge就是安裝插件後修改json就是了

8.安裝插件

可以參考 GitHub 上的教學,如homebridge-mi-airpurifier就是空氣清淨機

點進去後可以先看一下下面的支援列表,後看一下Installation

就是打入npm install -g homebridge-mi-airpurifier

就可以安裝好插件了,然後再nano修改json文件即可

以我自己為例,有兩個網關(一個客廳 一個房間) 兩盞吸頂燈 空氣淨化器2s 按鍵開關 直流電扇 掃地機器人

安裝空氣淨化器
https://www.npmjs.com/package/homebridge-mi-airpurifier
npm install -g homebridge-mi-airpurifier

直流落地善
https://github.com/YinHangCode/homebridge-mi-fan
npm install -g homebridge-mi-fan

掃地機器人
https://github.com/YinHangCode/homebridge-mi-robot_vacuum
npm install -g homebridge-mi-robot_vacuum

天氣
https://www.npmjs.com/package/homebridge-weather
npm install -g homebridge-weather

後修改config.json 我的長這樣

{

“bridge”: {

“name”: “Homebridge”,

“username”: “B8:27:EB:CF:FD:82”,

“port”: 51826,

“pin”: “123-45-678”

},

“accessories”: [{

“accessory”: “Weather”,

“apikey”: “191be99302622918632d196299235fdd”,

“location”: “kaohsiung, tw”,

“name”: “OpenWeatherMap Temperature”

}],

“platforms”: [{

“platform”: “MiAqaraPlatform”,

“gateways”: {

“7811dcb3a45f”: “6692183F2F2F4B2F”,

“7811dcfd7102”: “AEE44028C11241FF”

}

},

{

“platform”: “ReYeelightPlatform”,

“deviceCfgs”: [{

“type”: “CeilingLamp”,

“ip”: “192.168.2.154”,

“token”: “f3b24bdfb4415d3ac2e479dadbe594c6”,

“Name”: “Ceiling Lamp”,

“updatetimer”: true,

“interval”: 5

},

{

“type”: “CeilingLamp”,

“ip”: “192.168.2.125”,

“token”: “e0e21e983e613ffccd0e7e09268a48dc”,

“Name”: “Ceiling Lamp2”,

“updatetimer”: true,

“interval”: 5

}

]

},

{

“platform”: “MiAirPurifierPlatform”,

“deviceCfgs”: [{

“type”: “MiAirPurifier2S”,

“ip”: “192.168.2.157”,

“token”: “ab4c1ca60188553a25e5201c6a3e90f2”,

“airPurifierDisable”: false,

“airPurifierName”: “MiAirPurifier”,

“silentModeSwitchDisable”: false,

“silentModeSwitchName”: “MiAirPurifier Silent Mode Switch”,

“buzzerSwitchDisable”: true,

“buzzerSwitchName”: “MiAirPurifier Buzzer Switch”,

“ledBulbDisable”: true,

“ledBulbName”: “MiAirPurifier LED Switch”,

“airQualityDisable”: false,

“airQualityName”: “MiAirPurifier AirQuality”

}]

},

{

“platform”: “MiFanPlatform”,

“deviceCfgs”: [{

“type”: “MiDCVariableFrequencyFan”,

“ip”: “192.168.2.158”,

“token”: “13bf2b9e2127efaa22fd39d011c182f0”,

“fanName”: “room fan”,

“fanDisable”: false,

“temperatureName”: “room temperature”,

“temperatureDisable”: false,

“humidityName”: “room humidity”,

“humidityDisable”: false,

“buzzerSwitchName”: “fan buzzer switch”,

“buzzerSwitchDisable”: true,

“ledBulbName”: “fan led switch”,

“ledBulbDisable”: true

}]

},

{

“platform”: “MiRobotVacuumPlatform”,

“deviceCfgs”: [{

“type”: “MiRobotVacuum”,

“ip”: “192.168.2.84”,

“token”: “5a5859305678496e315657394f6d5367”,

“robotVacuumName”: “robot vacuum”,

“enablePauseToCharge”: true,

“robotVacuumDisable”: false

}]

}

]

}

 

ip可以進無線網路那台找到連接中的裝置找到

token值很麻煩 請參考這篇 ip也可以在這找到

找到之後置換進config.json即可

修改完退出後執行

#Homebridge

如果最後看到一個QRcode就表示成功啦,非常恭喜你

 

9. 在背景執行

安裝成功後,我們要讓程式在背景執行

#sudo apt-get install screen
輸入底下指令讓Homebridge不會造成視窗關閉就停止運作,最後home可以改成自己的文字
screen -S home

安裝一個名為home的視窗

#homebridge

啟動homebridge 等跑完看到code後就可以把ssh終端機關起來

接著打開Apple手機 找到家庭打開後會要你輸入密碼

以本篇為例就是在

“bridge”: {

“name”: “Homebridge”,

“username”: “B8:27:EB:CF:FD:82”,

“port”: 51826,

“pin”: “123-45-678”

裡的pin 12345678,你也可以改成自己喜歡的 port如果有占用到也可以改

之後就會把剛才有安裝的設備都拉進來,自己再試一下哪些圖示對應到哪些設備就行了

 

最後的最後,如果你有ipad一直放在家裡,也可以透過ipad或者apple tv上的家庭homekit 接上網路,讓你在外面透過行動網路也可以操控家裡電器喔

 

 

最後放上參考資料

【首发·一键脚本】树莓派Raspbian stretch安装【docker】【hassio】【homebridge】实现Siri一键脚本

https://homekit.loli.ren/docs/show/2

米家 HomeBridge ( 米家飛利浦智睿 + Token 查詢篇):有了 Mac,米家可以更智慧!

https://github.com/YinHangCode

https://jsonlint.com/

json如果有錯請到這邊偵錯

http://blog.itist.tw/p/how-to-study-raspberry-pi.html

https://hk.saowen.com/a/d6dc3b974ec61be5ab761b29a519564e131298cb5c3f26794001d2a833ff48cd

https://cnodejs.org/topic/54032efa9769c2e93797cd06

https://homekit.yinhh.com/