Matter垂直品类SDK使用
一、概述
本文主要介绍如何使用Matter垂直品类SDK对Aqara Matter中枢进行配网,以及对Matter子设备进行配网。
PS:当前Matter子设备无法直接通过SDK配网接入,需要借助Aqara Matter中枢(使用Aqara私有协议Magic Pair配网)进行接入后,才可以进行设备配网
二、前置条件
- 完成准备工作
- 完成环境搭建
- 完成Matter垂直品类SDK集成
三、使用
Matter子设备的配网依赖于Aqara Matter中枢,因此需要先入网一个Aqara Matter中枢后,才能进行Matter子设备配网。
3.1 初始化配网信息
/**
设置设备入网信息
Config Device Access Net Info
*/
[LMAccessNetUISDK.sharedInstance setTimeZone:@"Your TimeZone"]; // "GMT+08:00"
[LMAccessNetUISDK.sharedInstance setTimeZoneName:@"Your TimeZone Name"]; // "Asia/Shanghai"
[LMAccessNetUISDK.sharedInstance setAccessNetHomeId:@"Your HomeId]; // Required
[LMAccessNetUISDK.sharedInstance setAccessNetHomeName:@"Your HomeName"]; // Optional
[LMAccessNetUISDK.sharedInstance setAccessNetRoomId:@"Your RoomId"]; // Optional
[LMAccessNetUISDK.sharedInstance setAccessNetRoomName:@"Your RoomName"]; // Optional
/**
Matter Required
*/
[LMAccessNetUISDK.sharedInstance setEcosystemName:@"Your Apple Home Name"];
[LMAccessNetUISDK.sharedInstance setAppGroupId:@"Your App GroupId"];
/**
设置设备入网信息
Config Device Access Net Info
*/
LMAccessNetUISDK.sharedInstance().setTimeZone("Your TimeZone") // "GMT+08:00"
LMAccessNetUISDK.sharedInstance().setTimeZoneName("Your TimeZone Name") // "Asia/Shanghai"
LMAccessNetUISDK.sharedInstance().setAccessNetHomeId("Your HomeId") // Required
LMAccessNetUISDK.sharedInstance().setAccessNetHomeName("Your HomeName") // Optional
LMAccessNetUISDK.sharedInstance().setAccessNetRoomId("Your RoomId") // Optional
LMAccessNetUISDK.sharedInstance().setAccessNetRoomName("Your RoomName") // Optional
/**
Matter Required
*/
LMAccessNetUISDK.sharedInstance().setEcosystemName("Your Apple Home Name")
LMAccessNetUISDK.sharedInstance().setAppGroupId("Your App GroupId")
重要
Matter设备接入时需保证宿主工程的AppGroupId 与 MatterExtension 的AppGroupId 保持一致。
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| TimeZone | String | 时区 | - |
| TimeZoneName | String | 时区名称 | - |
| homeId | String | 家庭ID | 接口获取,详情参见Aqara开发者平台 |
| homeName | String | 家庭名称 | 可选参数 |
| roomId | String | 房间ID | 可选参数 |
| roomName | String | 房间名称 | 可选参数 |
| ecosystemName | String | Apple 家庭名称 | - |
| appGroupId | String | App组ID | 用于宿主App与Extension同步数据的ID |
3.2 Aqara Matter中枢/子设备配网
__weak typeof(self) weakSelf = self;
// 配网结果回调
LMAccessNetUISDK.sharedInstance.accessNetCallBack = ^(id _Nonnull response, NSError * _Nonnull error, __kindof UIViewController * _Nonnull controller) {
if (error) {
[LHTipsUtils showError:error];
} else {
[LMAccessNetUISDK.sharedInstance popToPreAccessNetPage];
}
};
// 配网,参数为设备模型值
[[LMAccessNetUISDK sharedInstance] presentSingleDeviceAccessNetWithModel:@"Your Device Model" completion:^(UIViewController * _Nonnull controller, NSError * _Nonnull error) {
if (error){
[LHTipsUtils showError:error];
} else {
LMNavigationController *nc = [[LMNavigationController alloc] initWithRootViewController:controller];
nc.modalPresentationStyle = UIModalPresentationOverFullScreen;
[weakSelf.navigationController presentViewController:nc animated:YES completion:nil];
}
}];
// 配网结果回调
LMAccessNetUISDK.sharedInstance().accessNetCallBack = { response, error, vc in
if let e = error {
LHTipsUtils.showError(e)
} else {
LMAccessNetUISDK.sharedInstance().popToPreAccessNetPage()
}
}
// 配网,参数为设备模型值
LMAccessNetUISDK.sharedInstance().presentSingleDeviceAccessNet(withModel: model) {
[weak self] vc, error in
if let rootVc = vc {
let nc = LMNavigationController(rootViewController: rootVc)
nc.modalPresentationStyle = .overFullScreen
self?.navigationController?.present(nc, animated: true)
} else if let e = error {
LHTipsUtils.showError(e)
}
}
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| deviceModel | String | 设备模型值 | 参见附录支持的Aqara Matter中枢设备清单 |