多控关联

更新时间:2023-05-25 06:23:48

设备多控关联是指设备的某个 DP 与另一个设备的某个 DP 之间建立关联,生成一个多控组。当控制多控组内某个建立 DP 关联的设备,组内其他设备关联的 DP 状态同步。

例如,三个二路 Zigbee 子设备开关,每个开关的第一个 DP 与另外两个开关的第一个 DP 建立多控组,当控制其中一个开关的第一个 DP 状态为关闭状态,另外两个开关的第一个 DP 同步关闭。

多控关联

限制条件

  • 目前限制设备功能的 Code(即 DPCode)是 switch_数字sub_switch_数字 类型。
  • 支持 Zigbee 子设备、蓝牙 Mesh 子设备类型的开关。
  • 支持跨 PID 添加设备。

功能说明

类名 说明
ThingSmartMultiControl 设备多控关联接口封装

业务流程

多控关联

查询设备的 DP

接口说明

从云端查询设备所有 DP 的多语言名称等信息。

- (void)getDeviceDpInfoWithDevId:(NSString *)devId success:(void (^)(NSArray<ThingSmartMultiControlDatapointModel *> *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 成功回调,即参数 NSArray<ThingSmartMultiControlDatapointModel *>
failure 失败回调

ThingSmartMultiControlDatapointModel 数据类型

字段 类型 说明
dpId NSString 设备 DP ID
name NSString 设备 DP 名称
code NSString 设备 DP 标准名称,即 dpCode
schemaId NSString 按键 DP 所属的 schema ID

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];
[multiControl getDeviceDpInfoWithDevId:@"your_devId" success:^(NSArray<ThingSmartMultiControlDatapointModel *> * list) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()
multiControl.getDeviceDpInfo(withDevId: "your_devId", success: { (list) in

}) { (error) in

}

查询 DP 的关联信息

接口说明

查询当前的设备 DP 关联的多控和自动化详情。当前设备称为为主设备,关联的其他设备称为附属设备。

- (void)queryDeviceLinkInfoWithDevId:(NSString *)devId dpId:(NSString *)dpId success:(void (^)(ThingSmartMultiControlLinkModel *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
devId 主设备 ID
dpId 主设备 DP ID
success 成功回调,即参数 ThingSmartMultiControlLinkModel *
failure 失败回调

ThingSmartMultiControlLinkModel 数据类型

字段 类型 说明
multiGroup ThingSmartMultiControlGroupModel 已关联多控组数据结构
parentRules NSArray<ThingSmartMultiControlParentRuleModel *> 已关联的场景自动化数据结构

ThingSmartMultiControlGroupModel 数据类型

字段 类型 说明
multiControlId NSString 多控组 ID
groupName NSString 多控组名称
groupType NSInteger 多控组类型
groupDetail NSArray<ThingSmartMultiControlGroupDetailModel *> 多控组信息
enabled BOOL 是否开启多控组
multiRuleId NSString 多种自动化的 ID
ownerId NSString 家庭 ID
uid NSString 用户 ID

ThingSmartMultiControlGroupDetailModel 数据类型

字段 类型 说明
detailId NSString 详情 ID
multiControlId NSString 多控组 ID
devId NSString 附属设备 ID
devName NSString 附属设备名称
dpId NSString 已关联的附属设备的 DP ID
dpName NSString 已关联的附属设备的 DP 名称
enabled BOOL 已关联的附属设备是否可以通过多控功能控制
datapoints NSArray<ThingSmartMultiControlDatapointModel *> DP 信息

ThingSmartMultiControlParentRuleModel 数据类型

字段 类型 说明
ruleId NSString 自动化 ID
name NSString 自动化名称

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];
[multiControl queryDeviceLinkInfoWithDevId:@"your_devId" dpId:@"your_dpId" success:^(ThingSmartMultiControlLinkModel * model) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()
multiControl.queryDeviceLinkInfo(withDevId: "your_devId", dpId: "your_dpId", success: { (linkModel) in

}) { (error) in

}

新增多控组

接口说明

- (void)addMultiControlWithDevId:(NSString *)devId groupName:(NSString *)groupName groupDetail:(NSArray<ThingSmartMultiControlDetailModel *> *)groupDetail success:(void (^)(ThingSmartMultiControlModel *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
devId 主设备 ID
groupName 多控组名称
groupDetail 多控组关联详情(参数 NSArray<ThingSmartMultiControlDetailModel *>)
success 成功回调
failure 失败回调

ThingSmartMultiControlDetailModel 数据类型

字段 类型 说明
detailId NSString
devId NSString 附属设备 ID
dpId NSString 已关联的附属设备的 DP ID
enable BOOL 已关联的附属设备是否可以通过多控功能控制

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];

ThingSmartMultiControlDetailModel *detailModel = [[ThingSmartMultiControlDetailModel alloc] init];
detailModel.dpId = @"";
detailModel.devId = @"";
detailModel.enable = true;

[multiControl addMultiControlWithDevId:@"your_devId" groupName:@"groupName" groupDetail:@[detailModel] success:^(ThingSmartMultiControlModel * model) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()

let detail = ThingSmartMultiControlDetailModel.init()
detail.devId = ""
detail.dpId = ""
detail.enable = true

multiControl.add(withDevId: "your_devId", groupName: "groupName", groupDetail: [detail], success: { (model) in

}) { (error) in

}

更新多控组的名称或设备列表

接口说明

实现为主设备添加其他设备进入多控组,可以更新多控组名称,更新多控组内的设备列表。

更新方式为全量更新。

- (void)updateMultiControlWithDevId:(NSString *)devId multiControlModel:(ThingSmartMultiControlModel *)model success:(void (^)(ThingSmartMultiControlModel *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
devId 主设备 ID
model 多控组的数据结构
success 成功回调
failure 失败回调

ThingSmartMultiControlModel 数据类型

字段 类型 说明
multiControlId NSString 多控组 ID
groupName NSString 多控组名称
groupType NSInteger 多控组类型,默认为 1
groupDetail NSArray<ThingSmartMultiControlDetailModel *> 多控组信息

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];

ThingSmartMultiControlDetailModel *detailModel = [[ThingSmartMultiControlDetailModel alloc] init];
detailModel.detailId = @"";
detailModel.dpId = @"";
detailModel.devId = @"";
detailModel.enable = true;

ThingSmartMultiControlModel *model = [[ThingSmartMultiControlModel alloc] init];
model.multiControlId = @"";
model.groupName = @"";
model.groupType = 1;

model.groupDetail = @[detailModel];

[multiControl updateMultiControlWithDevId:@"your_devId" multiControlModel:model success:^(ThingSmartMultiControlModel * model) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()

let detailModel = ThingSmartMultiControlDetailModel.init()
detailModel.detailId = ""
detailModel.dpId = ""
detailModel.devId = ""
detailModel.enable = true

let model = ThingSmartMultiControlModel.init()
model.multiControlId = ""
model.groupName = ""
model.groupDetail = [detailModel]
multiControl.update(withDevId: "your_devId", multiControlModel: model, success: { (model) in

}) { (error) in

}

启用或禁用多控组

接口说明

- (void)enableMultiControlWithMultiControlId:(NSString *)multiControlId enable:(BOOL)enable success:(ThingSuccessBOOL)success failure:(ThingFailureError)failure;

参数说明

参数 说明
multiControlId 多控组 ID
enable 启用或停用
success 成功回调
failure 失败回调

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];
[multiControl enableMultiControlWithMultiControlId:@"multiControlId" enable:true/false success:^(BOOL result) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()
multiControl.enableMultiControl(withMultiControlId: "multiControlId", enable: true, success: { (result) in

}) { (error) in

}

查询支持多控的设备列表

接口说明

查询支持多控的设备列表,包括用户的和家庭的。

- (void)getMultiControlDeviceListWithHomeId:(long long)homeId success:(void (^)(NSArray<ThingSmartMultiControlDeviceModel *> *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
homeId 家庭 ID
success 成功回调,即参数 NSArray<ThingSmartMultiControlDeviceModel *>
failure 失败回调

ThingSmartMultiControlDeviceModel 数据类型

字段 类型 说明
devId NSString 设备 ID
productId NSString 产品 ID
name NSString 设备名称
iconUrl NSString 设备图标下载链接
roomName NSString 所在房间名
inRule BOOL 该设备是否在自动化的条件中
datapoints NSArray<ThingSmartMultiControlDatapointModel *> DP 信息
multiControlIds NSArray<NSString *> 设备已被关联的多控组 ID 数组

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];
[multiControl getMultiControlDeviceListWithHomeId:123 success:^(NSArray<ThingSmartMultiControlDeviceModel *> * list) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()
multiControl.getDeviceList(withHomeId: 123, success: { (list) in

}) { (error) in

}

查询附属设备的关联情况

接口说明

查询附属设备的 DP 信息、已关联的多控、自动化信息。

- (void)queryDeviceDpRelationWithDevId:(NSString *)devId success:(void (^)(ThingSmartMultiControlDpRelationModel *))success failure:(ThingFailureError)failure;

参数说明

参数 说明
devId 设备 ID
success 成功回调,即参数 ThingSmartMultiControlDpRelationModel *
failure 失败回调

ThingSmartMultiControlDpRelationModel字段说明

字段 类型 说明
datapoints NSArray<ThingSmartMultiControlDatapointModel *> DP 信息
mcGroups NSArray<ThingSmartMcGroupModel *> 已关联的多控组信息
parentRules NSArray<ThingSmartMultiControlParentRuleModel *> 已关联的自动化信息

ThingSmartMcGroupModel 数据类型

字段 类型 说明
multiControlId NSString 多控组 ID
groupName NSString 多控组名称
groupDetail NSArray<ThingSmartMcGroupDetailModel *> 多控组关联详情
enabled BOOL 多控组是否可用
groupType NSInteger 多控组类型
multiRuleId NSString
ownerId NSString 家庭 ID
uid NSString 用户 ID

ThingSmartMcGroupDetailModel 数据类型

字段 类型 说明
detailId NSString
dpId NSString DP ID
dpName NSString DP 名称
devId NSString 设备 ID
devName NSString 设备名称
enabled BOOL 是否可用
multiControlId NSString 多控组 ID

示例代码

Objc:

ThingSmartMultiControl *multiControl = [[ThingSmartMultiControl alloc] init];
[multiControl queryDeviceDpRelationWithDevId:@"your_devId" success:^(ThingSmartMultiControlDpRelationModel * model) {

} failure:^(NSError *error) {

}];

Swift:

let multiControl = ThingSmartMultiControl.init()
multiControl.queryDeviceDpRelation(withDevId: "your_devId", success: { (model) in

}) { (error) in

}