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 in

            if 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 home

        request.homeUniqueIdentifier= home.uniqueIdentifier

// Perform the setup

do{

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 in

            service.serviceType==HMServiceTypeLightbulb

})else{

throwHMError(.invalidParameter)

}

        guard let powerCharacteristic = lightService.characteristics.first(where:{ characteristic in

            characteristic.characteristicType==HMCharacteristicTypePowerState

})else{

throwHMError(.invalidParameter)

}



// Toggle the current state

let currentValue = powerCharacteristic.valueas?Bool??false

tryawait 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构建智能家居应用

相关推荐
华普微HOPERF1 天前
让温度“说话”,数字温度传感器如何智能感知温度?
科技·单片机·嵌入式硬件·物联网·智能家居
花开月满西楼3 天前
Android实例项目【智能家居系统】实现数据库登录注册+动画效果+网页跳转+短信发送!!!
android·数据库·智能家居
华一精品Adreamer3 天前
定制平板在智能家居中能做些什么?全面解析其核心功能
智能家居·平板
13631676419侯8 天前
ESP32-C3FH4X—低功耗、高集成度的 MCU 系统级芯片 (SoC)
嵌入式硬件·智能家居·芯片
riveting8 天前
明远智睿SD2351核心板:边缘计算时代的工业级核心引擎深度解析
人工智能·功能测试·音频·智能家居·边缘计算·智能硬件
深圳市青牛科技实业有限公司 小芋圆11 天前
GC1809:高性能音频接收与转换芯片
科技·单片机·嵌入式硬件·音视频·智能家居·新能源
学习噢学个屁11 天前
基于STM32物联网智能鱼缸智能家居系统
c语言·stm32·单片机·嵌入式硬件·物联网·智能家居
sg_knight16 天前
Flutter嵌入式开发实战 ——从树莓派到智能家居控制面板,打造工业级交互终端
android·前端·flutter·ios·智能家居·跨平台
陈奕昆17 天前
3.2 HarmonyOS NEXT跨设备任务调度与协同实战:算力分配、音视频协同与智能家居联动
音视频·智能家居·harmonyos