小米萬能遙控接入HomeKit的小白文

之前根據知友@小青年兒的文章

小青年兒:用樹莓派和米家實現HomeKit智能家居?

zhuanlan.zhihu.com
圖標

一步步地指引,成功地將小米的大部分設備用樹莓派通過Homebridge接入了HomeKit。

只是文中並沒有介紹小米萬能遙控的接入方法,而萬能遙控又是我所迫切需要的。

然後我找到了

HomeBridge教程-小米萬能遙控?

homekit.loli.ren

根據HomeBridge教程(下稱「HB教程」),試錯了若干次,終於成功將小米萬能遙控接入了HomeKit。

有感於教程的專業性,要弄懂它,對於我等小白實在也不容易。

所以在此將過程寫出,以供有需要之人參考。

步驟整理:

1:安裝小米萬能遙控的插件。(見HB教程)

2:獲取小米萬能遙控的IP地址和Token。(見HB教程)

3:在config.json文件中添加相關語句。(見本文)

4:獲取小米萬能遙控的紅外信號編碼。(見本文)

5:將紅外信號編碼填入config.json文件。(見本文)

6:重啟樹莓派,執行HomeBridge。

在HomeBridge接入設備時都需要在樹莓派里的config.json文件中添加相關語句。

本文只重點討論在HomeBridge中接入萬能遙控時,配置config.json文件的方法。

從第3步驟開始:

將電腦終端狀態調整到:已ssh連接到樹莓派而未運行HomeBridge。

這時的config.json文件長這樣:

未添加小米萬能遙控數據時的config.json

接下來把HB教程里給的代碼複製到config.json文件里。

這裡注意,複製HB教程里給出代碼時應去掉開頭的

"platforms": [

以及最後的

]

然後用小米萬能遙控的IP地址和Tonken替換裡面的數據。

暫時只有7處IP地址和1處Tonken需要修改。

在文件里添加了小米萬能遙控的數據後,config.json長這樣:

添加HB教程給的數據後的config.json

修改好config.json文件後保存,退出,執行HomeBridge。

如果運行成功,將會在手機的家庭app里看到多出了7個按鈕。

分別是下面6種的按鈕,以及1個MiLearn按鈕。

小米萬能遙控插件所支持的6種類型

此時,只有MiLearn這個按鈕可用,這是用來學習紅外線信號的。

而其它按鈕由於還沒有在config.json中添加紅外線信號編碼,所以現在還不可用。

第4步驟:獲取小米萬能遙控的紅外信號編碼。

有兩個方法可以得到編碼,下面先說第一個方法。

用手機配合電腦終端獲取。

在上一步驟,電腦終端的狀態是:已ssh連接到樹莓派並且運行著HomeBridge。

這時的終端窗口差不多長這樣:

運行HomeBridge時的終端窗口

拿出手機,在家庭app里點擊學習按鈕(MiLearn),小米萬能遙控藍燈開始閃爍。

對著小米萬能遙控按下需要複製的紅外線信號,終端會長成這樣:

複製紅外信號編碼,紅框內Learned Code:後面的一長串就是我們要的

如果嫌一個個複製太慢,那麼我們有第二種方法。

使用ROOT過的安卓手機或安卓模擬系統,登陸米家後,前往安卓系統的文件夾:

/data/data/com.xiaomi.smarthome/files/

找到類似13602470_device.json這樣的文件。

本例中,13602470是我的小米萬能遙控的設備ID。

打開后里面是所有我在米家裡使用過的紅外遙控信號編碼。

這個文件我在windows系統里用寫字本打開是一些亂碼。

而在MAC里用文本編輯打開則可以正常顯示。

長這樣:

紅外信號編碼,圖中編碼數據已改過。

第5步驟:將紅外信號編碼填入config.json文件。

得到了全部的紅外線信號編碼後,先退出HomeBridge。

編輯config.json,將信號編碼分別填入config.json中對應的項里。

這時config.json長這樣子:(請無視兩紅框)

成功運行過的config.json文件

原文件的MomentarySwitch開關只有1個,我自己添加了2個。

其它類型的開關,想必也是可以自己添加的。

在上圖,我只使用了小米萬能遙控的3個紅外信號。

第6步驟:重啟樹莓派,執行HomeBridge。

完。

另外,

以下是我樹莓派里的config.json代碼。

代碼已能正常運行,假如你踩到了坑,可以和我的互相對比一下。

{ "bridge":{ "name":"Homebridge", "username":"CC:22:33:EE:CC:11", "port":51826, "pin":"123-45-678"},"platforms":[{ "platform":"MiAqaraPlatform", "gateways":{ "l0b429zbeb9b": "l72E40F87Z3A498B" } },{ "platform": "ChuangmiIRPlatform", "hidelearn": false, "learnconfig":{ "ip": "192.168.31.164", "token": "lbc280554771bd879z8b61220394e17b" }, "deviceCfgs": [{ "type": "Switch", "ip": "192.168.31.164", "token": "xxxxxxx", "Name": "IR Switch", "data": { "on" : "xxxxxxx", "off": "xxxxxxx" } },{ "type": "Projector", "ip": "192.168.31.164", "token": "xxxxxxxx", "Name": "IR Projector", "interval": 1, "data": { "on" : "xxxxxxxxxxxxx", "off": "xxxxxxxxxxxxx" } },{ "type": "Light", "ip": "192.168.31.164", "token": "xxx", "Name": "IR LightBulb", "data": { "100" : "xxxx", "75" : "xxxxx", "50" : "xxxxx", "25" : "xxxxx", "off" : "xxxx" } },{ "type": "Projector", "ip": "192.168.31.164", "token": "xxxxxxxx", "Name": "IR Projector", "interval": 1, "data": { "on" : "xxxxxxxxxxxxx", "off": "xxxxxxxxxxxxx" } },{ "type": "Light", "ip": "192.168.31.164", "token": "xxx", "Name": "IR LightBulb", "data": { "100" : "xxxx", "75" : "xxxxx", "50" : "xxxxx", "25" : "xxxxx", "off" : "xxxx" } },{ "type": "AirConditioner", "ip": "192.168.31.164", "token": "xxx", "Name": "IR AC", "DefaultTemperature": 25, "MinTemperature": 16, "MaxTemperature": 30, "data": { "Cool":{ "30" : "xxx", "25" : "xxx", "20" : "xxx", "16" : "xxx" }, "Heat":{ "30" : "xxx", "25" : "xxx", "20" : "xxx", "16" : "xxx" }, "Auto":{ "30" : "xxx", "25" : "xxx", "20" : "xxx", "16" : "xxx" }, "off" : "xxxx" } },{ "type": "Custom", "ip": "192.168.31.164", "token": "xxx", "Name": "Custom", "data": { "on": { "0": "0|xxx", "1": "2|xxx", "2": "5|xxx" }, "off": { "0": "1|xxx" } } },{ "type": "MomentarySwitch", "ip": "192.168.31.164", "token": "lbc280554771bd879z8b61220394e17b", "Name": "Kai Men", "data": "Z6WVABoCAABnAgAAxwYAAKkRAADEEQAACyMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFICAQIBAgEBAgICAQEBAgECAgECAgEBAQRSAgECAQIBAQICAgEBAQIBAgIBAgIBAQEDUgIBAgECAQECAgIBAQECAQICAQICAQEAA=" },{ "type": "MomentarySwitch", "ip": "192.168.31.164", "token": "lbc280554771bd879z8b61220394e17b", "Name": "Ting Men", "data": "Z6WVANkBAAAGAgAAfgIAAKcCAADZBgAA2hEAAOwiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABWQUEhQSFBISFBQUEhISFBIUFBIUEhQSEhVkFBIUEhQSEhQUFBISEhQSFBQSFBIUEhIVZBQTFAIUEhIUFBQSEhIUEhQUEhQSFBIQE=" },{ "type": "MomentarySwitch", "ip": "192.168.31.164", "token": "lbc280554771bd879z8b61220394e17b", "Name": "Guan Men", "data": "Z6WVAAwCAAB5AgAA0QYAANIRAAABIwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0ICAQIBAgEBAgICAQEBAgECAgECAQEBAgNCAgECAQIBAQICAgEBAQIBAgIBAgEBAQIDQgIBAgECAQECAgIBAQECAQICAQIBAQEAA=" }] } ]}

推薦閱讀:

相关文章