小米空氣淨化器 Homebridge 插件

前情提要:用 Homebridge 把家电都接入 HomeKit

當時使用的 homebridge-mi-air-purifier 這個插件,但有如下幾個問題:

  • 不支持多個空氣淨化器接入
  • 为了兼容 iOS 10,不支持 iOS 11 內建的空氣淨化器 API,而使用風扇作為替代
  • 把调节風扇轉速作為更改淨化器工作模式方法

其中最後一點可以說是極不優雅,促使我去閱讀 homebridgeHAP-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,相關討論