前情提要:用 Homebridge 把家电都接入 HomeKit
當時使用的 homebridge-mi-air-purifier 這個插件,但有如下幾個問題:
- 不支持多個空氣淨化器接入
- 为了兼容 iOS 10,不支持 iOS 11 內建的空氣淨化器 API,而使用風扇作為替代
- 把调节風扇轉速作為更改淨化器工作模式方法
其中最後一點可以說是極不優雅,促使我去閱讀 homebridge 和 HAP-NodeJS 的 API 去改寫這一份插件,其中 HAP-NodeJS 的 HomeKitTypes.js 是一份重要的文檔,裡面有 HomeKit 所提供的接口的 API。这里是修改后的插件的 GitHub 地址,同時也發佈到了 npm,可以像安装絕大多數的 homebridge 插件一樣安裝它。
這個插件基於原本的插件進行了如下改進:
- 支持手動和自動模式之間的切換,對應小米空氣淨化器的自動和最愛模式
- 支持修改最愛模式下的淨化速度,小米提供的是 16 級可調,HomeKit 是 0% - 100%,已經做好映射。
- 將淨化器 LED 燈的開關映射為搖擺模式開關
- 將淨化器蜂鳴器的開關映射為兒童安全鎖開關
- 支持直接讀取 PM2.5 的數值
由於 HomeKit 的限制,暫時下面的功能是無法通過 Home App 控制的:
- 睡眠模式
- 童鎖模式
- 讀取運行時間
已知問題:
- 通過 Home App 開關淨化器時會顯示「正在開啟/關閉⋯⋯」,我個人猜測是 homebridge 或者是 HAP-NodeJS 的 Bug,相關討論。