技能誌

🪄《BLE + HomeKit = 更智慧的家庭,讓溫濕度出現在 Apple 家庭 App 裡!》

資訊/科技
奧提斯的頭像
奧提斯
更新日:2025年4月22日

在上一篇,我成功讓 BLE 裝置進入 HomeKit,實現了「嘿 Siri,開風扇」的美夢。但風扇還是得我自己按按鈕,哪夠智慧?

今天,我要把溫濕度感測資料送進 HomeKit,讓我的風扇知道什麼時候該自動開!


🌡️ 目標畫面

打開 Apple 家庭 App:

  • 出現一個「溫度感測器」配件
  • 顯示當前溫度(來自你 BLE 裝置的資料)
  • Siri 可以說出「目前室內溫度是 29 度」
  • 可設定 HomeKit 自動化:「溫度超過 30 度就開風扇」

是不是突然有一點像在玩《模擬城市:極簡智慧宅豪華 DLC》?


🧠 技術架構簡介

我們要做的是這個流程:

BLE Sensor  ➡  iOS App(or Node.js script)
        ➡  Homebridge Plugin(更新溫度 characteristic)
        ➡  HomeKit(顯示在 App 上)

我們不是真的在 BLE 裝置上跑 HAP(HomeKit Accessory Protocol),而是用 Homebridge 做中繼,讓 HomeKit 誤以為你 BLE 裝置是一個 Apple 認證的溫度計。


🧪 我是怎麼做的?

1️⃣ 裝好感測器,BLE 固件要能「廣播溫度/濕度」資料

你可以讓你的裝置定時透過廣播或 notify,發送溫濕度數據(GATT 的 characteristic)。像這樣:

// 簡化範例:廣播格式包含溫濕度資訊
uint8_t adv_data[] = { 0x02, 0x01, 0x06, 0x05, 0xFF, 0x01, 0x2A, 0x1E, 0x6B }; // 假設資料是 27.8°C

2️⃣ 使用 Homebridge Plugin 接收這些資料

我選擇的是:

你也可以自製 plugin,只要把感測值寫進 HomeKit 的 temperature service:

this.temperatureService
  .getCharacteristic(Characteristic.CurrentTemperature)
  .updateValue(28.5);

3️⃣ 想要歷史記錄?加上 fakegato-history 插件!

這樣 Apple 家庭 App 雖然沒記錄圖表,但你可以用 Eve App(免費)看到溫度折線圖!📈


🎯 Bonus:Apple 家庭 App 設定自動化

搞定感測器後,我做了這些設定:

  • 溫度 > 30°C:自動打開 HomeKit 智慧插座(接風扇)
  • 濕度 < 45%:自動開啟超音波加濕器

這種感覺就像是自己打造一個私人小型中央空調系統。


🤓 踩雷注意:

  • BLE 廣播頻率不要太快(建議 > 1 秒),避免干擾連線
  • Apple 家庭 App 不支援「濕度歷史圖表」,要看歷史請裝 Eve App
  • 請注意 BLE 連線次數有限,不要一次連好幾支 iPhone
  • Plugin 解析資料失敗?檢查 UUID 與資料格式,通常是 bytes 排錯了

📢 結語

現在,我已經不是用手開風扇的普通人,我是靠氣溫自動開風扇的高級人類。

下一篇,我要進一步自動化整合,把 BLE 感測器當成 HomeKit 的觸發事件,讓裝置之間自己協調工作 —— 你只要坐著喝冰美式,什麼都不用動。

iOS App 客製化 上架。
iOS 軟體開發、修改、維護既有App
IT/程式 > iPhone/iPad/Mac應用程式開發
$ 10000
iOS App 客製化 上架。
$ 10000
iOS App 客製化 上架。
0 / 1000
回到文章列表