Matter協議開發者指南:使用Matter SDK構建智能家居應用

?更新請關注: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構建智能家居應用

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/85870.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/85870.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/85870.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

中科院1區TOP|IF8.3:廣西中醫藥大學團隊采用代謝組學-網絡藥理學整合策略,闡明雞骨草的多靶點作用機制

中科院1區TOP|IF8.3&#xff1a;廣西中醫藥大學團隊采用代謝組學-網絡藥理學整合策略&#xff0c;闡明雞骨草的多靶點作用機制 在當今生命科學研究領域&#xff0c;代謝性疾病的防治與傳統中藥的現代化研究已成為兩大備受矚目的熱點方向。隨著全球范圍內脂質代謝紊亂相關疾病發…

c++中 Lambda表達式

Lambda優化技巧 盡量使用值捕獲簡單類型 避免捕獲大型對象(使用引用或智能指針) 將不修改的捕獲標記為const 使用初始化捕獲移動語義資源 前言 1. Lambda表達式基本語法 [捕獲列表](參數列表) mutable(可選) 異常屬性(可選) -> 返回類型(可選) {// 函數體 } 捕獲列表…

睿是信息攜手Arctera,深化服務中國市場,共筑數據管理新未來

2025年6月23日&#xff0c;為了更加深入服務中國大陸地區的廣大用戶&#xff0c;上海睿是信息科技有限公司&#xff08;以下簡稱“睿是信息”&#xff09;與全球數據管理領域的領導者Arctera&#xff0c;雙方正式達成戰略合作&#xff0c;自2025年7月7日起&#xff0c;睿是信息…

【WebGIS系列】WebGIS 開發相關的資源

目錄 數據 GIS 軟件 地圖渲染庫 EPSG 相關工具 資源 以下為個人收集的與 WebGIS 開發相關的資源&#xff08;排名不分前后&#xff09;&#xff0c;歡迎補充。 數據 天地圖(opens in a new tab)國家統計局行政區劃(opens in a new tab)民政部全國行政區劃信息查詢平臺(…

【單調棧】-----【小A的柱狀圖】

小A的柱狀圖 題目鏈接 題目描述 柱狀圖是有一些寬度相等的矩形下端對齊以后橫向排列的圖形&#xff0c;但是小A的柱狀圖卻不是一個規范的柱狀圖&#xff0c;它的每個矩形下端的寬度可以是不相同的一些整數&#xff0c;分別為 a [ i ] a[i] a[i]&#xff0c;每個矩形的高度是…

MySQL 索引優化與慢查詢優化:原理與實踐

MySQL是一個廣泛使用的關系型數據庫管理系統&#xff0c;優化MySQL的性能對于保證應用的高效運行至關重要。本文將詳細介紹MySQL索引優化與慢查詢優化的原理和實踐方法。 一、MySQL索引優化 1.1 索引的基本概念 索引是一種用于提高數據庫查詢速度的數據結構。常見的索引類型…

【AS32系列MCU調試教程】應用開發:基于AS32芯片的流水燈功能實現

摘要&#xff1a; 本文以國科安芯的AS32系列MCU芯片為例&#xff0c;聚焦于基于 AS32 芯片的流水燈功能開發&#xff0c;深入闡述了開發環境搭建、工程配置以及調試等關鍵環節。通過詳盡的實驗過程與結果分析&#xff0c;旨在為相關領域技術人員提供一套系統、高效且成本可控的…

爬蟲001----介紹以及可能需要使用的技術棧

首先1??。。。全篇使用的技術棧當然是python了&#xff0c;畢竟作為一名點點點工程師&#xff0c;實際工作中做測試開發用的也是python&#xff0c;畢竟測試框架么&#xff0c;不需要什么"速度"。也會一點點cpp和js&#xff0c;但不多。什么&#xff1f;你說go和ja…

Java 中基于條件動態決定字段參與分組的實現方法

在 Java 的 Stream API 中&#xff0c;Collectors.groupingBy()方法為數據分組提供了強大的支持。通過它&#xff0c;我們可以輕松地將集合中的元素按照某個屬性進行分組&#xff0c;比如按照商品類別、日期等。然而&#xff0c;在實際業務場景中&#xff0c;有時需要根據特定條…

AppBarLayout+ CoordinatorLayout,ViewPager2為什么不會覆蓋AppBarLayout

<?xml version"1.0" encoding"utf-8"?> <layout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:app"http://schemas.android.com/apk/res-auto"xmlns:tools"http://schemas.android.com/tools&quo…

【群體智能優化算法系列 】一 粒子群算法 (Particle Swarm Optimization, PSO)

【群體智能優化算法系列 】一 粒子算法 一&#xff1a;前言二&#xff1a;算法原理2.1 核心思想2.2 PSO核心公式?2.3 PSO算法流程圖 三&#xff1a;python實現 二維Rastrigin函數 最低點檢索例子參考 一&#xff1a;前言 粒子群算法是由Kennedy和Eberhart在1995年提出的一種基…

Jupyter notebook調試:設置斷點運行

寫了一段小代碼&#xff0c;主要是用來測試一段序列的k均值聚類效果&#xff1b; 中間想到debug一下&#xff0c;但是想到自己似乎從來沒有正式地接觸過jupyter notebook中地debug&#xff0c;平時也只是多開幾個cell&#xff0c;然后在其他cell中復制粘貼部分代碼&#xff0c…

[12-2] BKP備份寄存器RTC實時時鐘 江協科技學習筆記(14個知識點)

1 2 3 4 5 6 7 8 RTC是“Real-Time Clock”的縮寫&#xff0c;中文意思是“實時時鐘”。這是一種在電子設備中使用的時鐘&#xff0c;它能夠提供準確的時間信息&#xff0c;即使在設備斷電的情況下也能繼續運行&#xff0c;因為它通常由一個小型電池供電。RTC廣泛應用于計算機…

優化給AI的“提問技巧”(提示工程),讓大型語言模型(比如GPT)更好地扮演“心理治療助手”的角色

優化給AI的“提問技巧”(提示工程),讓大型語言模型(比如GPT)更好地扮演“心理治療助手”的角色 尤其是在“問題解決療法”(PST)中幫助 caregivers(家庭護理者)緩解焦慮、疲勞等心理癥狀。以下是核心內容的通俗解讀: 一、研究背景:AI當心理醫生靠譜嗎? 現狀:全球…

Java的lambda表達式應用

Lambda表達式是Java 8引入的一項強大特性&#xff0c;它允許以更加簡潔的方式表示匿名函數。Lambda表達式不僅讓代碼更加簡潔、清晰&#xff0c;而且為函數式編程提供了有力支持&#xff0c;從而提升了Java語言的表達能力。 本文主要講解lambda應用stream處理集合的應用。 1、…

云原生/容器相關概念記錄

文章目錄 網絡與虛擬化技術云平臺與架構容器與編排容器網絡方案性能優化與工具硬件與協議 網絡與虛擬化技術 P4可編程網關 P4: Programming Protocol-independent Packet Processors一種基于P4語言的可編程網絡設備&#xff0c;支持自定義數據包處理邏輯。P4可編程技術詳解&am…

[C++] traits機制

文章目錄 C之type_traitsis_floating_point<T> ..的使用std::enable_if<T>::type的使用std::remove_cv 如何自定義traits C之type_traits is_floating_point …的使用 一般在定義打印模板函數的時候&#xff0c;當我們用printf進行終端日志打印&#xff0c;需要根…

OpenCV 視頻處理與保存

一、知識點 1、VideoCapture類 (1)、用于從視頻文件、攝像機或圖像序列中捕獲視頻幀。 (2)、構造函數 VideoCapture(const String & filename, int apiPreference CAP_ANY) a、filename可以是視頻文件的名稱(例如"video.avi")&#xff0c;可以是圖…

【Leetcode】字符串之二進制求和、字符串相乘

文章目錄 算法原理二進制求和題目鏈接題目描述解題思路代碼 字符串相乘題目鏈接題目描述解題思路代碼 算法原理 這兩道題都是屬于算法里一種經典題型&#xff1a;高精度加/減/乘/除法&#xff0c;需要我們模擬加/減/乘/除 列豎式運算。 二進制求和 題目鏈接 題目鏈接 題目描…

MongoDB:索引

目錄 1、索引數據結構&#xff1a;B-樹 2、索引類型 2.1 單字段索引 2.2 復合索引&#xff08;最重要&#xff01;&#xff09; 2.3 多鍵索引&#xff08;數組字段&#xff09; 2.4 地理空間索引 2.5 全文索引 2.6 哈希索引&#xff08;分片專用&#xff09; 2.7 TTL …