作為一個設計師,我用了一晚時間入門 Android 開發并寫了一個「為你的米家提供完整的 HomeKit 接入方案」

作為一個設計師,我用了一晚時間入門 Android 開發并寫了一個「為你的米家提供完整的 HomeKit 接入方案」

庫倪庫倪
Homebridge 方案一直鑒於米家開放度不足,所以總是不能把所有的米家設備都控制起來,我已經不爽很久了。終於,我把它解決了。

項目地址

qoli/MiHomePlus
qoli/MiPlusServer

操作原理

  • 調用「無障礙」特性,監視和控制米家 App,當「TYPE_WINDOW_CONTENT_CHANGED」觸發時候,與 MiPlusServer 同步設備狀態。
  • 與 MiPlusServer 透過 Socket.io 觸發 MIHomePlus 進行狀態切換。
  • 在 Homebridge 基於 Switcheroo 插件提供操作接口。
  • 所以 MiPlusServer 本質是 Web 接口

項目起因

天氣開始熱起來了,某日突發奇想,買了一個 NanoPi。

Nano Pi

搭建了很 Cool 的 HomeBridge。

後來數日后,歡喜地買了一個小米的空調伴侶。悲劇就從而而生了。

悲劇

小米的空調伴侶,竟然是不支持裝好的 Homebridge !
我無法接受的我,開始了浪費生命的折騰。

Android ADB 腳本方案

鑒於我只是一個設計師而言,我首先想到的辦法,是基於 Android ADB 指令,透過數據線去操作 Android 手機作為代理。
在大約 30 分鐘 ~ 60 分鐘后,我寫出了像樣的腳本了。

把 ADB 方案集成到 HomeKit

在集成到 Homebridge 時候就遇到大問題了。調用腳本操作時候一切都好,但是就是無法在 HomeKit 使用。我上網檢查了文檔,發現 HomeKit 最長允許 2s 以內的指令,然而,我這個模擬方案,指令時長達到 30s 以上。
所以,只能放棄此 ADB 方案。

尋覓新方案,基於 Android Accessibility

我作為人生從沒開發過 Android / iOS 的設計師。只會前端 / Nodejs / PHP 這三個語言。
經過我一番搜索之後,我看到 Accessibility 相關的代碼好像特別簡單。
所以,我決定下載一個 Android Studio 來啟動我的 Android 之旅。

寫起來,發現 Android 開發其實不難

經過了 2 天時間,我終於把能用的 Android App 寫好了。我沒有覺得太多坑,我只是覺得英文資料太多,看起來很累而已。除了每次編譯的速度真的很慢之外,其他都還挺好的。

在寫的過程中,我都很少去看文檔,主要依賴 Google 知識點,閱讀別人的源代碼,很快地,就把核心功能組裝好了。又花了 120 分鐘時間,把服務器通信部分也組裝好了。

又花了好多好多時間,把 Socket IO 也折騰好了。

服務器端﹣Nodejs

Nodejs 部分最為簡單了,畢竟還是熟悉的嘛~簡單的接口就折騰好了。

Homebridge 接口

Homebridge 使用了 homebridge-switcheroo 作為通信插件,搞定。


一切的都搞定了,除了程序配置化

演示視頻:youtu.be/qDAgBuW29lY


關於小米的特殊設定

需要把 MiHomePlus 設定為無限制模式。

這樣就可以持續運作 20 分鐘都沒問題咯。


Telegram Bot

加入了 Telegram BOT 來看看服務器是否還在哦~ nice。


文章被以下专栏收录
8 条评论
推荐阅读