在 如何讓米家裝置輕松接入 HomeKit? 這篇文章中,我看到了大家對於 HomeKit 的熱情,不少小夥伴都表示,文章裏主要介紹了不同的方向,但在實際操作過程,想要一份更清晰的「說明書」。想來上一次寫接入 HomeKit 的文章已經是 2016 年,正好就趁著這個機會來更新一下。
這篇文章將從零開始,向你介紹如何透過在樹莓派安裝 HomeBridge,將幾個典型的米家裝置接入到 HomeKit 中。準備好了嗎?那我們話不說,直接開始吧。
你需要準備的東西
在開始之前,我們首先得購買對應的硬體裝置。在這個方案中,你需要準備的有這些東西:
當然了,這裏只是以我的環境作為例子,如果你想在其他平台上安裝 HomeBridge 肯定也是沒問題的,官方也給出了對應的安裝指南。只不過考慮到要保持接入家居的即時可用性,就需要一台常開的裝置來執行 HomeBridge,所以樹莓派無論是在功耗還是價效比上,都是再合適不過的選擇。
macOS 和 Linux 的小夥伴可以用系統內建的終端進行操作,而 Windows 的小朋友們可以選擇剛推出不久的 Windows Terminal。
給樹莓派安裝系統
首先自然是給樹莓派安裝 Raspbian 系統。開啟 這個網站,並選擇「Raspbian Buster with desktop」進行下載。
至於為什麽選擇它的原因,主要有兩點:一是「Raspbian Buster with desktop and recommended software」解壓之後的系統映像比較大,會占用更多空間,而它所推薦的軟體都是我們不需要的;二是我並不確定 lite 版的系統是否缺失一些必要的支持,因此最保險的還是選擇「Raspbian Buster with desktop」版本的系統。
下載好 zip 檔之後解壓,可以獲得一個 img 格式的映像檔。這時候將我們的 TF 卡連線到電腦上,開啟 balenaEtcher 這款軟體,選擇剛剛解壓好的 Raspbian 系統,將它刷進 TF 卡中。
大約十分鐘之後,你就擁有了一張能夠讓樹莓派啟動的「系統槽」了。不過這時候先不要著急著給樹莓派開機,因為我們還需要做一些設定,好讓電腦能夠直接無線遠端連線到樹莓派,省去插拔 HDMI 和鍵鼠的麻煩。
將 TF 卡重新連線到電腦,可以看到一個名為 boot 的磁盤。接著,我們開啟終端,依次輸入下面的程式碼:
cd /Volumes/boot
touch ssh
touch wpa_supplicant.conf
sudo nano wpa_supplicant.conf
輸入完之後,會提示你需要密碼。這裏輸入你電腦的登陸密碼即可。需要提醒的是,輸入密碼的過程中終端不會顯示任何內容,輸入完回車就行了。完成之後,你會在終端進入到一個文字編輯器中。在編輯器內復制以下內容,並將對應 Wi-Fi 的 SSID 和密碼改成你家的。
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
ssid="你家Wi-Fi的名稱"
psk="你家Wi-Fi的密碼"
key_mgmt=WPA-PSK
priority=1
}
需要提醒的是,如果你家的 ssid 是隱藏的,那麽就需要在
priority=1
的後面加入一條
scan_ssid=1
的參數。
設定完成後,按下
⌃control+X
,然後輸入
y
並按下回車鍵進行保存,就可以將 TF 卡插入樹莓派,連線電源開機啟動了。回到 Mac 上,我們繼續用終端進行操作。
安裝 HomeBridge
要正式開始安裝 HomeBridge 了。跟著下面的步驟一步一步來,你也可以在一杯咖啡的時間裏,將 HomeBridge 輕松地安裝在樹莓派上。
不過在此之前,你需要到路由器後台,找到樹莓派的區域網路 IP 地址。接著在終端內輸入
ssh pi@樹莓派的IP地址
隨後,電腦可能會向你問一個問題,不用管它問什麽,直接輸入
yes
,然後輸入連線樹莓派的 ssh 預設密碼:raspberry。
再次需要提醒的是,輸入密碼的過程中終端不會顯示任何內容,輸入完回車就行了。如果出現了下面的界面,說明連線就成功建立了。
第二步,是對樹莓派內建軟體源進行更換。由於眾所周知的原因,Raspbian 在更新軟體包時可能會遇到速度緩慢甚至是無法更新的問題,因此我們將國外的軟體源更換為國內的清華映像源,加快連線速度。替換軟體源的很簡單,按照下面的操作步驟執行即可。
sudo nano /etc/apt/sources.list
將原有的內容刪除,或是加 # 進行註釋,並替換為下面的內容:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
完成後,按下
⌃control+X
,然後輸入
y
回車進行保存。接著,繼續修改
/etc/apt/sources.list.d/raspi.list
檔,輸入:
sudo nano /etc/apt/sources.list.d/raspi.list
將裏面內容用下面的內容取代,然後同樣用上面的方法進行保存:
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
完成後,先進行一遍軟體源更新。在終端中依次輸入以下程式碼:
sudo apt-get update
sudo apt-get upgrade
中途會詢問你,是否進行更新,輸入
y
之後回車即可。好了,等待十分鐘左右,你就可以將樹莓派裏的軟體包都更新到最新的版本了。
現在,我們可以正式開始安裝 HomeBridge,話不多說,直接依次在終端中執行下面的程式碼:
curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -
sudo apt-get install -y nodejs gcc g++ make python
node -v
sudo npm i -g npm
sudo npm install -g --unsafe-perm homebridge homebridge-config-ui-x
sudo hb-service install --user homebridge
需要註意,第二步和第五步由於需要從國外的伺服器下載對應的軟體包,因此建議大家配置一下網路環境,不然可能會十分慢。其次,第三步中,
node -v
的含義是為了檢視安裝的 node 版本。如果輸入之後得到類似
v12.X.X
的結果,那就說明 node 安裝成功,可以進行下一步。
跑完所有程式碼之後,HomeBridge 便已經成功部署在了樹莓派上,接下來我們就可以安裝對應的外掛程式,將米家裝置接入到 HomeKit 中。
安裝外掛程式,編寫 config.json
得益於安裝了 homebridge-config-ui-x 這一款外掛程式,現在你可以開啟一個瀏覽器,輸入上面返回的任意一個 IP 地址,進入 HomeBridge 後台管理界面(預設的帳戶密碼都是
admin
)。
進入到這裏之後,我們就可以在外掛程式頁面搜尋對應的米家外掛程式進行安裝。這裏我推薦來自「deserteagle」(GitHub 使用者名稱為銀行碼 YinHangCode)的米家外掛程式,不僅種類較多,而且基本上都能長期穩定工作。這裏我們以米家空氣凈化器和米家空調伴侶作為例子,演示如何將它們接入 HomeKit 中。
首先,在外掛程式頁面用關鍵詞搜尋到對應的外掛程式,點選安裝。兩款外掛程式安裝完成後,來到配置頁面,開始編寫 config.json。
說到編寫 config.json 這個檔,就到了新手最頭疼的地方。但其實不用害怕,都是四級水平不到的英語,理解起來並不困難。 但請一定一定要認真閱讀一遍作者的 Readme 和 config 例子,不然你必然會出現錯誤。
這裏我貼出我的一部份 config.json,對裏面的內容進行細致的講解。不過需要註意的是,json 格式的檔並不支持註釋,如果需要使用這份 config.json 檔,除了需要將對應內容更改為你的裝置之外,還需要
刪除掉
#
和後面的中文註釋
。
另外還需要提醒大家的是,json 檔的
{}
、
[]
、
,
等符號一定不能弄錯,否則一定會報錯。如果是執行時提示 config 檔出現錯誤,首先檢查自己是不是哪裏打多了一個
,
,或者是哪裏遺漏了一個括弧,再檢查語法是否正確。
{
"bridge": { #homebridge基礎設定,大部份都不需要修改
"name": "HomeBridge",
"username": "00:00:00:00:00:02",
"port": 58888,
"pin": "199-71-226" #你在家庭套用進行配對時的配對碼,支持自訂
},
"platforms": [
{
"platform": "MiAirPurifierPlatform", #外掛程式平台名稱,固定不可更改
"deviceCfgs": [
{
"type": "MiAirPurifier2S", #型號名稱,固定不可更改
"ip": "192.168.1.195", #空氣凈化器的IP地址
"token": "b5d7120997c45761f3adac05887c5fc2", #空氣凈化器的token
"airPurifierDisable": false, #是否在家庭套用中不顯示空氣凈化器
"airPurifierName": "空氣凈化器", #在家庭套用中顯示的名稱
"silentModeSwitchDisable": false, #是否在家庭套用中不顯示空凈睡眠模式開關
"silentModeSwitchName": "空凈睡眠模式", #在家庭套用中顯示的名稱
"temperatureDisable": false, #是否在家庭套用中不顯示空凈檢測的環境溫度
"temperatureName": "溫度", #在家庭套用中顯示的名稱
"humidityDisable": false, #是否在家庭套用中不顯示空凈檢測的環境濕度
"humidityName": "濕度", #在家庭套用中顯示的名稱
"buzzerSwitchDisable": true, #是否在家庭套用中不顯示空凈的靜音開關
"buzzerSwitchName": "MiAirPurifier2S Buzzer Switch", #在家庭套用中顯示的名稱
"ledBulbDisable": true, #是否在家庭套用中不顯示空凈的螢幕顯示開關
"ledBulbName": "空氣凈化器顯示器", #在家庭套用中顯示的名稱
"airQualityDisable": false, #是否在家庭套用中不顯示空凈檢測的空氣品質
"airQualityName": "空氣品質" #在家庭套用中顯示的名稱
}
]
},{
"name": "Config", #這部份不需要修改,是homebridge UI外掛程式自動生成的
"port": 8581,
"auth": "form",
"theme": "pink",
"tempUnits": "c",
"platform": "config"
}
],
"accessories": [ #是使用「platform」還是「accessories」,需要根據外掛程式的說明進行選擇
{
"accessory": "MiHeaterCooler", #外掛程式名稱,固定不可更改
"name": "空調", #在家庭套用中顯示的名稱
"address": "192.168.1.146", #空調伴侶的IP地址
"token": "5ff11db226e994e41a4b7653cd713c6f", #空調伴侶的token
"ratedPower": 735 #空調的額定功率,非必須參數
}
]
}
其中,獲得 token 的操作相對麻煩一些,但卻又是米家裝置接入 HomeKit 必不可少的一項參數。那麽,要如何獲取對應裝置的 token?如果你不了解,可以跟著下面的步驟操作:
/data/data/com.xiaomi.smarthome/databases/
目錄下,找到
miio2.db
檔,並將它復制到電腦上;
miio2.db
檔上傳,然後點選 submit,就可以獲取到所有裝置的 token 了。建議將這份表格保存好,以備後期萬一出現 bug 時進行修復。
至此,將米家裝置接入 HomeKit 的所有操作完成。你終於可以拿起 iPhone,將裝置加入到家庭套用中,享受 Siri、快捷指令和家庭自動化帶來的便利體驗了。
總結
文章的篇幅看起來有一些長,但實際上莫過於就是三大步:「裝系統 - 裝 HomeBridge - 裝外掛程式並適配」,熟練之後,你可以輕松在半小時不到的時間裏接入數個米家裝置。
但落實到每一步來說,都需要你的細心和耐心,如果中途出錯,不要急於放棄,好好閱讀返回的報錯內容,並學會用 Google、百度搜尋一下,或者是再仔細閱讀外掛程式開發者所寫的 Readme 檔,看看問題是出在了哪裏,對癥下藥進行解決。
當然,如果實在是有一些你無法找到的 config.json 錯誤,私信我,帶上你的 config 檔和報錯內容,我也很樂意提供幫助。
也是不禁回想起過去,為了折騰一個 YeeLight 彩光燈,而耗費的一天時間。雖說現在 HomeBridge 已經默默為我服務多年,但當年成功點亮燈泡那一刻的喜悅,至今都記憶猶新。