在 如何讓米家設備輕鬆接入 HomeKit? 這篇文章中,我看到了大家對於 HomeKit 的熱情,不少小夥伴都表示,文章裡主要介紹了不同的方向,但在實際操作過程,想要一份更清晰的「說明書」。想來上一次寫接入 HomeKit 的文章已經是 2016 年,正好就趁著這個機會來更新一下。
這篇文章將從零開始,向你介紹如何通過在樹莓派安裝 HomeBridge,將幾個典型的米家設備接入到 HomeKit 中。準備好了嗎?那我們話不說,直接開始吧。
你需要準備的東西
在開始之前,我們首先得購買對應的硬件設備。在這個方案中,你需要準備的有這些東西:
- 一臺電腦(此處以 Mac 為例子)
- 一個樹莓派(建議 3B+ 及以上)
- 一張 16GB 以上的 TF 卡和讀卡器(用來給樹莓派裝系統)
- 一根 MicroUSB 線(給樹莓派連接電源,如果是樹莓派 4,則需要準備一根 USB-C 線)
- 一個安卓模擬器
- 有了這些硬件設備之後,我們就可以開始在電腦上進行操作了
當然了,這裡只是以我的環境作為例子,如果你想在其他平臺上安裝 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 的磁盤。接著,我們打開終端,依次輸入下面的代碼:
<code>cd /Volumes/boot
touch ssh
touch wpa_supplicant.conf
sudo nano wpa_supplicant.conf/<code>
輸入完之後,會提示你需要密碼。這裡輸入你電腦的登陸密碼即可。需要提醒的是,輸入密碼的過程中終端不會顯示任何內容,輸入完回車就行了。完成之後,你會在終端進入到一個文本編輯器中。在編輯器內複製以下內容,並將對應 Wi-Fi 的 SSID 和密碼改成你家的。
<code>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
}/<code>
需要提醒的是,如果你家的 ssid 是隱藏的,那麼就需要在 priority=1 的後面加入一條 scan_ssid=1 的參數。
就像上面這樣
設置完成後,按下 ⌃control+X,然後輸入 y 並按下回車鍵進行保存,就可以將 TF 卡插入樹莓派,連接電源開機啟動了。回到 Mac 上,我們繼續用終端進行操作。
安裝 HomeBridge
要正式開始安裝 HomeBridge 了。跟著下面的步驟一步一步來,你也可以在一杯咖啡的時間裡,將 HomeBridge 輕鬆地安裝在樹莓派上。
不過在此之前,你需要到路由器後臺,找到樹莓派的局域網 IP 地址。接著在終端內輸入
<code>ssh pi@樹莓派的IP地址/<code>
隨後,電腦可能會向你問一個問題,不用管它問什麼,直接輸入 yes,然後輸入連接樹莓派的 ssh 默認密碼:raspberry。
再次需要提醒的是,輸入密碼的過程中終端不會顯示任何內容,輸入完回車就行了。如果出現了下面的界面,說明連接就成功建立了。
第二步,是對樹莓派內置軟件源進行更換。由於眾所周知的原因,Raspbian 在更新軟件包時可能會遇到速度緩慢甚至是無法更新的問題,因此我們將國外的軟件源更換為國內的清華鏡像源,加快連接速度。替換軟件源的很簡單,按照下面的操作步驟執行即可。
<code>sudo nano /etc/apt/sources.list/<code>
將原有的內容刪除,或是加 # 進行註釋,並替換為下面的內容:
<code>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/<code>
完成後,按下 ⌃control+X,然後輸入 y 回車進行保存。接著,繼續修改 /etc/apt/sources.list.d/raspi.list 文件,輸入:
<code>sudo nano /etc/apt/sources.list.d/raspi.list/<code>
將裡面內容用下面的內容取代,然後同樣用上面的方法進行保存:
<code>deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui/<code>
完成後,先進行一遍軟件源更新。在終端中依次輸入以下代碼:
<code>sudo apt-get update
sudo apt-get upgrade/<code>
中途會詢問你,是否進行更新,輸入 y 之後回車即可。好了,等待十分鐘左右,你就可以將樹莓派裡的軟件包都更新到最新的版本了。
現在,我們可以正式開始安裝 HomeBridge,話不多說,直接依次在終端中執行下面的代碼:
<code>curl -sL https://deb.nodesource.com/setup_12.x | sudo bash -sudo apt-get install -y nodejs gcc g++ make pythonnode -vsudo npm i -g npmsudo npm install -g --unsafe-perm homebridge homebridge-config-ui-xsudo hb-service install --user homebridge/<code>
需要注意,第二步和第五步由於需要從國外的服務器下載對應的軟件包,因此建議大家配置一下網絡環境,不然可能會十分慢。其次,第三步中,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 文件出現錯誤,首先檢查自己是不是哪裡打多了一個 ,,或者是哪裡遺漏了一個括號,再檢查語法是否正確。
<code>{ "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 #空調的額定功率,非必須參數 } ]}/<code>
其中,獲得 token 的操作相對麻煩一些,但卻又是米家設備接入 HomeKit 必不可少的一項參數。那麼,要如何獲取對應設備的 token?如果你不瞭解,可以跟著下面的步驟操作:
- 第一步,我們打開準備好的安卓虛擬機,安裝一箇舊版的米家 app(必須要舊版,建議找 2017 年左右的版本);
- 第二步,打開米家 App,登陸你的賬號,檢查你需要接入的設備是否顯示在 App 中,然後簡單進行操作,確定設備能夠響應;
- 第三步,安裝 RE 瀏覽器,進入到 /data/data/com.xiaomi.smarthome/databases/ 目錄下,找到 miio2.db 文件,並將它複製到電腦上;
- 第四步,打開 這個網站,將 miio2.db 文件上傳,然後點擊 submit,就可以獲取到所有設備的 token 了。建議將這份表格保存好,以備後期萬一出現 bug 時進行修復。
至此,將米家設備接入 HomeKit 的所有操作完成。你終於可以拿起 iPhone,將設備加入到家庭應用中,享受 Siri、快捷指令和家庭自動化帶來的便利體驗了。
總結
文章的篇幅看起來有一些長,但實際上莫過於就是三大步:「裝系統 - 裝 HomeBridge - 裝插件並適配」,熟練之後,你可以輕鬆在半小時不到的時間裡接入數個米家設備。
但落實到每一步來說,都需要你的細心和耐心,如果中途出錯,不要急於放棄,好好閱讀返回的報錯內容,並學會用 Google、百度搜索一下,或者是再仔細閱讀插件開發者所寫的 Readme 文件,看看問題是出在了哪裡,對症下藥進行解決。
當然,如果實在是有一些你無法找到的 config.json 錯誤,私信我,帶上你的 config 文件和報錯內容,我也很樂意提供幫助。
也是不禁回想起過去,為了折騰一個 YeeLight 彩光燈,而耗費的一天時間。雖說現在 HomeBridge 已經默默為我服務多年,但當年成功點亮燈泡那一刻的喜悅,至今都記憶猶新。
閱讀更多 少數派 的文章