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 初始化配网信息
LumiAccessSDKManager.getInstance().setAccessInfo(
positionId,
coapServer,
false,
object : LumiResultCallBack {
override fun fail(errorCode: Int?, errorMessage: String?) {
Log.e(TAG, "fail: errorCode=$errorCode,errorMessage=$errorMessage")
}
override fun success(activity: WeakReference<Activity>, message: String?) {
Log.e(TAG, "success: message=$message")
}
}
)
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| positionId | String | 房间位置 | 接口获取,详情参见Aqara开发者平台 |
| coapServer | String | 设备接入服务器 | 接口获取,详情参见Aqara开发者平台 |
3.2 Aqara Matter中枢配网
LumiAccessSDKManager.getInstance().gotoAccessConfigModule(
this,
"deviceModel",
object : LumiResultCallBack {
override fun fail(errorCode: Int?, errorMessage: String?) {
Log.e(TAG, "fail: errorCode=$errorCode,errorMessage=$errorMessage")
}
override fun success(activity: WeakReference<Activity>, message: String?) {
Log.e(TAG, "success: message=$message")
}
}
)
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| deviceModel | String | 设备模型值 | 参见附录支持的Aqara Matter中枢设备清单 |
3.3 Aqara Matter中枢设备控制
LumiReactNativeManager.getInstance().startRNPage("deviceModel", "deviceId")
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| deviceModel | String | 设备模型值 | 参见附录支持的Aqara Matter中枢设备清单 |
| deviceId | String | 设备Id | 设备配网成功后,会生成该设备id |
3.4 Matter子设备配网
LumiAccessSDKManager.getInstance().gotoAccessPageByMatter(
object : LumiResultCallBack {
override fun fail(errorCode: Int?, errorMessage: String?) {
Log.e(TAG, "fail: errorCode=$errorCode,errorMessage=$errorMessage")
}
override fun success(activity: WeakReference<Activity>, message: String?) {
Log.e(TAG, "success: message=$message")
}
}
)
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| matterDeviceModel | String | 设备模型值 | 参见附录支持的Matter子设备清单 |
| targetGatwayDeviceId | String | 设备Id | Matter子设备绑定的Matter中枢的设备Id,该字段可以为空,为空的话会自动查询当前网关列表以供选择 |
3.5 Matter子设备控制
LumiReactNativeManager.getInstance().startRNPage("aqara.matter.devices", "deviceId")
注意:Matter子设备统一使用aqara.matter.devices作为DeviceModel的参数传入。
参数说明
| 字段 | 数据类型 | 描述 | 获取渠道 |
|---|---|---|---|
| deviceId | String | 设备Id | 设备配网成功后,会生成该设备id |
3.6 事件监听
当用户在页面操作的过程中,点击某些按钮亦或者满足其他条件时,可以通过事件监听器来获得事件回调。例如点击按钮跳转到宿主App中的页面,或者第三方自定义的事件
3.6.1 注册&解绑
//注册
LumiReactNativeSDK.getInstance().registerRNMessageCallback(object :IRNMessageCallback{
override fun onHandleMessage(jsonMessage: String, promise: Promise?) {
//To Do Something
}
})
//解绑
LumiReactNativeSDK.getInstance().unregisterRNMessageCallback()
3.6.2 常见事件列表
| 事件 | 类型 | 描述 |
|---|---|---|
| action_access_success | 通知 | 设备入网成功后的事件,第三方App可以做一些自己的业务 |
| AddGatewway | 通知 | 绑定网关时,如果该账号下没有网关,会触发该事件,第三方App自行处理 |
3.7 RN插件
3.7.1 依赖本地插件文件
Matter SDK支持加载本地的插件文件,仅需将对应的文件放在目录中即可。
插件文件请放在assets/lumiRNPrefab/bundle目录中
依赖本地插件的情况下,不会从云端进行插件更新,如需更新,则需要开发自行将新版本的RN插件放到assets目录中,重新进行打包发版。
3.7.2 依赖远程插件文件
Matter SDK支持加载放在服务器的远程插件文件,并且支持热更新,可以与本地插件配合使用。
该功能涉及到远程插件文件的管理及下发,暂时不对外使用,如有需求,请联系商务。