|
|
上一篇結束時,你的日誌裡應該已經會冒出一串 Received Raw 的數字。這一篇要把那串數字變成一個平台名稱,然後讓冷氣真的嗶一聲。

先講一個會害你白繞一圈的事實
很多人第一步就卡在這裡:日誌裡只有 Received Raw,沒有印出任何協定名稱,於是判斷「ESPHome 不支援我家冷氣」。
這個結論幾乎一定是錯的。
ESPHome 的解碼器(dump)和冷氣平台(climate 平台)是兩套完全不同的清單。
dump 那一側跟冷氣有關的只有這六個:
- coolix
- haier
- midea
- toshiba_ac
- mirage
- aeha(日規家電共通的載波格式,不是特定廠牌)
大金、三菱、格力、國際牌、日立 —— 一個都不在裡面。
但 climate 那一側有 daikin、mitsubishi、gree、hitachi。也就是說:日誌印不出協定名,不代表不支援,只代表「沒有人幫這個協定寫 dump 解碼器」。
知道這件事,下面的步驟才不會白做。
這一篇假設的接線(三十秒對一下)
下面所有設定檔都是照這個腳位寫的,不一樣的話記得把數字改掉:
- ESP32 GPIO14 → 220Ω 電阻 → 2N2222 的中腳(B,基極)
- 2N2222 的左腳(E,射極)接到 GND
- 2N2222 的右腳(C,集極)接到紅外線 LED 的負極(短腳)
- 紅外線 LED 的正極(長腳) → 33Ω 電阻 → ESP32 的 5V(VIN)
- VS1838B 接收頭:圓弧面朝自己時左腳 OUT 接到 GPIO16、中腳 GND、右腳 VCC 接 3.3V(不要接 5V)
第一步:把錄製用的設定檔燒進去
回到 ESPHome Device Builder,按 ac-ir 卡片的 Edit,換成下面這份完整設定檔。跟上一篇的差別只在 dump 那一段變明確了,以及多了一個把碼存下來的自動化。
- esphome:
- name: ac-ir
- friendly_name: 冷氣紅外線
- esp32:
- board: esp32dev
- framework:
- type: esp-idf
- logger:
- level: DEBUG
- api:
- encryption:
- key: !secret api_encryption_key
- ota:
- - platform: esphome
- password: !secret ota_password
- wifi:
- ssid: !secret wifi_ssid
- password: !secret wifi_password
- ap:
- ssid: "AC-IR Fallback"
- password: "12345678"
- captive_portal:
- status_led:
- pin: GPIO2
- remote_transmitter:
- id: ir_tx
- pin: GPIO14
- carrier_duty_percent: 50%
- remote_receiver:
- id: ir_rx
- pin:
- number: GPIO16
- inverted: true
- mode:
- input: true
- pullup: true
- tolerance: 55%
- buffer_size: 10kB
- filter: 250us
- idle: 25ms
- dump:
- - raw
- - coolix
- - haier
- - midea
- - toshiba_ac
- - mirage
- - nec
- - aeha
- button:
- - platform: restart
- name: "重新啟動"
複製代碼
按 Install → Wirelessly,等它燒完。
為什麼要明確列出來而不是寫 dump: all:all 會把 rc_switch、keeloq 那些門鈴跟車庫遙控的解碼器也打開,它們常常把冷氣的長碼誤判成一堆垃圾,把你真正要看的 Raw 沖到螢幕外面。
第二步:正確地錄訊號

按 Logs 進日誌畫面,然後照這個順序按遙控器。遙控器頭要對準接收頭,距離三十公分以內。
- 先按關機,等日誌安靜下來
- 按開機 + 冷氣模式 + 26 度 + 中風,等兩秒
- 同一個按法再按兩次
- 改成 28 度,按三次
- 再按一次關機,按三次
為什麼同一個動作要按三次:紅外線很容易漏收。按三次你才分得出「這台機器每次送的碼是不是一樣」。
這件事很關鍵:
- 三次的碼完全一樣 → 這是「整包狀態型」的遙控器,每次都把完整設定送出去。絕大多數分離式冷氣屬於這種
- 三次的碼不一樣 → 裡面帶了時間、計時器或校驗碼。這種機種學碼會失效,一定要走平台
把整份日誌複製到記事本存起來。等一下要回頭比對,日誌畫面會一直往上捲掉。
第三步:讀日誌,分三種結果走
結果 A:印出了協定名稱
- [12:05:33][D][remote.coolix:082]: Received Coolix: 0xB25F40
- [12:05:33][D][remote.raw:028]: Received Raw: 4323, -4504, 450, -1738, 449, -631, ...
複製代碼
恭喜,你直接知道答案了。 跳到第五步,platform 就填那個名字(Coolix → coolix,Midea → midea_ir,Toshiba → toshiba)。
結果 B:只有 Received Raw
- [12:05:33][D][remote.raw:028]: Received Raw: 3492, -1730, 431, -1298, 432, -444,
- [12:05:33][D][remote.raw:028]: 431, -1299, 431, -445, 430, -445, 431, -1298, ...
複製代碼
這是最常見的情況,完全正常。 往第四步走,用遙控器型號去查。
順便做兩個觀察,可以幫你縮小範圍(這只是線索,不是證據):
- 數字的總個數。大約 100 個以內 = 短碼,多半是 Coolix、Zhlt01、Gree 這一類;200 個以上 = 整包狀態型,多半是大金、三菱、國際牌這一類
- 最前面那一對數字(前導脈衝)。4000~5000 的正負配對是 NEC 家族(Coolix 就在這一族);3000~3600 常見於大金與三菱;8000 上下常見於國際牌與日規機種
結果 C:按了什麼都沒有
回上一篇的第七步。這一關沒過就不要往下做 —— 接收端不通的話,下面每一次失敗你都不知道是協定錯還是收不到。
第四步:從遙控器型號查平台
型號在三個地方,通常至少找得到一個:
- 遙控器背面印的一串英數字
- 遙控器電池蓋打開裡面的貼紙
- 室內機右側或掀開前蓋的銘牌,上面的機型
ESPHome 內建的冷氣平台,就是下面這些(右欄是它能不能「偷聽」原廠遙控器,第四篇會用到):
|
|