Apple HomeKit


HomeKit is a framework for communicating with and controlling connected home automation accessories that support Apple’s HomeKit Accessory Protocol. HomeKit apps enable users to discover compatible accessories and configure them.

智能家居是一個Apple提供的一個框架,在該框架下,可以鏈接和控制支持Apple HAP(HomeKit Accessary Protocol)協議的配件。用戶可以通過智能家居APP來尋找兼容的配件並配置他們。

HomeKit簡介

智能家居是Apple在iOS 8發佈的時候就提出來,經歷iOS 9的發展,在iOS 10發佈的時候作爲一個應用融入到系統中。HomeKit目前可以控制開關、電燈、空調等智能設備,檢測室內溫度、溼度等指標。Apple推出Homekit致力爲市面上主流智能家居設備搭建一個智能家居平臺,建立一個統一適用的標準,創建智能家居的生態環。


註釋
關於 Nordic Semiconductor ASA
關於nRF51系列
nRF51系列藍牙智能SDK、開發工具和參考設計

HAP協議

Apple推出了自家智能家居平臺的一個標準協議:HomeKit Accessary Protocol。只有通過MFi(Made for iOS)認證的機構才能拿到HAP協議,針對HomeKit設計生產配套的智能硬件設備。常見的正品配件如充電線、數據線產品上都會印MFi授權logo,因爲代表Apple品牌形象,所以認證過程非常嚴格,通過率爲2%,而且無法以個人開發者身份加入。

除了官方的給出的協議支持途徑外,可以通過第三方硬件廠商開發的SDK來進行智能硬件開發。例如:挪威的專業射頻廠商奧斯陸於2015年6月29日宣佈提供用於nRF51系列藍牙智能SoC的HomeKit解決方案。新型SDK結合nRF51 系列藍牙智能SoC,爲開發人員提供了用於HomeKit產品的獨特解決方案。丹麥企業Poly-Control基於上述方案,開發了創新、時尚的無鑰匙門鎖Danalock。

也有人在Github發佈了自己逆向HAP協議的開源代碼,通過樹莓派開發版開發的支持HAP協議的智能硬件,相應的開源有HAP-NodeJS和hc等。這種做法成本相對較小,但是提交Apple Store的APP可能因此被拒,畢竟是逆向出Apple的協議,沒有走正規渠道。

最後一種方法是通過橋接的方式,Apple對這種方式的功能限制比較多。作爲對比,橋接外設可以將 iOS 設備與非 HomeKit 外設鏈接。橋接設備將通過 HomeKit 協議與 iOS 設備通信,並使用其他無線/傳輸協議,比如 ZigBee、Z-Wave 與非 HomeKit 外設通信。這也意味橋接設備將允許 Siri 控制非 HomeKit 設備。能橋接至 Homekit 的設備非常有限。比如,蘋果不允許家庭自動化外設通過 WiFi 鏈接,比如 Nest 恆溫器。蘋果將允許一些藍牙低能耗外設進行橋接,不過僅限於沒有提供給用戶控制的家庭電器,比如一款非 MFi 授權的藍牙燈泡產品不會被連接。

蘋果將允許不會提供控制的家電與 HomeKit 連接。只有提供數據給 HomeKit 的家用電器纔可以支持橋接。通過 Siri 無線控制家用電器需要 Apple TV 在網絡之中。這也意味着家用電器不能進行遠程控制。

附HomeKit的審覈指導:
26.1 使用HomeKit框架的應用程序必須有提供家庭自動化服務的主要目的。
26.2 使用HomeKit框架的應用程序必須在營銷文本中說明用法,同時必須提供隱私政策,否則將會被拒絕。
26.3 應用程序不允許將從HomeKit API收集的數據用於廣告宣傳或者其他基於使用的數據挖掘。
26.4 出於其他目的使用從HomeKit API收集的數據,而不是用於提高用戶體驗或者家庭自動化功能中硬件/軟件性能,這類應用將會被拒絕。

HomeKit Software Development

HomeKit同其他的kit一樣是Apple官方提供的框架,最低支持iOS 8和Xcode 6
啓用HomeKit的步驟如下:
1. 在Xcode中,選擇View > Navigators > Show Project Navigator;
2. 從Project/Targets彈出菜單中target(或者從Project/Targets的側邊欄)
3. 點擊Capabilities查看你可以添加的應用服務列表;
4. 滑到HomeKit 所在的行並打開關。

如果沒有智能硬件調試,Apple 提供HomeKit Accessory Simulator來測試HomeKit app和模擬配件設備之間的通信,需要單獨下載:
1. 在Capabilities面板的HomeKit分區,點擊Download HomeKit Accessory Simulator按鈕。(或者選擇Xcode > Open Developer Tool > More Developer Tools)
2. 在瀏覽器中搜索並且下載”Hardware IO Tools for Xcode “.dmg文件。
3. 在 Finder中雙擊~/Downloads中的.dmg文件。
4. 把HomeKit Accessory Simulator拖拽到/Application文件中。

HomeKit佈局介紹:

用戶以home爲單位在APP中創建佈局,可以創建一個或多個home。

每個Home一般有多個room,並且每個room一般會有多個智能配件,並且有自己獨立的名字,可以搭配Siri使用。room中的智能配件爲accessary,例如車庫開門器,燈,開關等。

同時,HomeKit還提供區域劃分,不同的room可以分類到同一片zone,例如可以根據樓上、樓下來劃分。

HMService,每個配件都有它的屬性和服務,一個車庫開門器可能擁有一個照明和開關的服務。照明服務可能擁有打開/關閉和調節亮度的特性。用戶不能製造智能家電配件和它們的服務-配件製造商會製造配件和它們的服務-但是用戶可以改變服務的特性。一些擁有可讀寫屬性的特性代表着某種物理狀態,比如,一個恆溫器中的當前溫度就是一個只可讀的值,但是目標溫度又是可讀寫的。蘋果預先定義了一些服務和特性的名稱,以便讓Siri能夠識別它們。

HMAction,寫入動作會向一個服務的特性寫入值並被加入到動作集合中去。HMAction類是HMCharacteristicWriteAction具體類的抽象基類。一個動作有一個相關聯的特性對象,你可以通過Accessing Services and Characteristics中描述的來獲取相關的服務和特性,然後創建這個HMCharacteristicWriteAction。

HMTrigger,觸發器會執行一個或多個動作集。iOS會在後臺管理和運行你的觸發器。HMTrigger類是HMTimerTrigger具體類的抽象類。當你創建一個定時觸發器時,你需要指定觸發時間和觸發的週期。創建並開啓一個定時觸發器需要多個步驟來完成。

觀察HomeKit數據庫的變化

由於Homekit支持iCloud服務,一個賬號可以在多臺設備上使用,管理員可以添加訪客。每個Home都有一個HomeKit數據庫。如下圖所示,HomeKit數據庫會安全地和home授權的用戶的iOS設備以及潛在的客人的iOS設備進行同步。爲了給用戶展示當前最新的數據,你的應用需要觀察HomeKit數據庫的變化。

HomeKit通過代理的方式告知該設備上其他使用HomeKit的應用,數據發生變化;通過通知推送的方式,來告知不同設備上使用HomeKit的應用,數據發生變化。

參考資料:
谷歌I/O大會發布智能家居Google Home

蘋果詳解HomeKit兼容性 支持非認證設備

What protocol does HomeKit use to communicate with its devices?

折騰 Raspberry Pi + HomeKit 手記

關於 BlueTooth 的疑問

基於nRF51系列藍牙智能SoC的HomeKit解決方案

Introduction to HomeKit

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章