前言
好想用 Google Home 控制我的冷氣喔
這個願望其實我已經想好多年了。
從大概三年前開始,買智慧插頭把床頭燈智慧化
到最近的智慧家電雨後春筍般地冒出
我的夢想(?)一直沒有改變(?)
Home Assistant 的相關專案也是絕讚活躍中
終於有一套合適的流程可以把任意的空調系統遙控器收進 HA 中
就在這邊紀錄一下 :D
PS. 本篇適合有用過 Home Assistant 的人看(?)
流程跟撇步介紹而已 沒有完整圖文教學
之後看情況再補基礎篇 :D
需求
- Home Assistant
- Broadlink 牌的萬能遙控 (小米的也可以,但學習訊號的方式不同,暫時不介紹)
- 你的冷氣遙控器
本文
1. Home Assistant 連接紅外線遙控
首先在 Home Assistant 裡面新增 Broadlink 的整合,並把萬能遙控連上去。
2. Home Assistant 安裝 SmartIR 模組
雷雷是用 HACS 安裝的,當然也可以照專案的 Readme 手動安裝。
3. 冷氣訊號
檢查有沒有你的設定檔
如果你在 Climate 頁面有看到符合你的型號的冷氣,恭喜你 你很幸運 :D
直接把 Code 載下來放進 HA 的 /config/custom_components/smartir/codes/climate/
裡面
HA 設定檔新增
smartir:
climate:
- platform: smartir
name: [自己選一個名字吧 :D]
unique_id: [取一個裝置 ID]
device_code: [設定檔四位數字]
controller_data: [你的 Broadlink 遙控器的 HA 裝置 ID]
# 下面是可選的,但建議要有,連上 Google Home 或蘋果的時候才會比較完整
temperature_sensor: [溫度計裝置 ID]
humidity_sensor: [溼度計裝置 ID]
power_sensor: [Binary 裝置 ID,判斷冷氣是否開啟]
重開 HA 應該就可以看到冷氣遙控會動ㄌ yay
製作設定檔
但天不從人願,上面有設定檔的冷氣非常稀少
大部分冷氣應該都沒有設定檔
所以我們要自己錄一個,耗時約半小時。
錄製訊號
首先我們連到設定檔製作工具,並連上自己的 HA。
Name 的欄位假設你的遙控器的 ID 是 remote.my_remote
的話,就填 my_remote
就可以了。
注意到 Operation Modes 只能是 cool, heat, dry, ion, auto
的組合
Fan Modes 最好是 auto, low, mediumLow, mid, mediumHigh, high
的組合
然後就可以開始學習了
學習完顯示綠色勾勾的時候,IR Code 會被紀錄在 /config/.storage/broadlink_remote_[MAC_ADDR]_codes
裡面
雷雷大約錄了 360 個訊號 (4個模式 6段風力 15 種溫度)
轉換成設定檔
戳一下網頁上的 Export JSON file
,得到設定檔的雛形,並改名為 sample.json
然後我們把剛剛錄下來的訊號取出來
SOURCE_FILE = "broadlink_remote_a043b032b4f4_codes"
DEST_FILE = "irdb.json"
import json
with open(SOURCE_FILE) as f:
data = json.load(f)
data = data["data"]["climate"]
with open(DEST_FILE, "w+", encoding="utf8") as f:
json.dump(data, f, ensure_ascii=False)
得到 IRDB 後,我們塞進設定檔,得到最終成果 result.json
import json
with open("sample.json", encoding="utf8") as f:
result = json.load(f)
with open("irdb.json", encoding="utf8") as f:
ir_data = json.load(f)
for op_mode in result["operationModes"]:
for fan_mode in result["fanModes"]:
for temp in range(result["minTemperature"], result["maxTemperature"] + 1):
temp = str(temp)
result["commands"][op_mode][fan_mode][temp] = ir_data[f"{op_mode}_{fan_mode}_{temp}"]
result["commands"]["off"] = ir_data["off"]
with open("result.json", "w+") as f:
ir_data = json.dump(result, f)
將設定檔改名為適當的[四位數字].json
(所屬廠牌的數字區間,無人占用的數字)
照著剛剛提到的步驟,應該就可以讓 HA 順利遙控冷氣了。
塞進 HomeKit 和 Google Home 網路教學很多,在這裡就不提了
有機會應該會跟基礎篇一起出 :D
後記
寫文章好累喔