?更新請關注:Matter協議開發者指南:使用Matter SDK構建智能家居應用
智能家居的演變從根本上改變了我們日常生活中與技術互動的方式。從語音助手到自動化照明和安防系統,機遇似乎無窮無盡。然而,開在這個迅速擴張的領域中,開發者面臨的最大挑戰之一是確保互操作性,即各種智能設備無論品牌或平臺如何,都能無縫協同工作的能力。
Matter是什么?為何它對智能家居協議至關重要?
MMatter 是一種全新的開源智能家居設備標準,旨在讓您家中所有聯網設備協同工作——無論品牌或平臺如何。可以將其視為所有智能設備的通用語言,無論是智能燈具、恒溫器、門鎖還是安防攝像頭。
在Matter出現之前,這就像一個令人沮喪的技術謎題。您可能擁有Alexa音箱、Google Nest恒溫器和其他品牌的智能燈泡,但它們并不總是能良好協作。這是因為每個品牌都使用自己的系統,要將它們全部連接起來非常麻煩。Matter改變了這種現狀。
為什么 Matter 對開發者和智能家居連接如此重要?
1. 萬物互聯
Matter確保無論您選擇哪個品牌,智能設備都能相互通信。無論是Apple、Amazon還是Google設備,它們都能在你家中無縫協同工作。
2. 增強安全性
Matter將安全功能直接內置于系統中。您的設備會對數據進行加密,確保一切安全無虞。這對于控制門鎖或攝像頭等設備來說無疑是一種極大的保障。
3. 開發者更輕松
對于開發者而言,Matter 意味著他們能夠創建一款適用于所有主流平臺的應用程序或解決方案。無需再為每個系統(如Google Home、Apple HomeKit或Alexa)重復造輪子。這不僅效率更高,還能節省大量時間。
4. 面向未來
蘋果、谷歌、亞馬遜等大公司都在支持Matter,這意味著它旨在跟上新技術和潮流的發展。它的設計初衷是支持未來的設備,因此您的智能設備不會很快過時。
5. 消費者更安心
對于普通人來說,MMatter 確保你能夠放心購買新的智能設備。你無需擔心這些設備能否能與你現有設備協同工作。無論是現在還是將來,所有設備都能輕松實現同步。
簡而言之,Matter通過將我們家中所有技術整合成一個連貫、安全且面向未來的系統,讓我們的生活更輕松、更智能。對于開發者和消費者來說都是一個變革性的存在,確保所有設備都能平穩、安全地協同工作。
本指南將指導您完成在 iOS 應用程序中添加 Matter 設備的過程,為您提供構建安全、可互操作且面向未來的智能家居解決方案所需的工具。
準備進入智能家居集成的世界吧!
我們將使用 HomeKit,輕松地把 Matter 設備作為配件添加到我們的 iOS 應用程序中。Apple推薦HomeKit作為將Matter設備集成到iOS生態系統的最佳解決方案。作為Apple設備上Matter的中央樞紐,HomeKit 提供了一種流暢且安全的方式來管理這些設備。它處理所有關鍵任務,包括設備認證、安全密鑰交換、網絡詳細信息共享以及設備設置。
通過使用 HomeKit,我們也在讓我們的應用程序具備面向未來的能力。Apple公司確保 HomeKit 與最新的 Matter 標準、iOS 更新、新設備類型以及安全改進保持一致,從而使我們的應用程序始終保持兼容性和時效性。
使用CHIP工具配置Matter設備模擬器進行智能家居開發
讓我們深入了解一下使用 CHIP(IP 上的連接家庭)工具配置 Matter 設備模擬器的過程。
運行Matter設備模擬器的先決條件和步驟:
步驟1:系統要求
對于macOS,請安裝以下先決條件:
brew?install?openssl
brew?install?pkg-config
brew?install?ninja
brew?installgit
brew?install?gcc
brew?install?python3
步驟2:設置開發環境
克隆Matter倉庫:
git?clone https://github.com/project-chip/connectedhomeip.git
導航到倉庫目錄:
cd?connectedhomeip
更新子模塊:
git?submodule update?--init
步驟3:構建環境設置
引導環境:
sh?./scripts/bootstrap.sh
激活環境:
source?scripts/activate.sh
注意:授予執行權限以使目錄可搜索/可訪問
chmod?+x scripts
步驟4:構建Lighting應用
在終端中執行以下命令以構建照明應用:
./scripts/examples/gn_build_example.sh examples/lighting-app/linux out/lighting-app
注意:執行此命令后,輸出目錄結構應如下所示:
connectedhomeip/
├── out/
│ ? └── lighting-app/
│ ? ? ? └── chip-lighting-app
├── scripts/
├── examples/
└── src/
步驟5:驗證網絡
檢查您的網絡接口:
ifconfig
對于WiFi,Mac上通常是en0
。
對于以太網,可能是en1
或其他接口。
步驟6:運行Matter Lighting模擬器
執行以下命令以啟動Matter照明模擬器:
./out/lighting-app/chip-lighting-app?--wifi--interface?en0
命令解析:
./out/lighting-app/chip-lighting-app
:Matter照明設備模擬器的可執行文件。
--wifi
:指示模擬器使用 WiFi 進行網絡連接。
--interface en0
:指定WiFi網絡接口(Mac上WiFi通常為
en0
)。
目的:
-
在本地網絡上模擬一個Matter照明設備。
-
使設備可被HomeKit發現。
-
允許將設備作為真實的Matter設備添加到您的Home應用中。
注意:
-
運行此命令時,請確保您位于
connectedhomeip
目錄中。 en0
通常是Mac上的WiFi接口;可以使用
ifconfig
命令驗證您的接口名稱。-
在嘗試將模擬器添加到應用程序之前,模擬器必須處于運行狀態。
完成!我們的Matter設備模擬器現在已在網絡上運行。要通過HomeKit添加Matter設備,只需掃描二維碼即可。您可以在控制臺日志中找到該URL。
在瀏覽器中打開URL后,您應該會看到一個二維碼。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
常見問題及解決方案
1. 構建失敗
如果構建失敗,請嘗試以下步驟:
-
清理構建:
rm-rf?out/lighting-app
-
使用Debugging重新構建:
./scripts/examples/gn_build_example.sh examples/lighting-app/linux out/lighting-app?--debug
2. Matter設備運行后無法添加配件
如果在 Matter 設備運行后無法添加配件,請按照以下步驟操作:
-
終止現有模擬器:
killall?chip-lighting-app
-
重新構建模擬器:
./out/lighting-app/chip-lighting-app –wifi –interface en0
配置并設置您的 iOS 應用程序,以便通過 HomeKit 添加 Matter 設備
步驟 1:注冊您的應用程序標識符,并在應用程序標識符設置和 Xcode 項目中啟用以下列出的功能
-
HomeKit
-
訪問WiFi信息
-
Matter允許設置負載?
步驟 2:添加所需的 Info.plist 條目
<!-- Home Kit --><key>NSHomeKitUsageDescription</key><string>This app needs access to HomeKit to control your Matter devices</string><!-- Local Network --><key>NSLocalNetworkUsageDescription</key><string>This app needs access to discover and control Matter devices on your local network</string><!-- Bonjour Services --><key>NSBonjourServices</key><array><string>_matter._tcp</string><string>_matterc._udp</string></array>
注意:iOS 開發先決條件:
-
Xcode 14.0 或更高版本
-
測試設備上的 iOS 16.1 或更高版本
-
Apple 開發者賬戶
步驟 3:在 iOS 中使用 HomeKit SDK 設置新Home
class MatterManager: NSObject {static let shared = MatterManager()let homeManager = HMHomeManager()var homesUpdateCallback: (() -> Void)?private override init() {super.init()homeManager.delegate = self}func createHome(named name: String, completion: @escaping (Result<Void, Error>) -> Void) {homeManager.addHome(withName: name) { [weak self] home, error inif let error = error {completion(.failure(error))} else {completion(.success(()))self?.homesUpdateCallback?()}}}...}
-
MatterManager 是一個單例類,可以通過 MatterManager.shared 來訪問。
-
HomeKit 管理器
let?homeManager?=HMHomeManager()
這將創建一個Apple HomeKit 管理器實例,該實例負責管理家庭、房間和配件。
-
創建Home方法
func?createHome(named name:String,completion:?@escaping(Result<Void,Error>)->Void){homeManager.addHome(withName:?name){[weak self]?home,?error?in...}}
在該函數內部,我們從 HMHomeManager 調用 homeManager.addHome (withName: name)。此方法負責使用提供的名稱將新home添加到 HomeKit 設置中。
步驟 4:將 Matter 設備作為配件集成到Home中
classMatterManager:NSObject{...privatelet?setupManager?=HMAccessorySetupManager()...func?addAccessory(to home:HMHome)async?throws?{let?setupManager?=HMAccessorySetupManager()let?request?=HMAccessorySetupRequest()// Configure the request for the homerequest.homeUniqueIdentifier=?home.uniqueIdentifier// Perform the setupdo{let?result?=tryawait?setupManager.performAccessorySetup(using:?request)print("Accessory setup completed successfully: \(result)")homesUpdateCallback?()}catch{print("Failed to setup accessory: \(error)")throw?error}}...}
HMAccessorySetupManager
?負責配置 Matter 設備。 在這個函數中,我們創建一個?HMAccessorySetupRequest
?并調用?performAccessorySetup
?方法,該方法將 Matter 設備添加到Home中。 這個過程是異步的,因為它執行以下任務:
-
發現網絡上的設備
-
處理安全握手
-
傳輸網絡憑據
-
完成 Matter 設備配網流程
注意:在添加配件之前,請確保您的 Matter 設備模擬器正在運行。有關設置,請參考 “使用 CHIP 工具配置 Matter 設備模擬器” 指南中的步驟。
此時, Matter 設備應會在您的 Home 應用中顯示為配件。您也可以在 Home 應用中進行驗證,在那里您會看到該配件已添加到您的Home中。
?步驟 5:控制Matter設備配件。
func?toggleLight(_ accessory:HMAccessory)async?throws?{guard?let?lightService?=?accessory.services.first(where:{?service?inservice.serviceType==HMServiceTypeLightbulb})else{throwHMError(.invalidParameter)}guard?let?powerCharacteristic?=?lightService.characteristics.first(where:{?characteristic?incharacteristic.characteristicType==HMCharacteristicTypePowerState})else{throwHMError(.invalidParameter)}// Toggle the current statelet?currentValue?=?powerCharacteristic.valueas?Bool??falsetryawait?powerCharacteristic.writeValue(!currentValue)}
toggleLight
?函數用于控制支持 HomeKit 的燈泡。
-
它會在配件的服務數組中搜索燈泡服務。具體來說,它會查找類型為?
HMServiceTypeLightbulb
?的服務。 -
然后,在該燈光服務中查找電源狀態特性。此特性代表燈泡的on/off狀態。
-
最后,執行實際的切換操作:讀取當前電源狀態(如果無法將該值讀取為布爾值,則默認為 false)。使用!運算符反轉該狀態。
當燈打開時,你應該在終端中看到控制臺日志顯示?Toggle on/off from state 0 to 1
。?
從狀態 0 切換到 1(on/off):
0 = OFF狀態
1 = ON狀態
設備正在從關閉切換到開啟
當燈光關閉時,你應該在終端中看到控制臺日志顯示?Toggle on/off from state 1 to 0
。
從狀態 1 切換到 0(on/off):
0 = OFF狀態
1 = ON狀態
設備正在從ON切換到OFF
Matter協議開發者指南:使用Matter SDK構建智能
總結
希望你在通過 HomeKit 使用 iOS 應用程序配置 Matter 設備的過程中,既感到愉快又覺得有用。這種集成提供了一種流暢的方式,可讓你直接從 iOS 應用程序控制智能設備,提升你的智能家居體驗。
更新請關注:Matter協議開發者指南:使用Matter SDK構建智能家居應用