多控关联

更新时间:2023-05-22 06:38:24

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

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

多控关联

限制条件

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

功能入口

ITuyaDeviceMultiControl iTuyaDeviceMultiControl = TuyaHomeSdk.getDeviceMultiControlInstance();

在区分主设备和附属设备时,查询的当前的设备 DP 关联的多控和自动化称为主设备,返回的数据关联的其他设备称为附属设备。

业务流程

多控关联

查询设备功能 DP 信息

接口说明

void getDeviceDpInfoList(String devId, ITuyaDataCallback<ArrayList<DeviceDpInfoBean>> callback);

参数说明

参数 说明
devId 设备 ID
callback 结果回调

示例代码

ITuyaDeviceMultiControl iTuyaDeviceMultiControl = TuyaHomeSdk.getDeviceMultiControlInstance();
iTuyaDeviceMultiControl.getDeviceDpInfoList(mDevId, new ITuyaDataCallback<ArrayList<DeviceDpInfoBean>>() {
    @Override
    public void onSuccess(ArrayList<DeviceDpInfoBean> result) {

    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

查询设备 DP 的关联情况

接口说明

void queryLinkInfoByDp(String devId, String dpId, ITuyaDataCallback<MultiControlLinkBean> callback);

参数说明

参数 说明
devId 设备 ID
dpId 设备 DP ID
callback 结果回调

示例代码

iTuyaDeviceMultiControl.queryLinkInfoByDp(mDevId, dpId, new ITuyaDataCallback<MultiControlLinkBean>() {
    @Override
    public void onSuccess(MultiControlLinkBean result) {

    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

MultiControlLinkBean 字段信息

字段 类型 说明
multiGroup MultiControlLinkBean.MultiGroupBean 已关联多控组数据结构
parentRules List<MultiControlLinkBean.ParentRulesBean> 已关联的场景自动化数据结构

MultiControlLinkBean.MultiGroupBean 字段信息

字段 类型 说明
uid String 用户 ID
groupName String 多控组名称
groupType int 多控组类型
multiRuleId String 规则 ID
id int 多控组 ID
ownerId String 家庭 ID
enabled boolean 是否开启多控组
status int 多控组状态
groupDetail List 多控组信息

GroupDetailBean 字段信息

字段 类型 说明
devId String 附属设备 ID
dpName String 已关联的附属设备的 DP 名称
multiControlId int 多控组 ID
dpId int 已关联的附属设备的 DP ID
devName String 已关联的附属设备的名称
enabled boolean 该已关联的附属设备是否可以通过多控功能控制
status int 多控组状态
datapoints List DP 信息

MultiControlDataPointsBean 字段信息

字段 类型 说明
code String DP 标准名称,即 dpCode
dpId int DP ID
name String DP 名称

ParentRulesBean 字段信息

字段 类型 说明
id String 自动化 ID
name String 自动化名称

查询支持多控的设备列表

接口说明

void getMultiControlDeviceList(long mHomeId, ITuyaDataCallback<ArrayList<MultiControlDevInfoBean>> callback);

参数说明

参数 说明
mHomeId 家庭 ID
callback 结果回调

示例代码

iTuyaDeviceMultiControl.getMultiControlDeviceList(Constant.HOME_ID, new ITuyaDataCallback<ArrayList<MultiControlDevInfoBean>>() {
    @Override
    public void onSuccess(ArrayList<MultiControlDevInfoBean> result) {
        iMultiControlDeviceView.setData(result);
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

MultiControlDevInfoBean 字段说明

字段 类型 说明
productId String 产品 ID
devId String 设备 ID
iconUrl String 设备图标
name String 设备名称
roomName String 房间名称
inRule boolean 是否已经关联到主设备
datapoints List DP 信息

添加、更新和删除多控组

接口说明

  • 添加一个新的多控组时,不需要传多控组 ID。添加一个新的多控组是把附属设备的 DP 和 主设备 DP 关联,所以 GroupDetail 中必须包含主设备的设备信息。
  • 更新多控组有两种方法,一种是通过 JSON 格式数据更新多控组,也可以使用 MultiControlBean。通过 MultiControlBean 可以实现:
    • 为主设备添加其他设备进入多控组
    • 更新多控组的名称
    • 更新多控组的设备
    • 删除多控组的设备
  • 删除一个多控组时,需要 GroupDetail 传空即可。
void saveDeviceMultiControl(long mHomeId, MultiControlBean multiControlBean, ITuyaResultCallback<MultiControlBean> callback);

void saveDeviceMultiControl(long mHomeId, String json, ITuyaResultCallback<MultiControlBean> callback);

参数说明

参数 说明
mHomeId 家庭 ID
MultiControlBean 多控组的数据结构
json 多控组的数据结构
callback 结果回调

JSON 完整数据结构如下:

{
    "groupName":"多控组 1",
    "groupType":1,
    "groupDetail":[{"devId":"adadwfw3e234ferf41","dpId":2, "id":22, "enable":true}],
    "id":22         //多控组 ID
}

groupType 必须传 1

示例代码

iTuyaDeviceMultiControl.saveDeviceMultiControl(Constant.HOME_ID, multiControlBean, new ITuyaResultCallback<MultiControlBean>() {
    @Override
    public void onSuccess(MultiControlBean result) {
        ToastUtil.shortToast(mContext,"success");
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

MultiControlBean 字段说明

字段 类型 是否可选 说明
groupName String 多控组名称
groupType int 多控组类型,固定传 1
groupDetail List 多控组设备信息
id int 多控组 ID

启用或禁用多控组

接口说明

void enableMultiControl(long multiControlId, ITuyaResultCallback<Boolean> callback);

void disableMultiControl(long multiControlId, ITuyaResultCallback<Boolean> callback);

参数说明

参数 说明
multiControlId 多控组 ID
callback 结果回调

示例代码

iTuyaDeviceMultiControl.enableMultiControl(id, new ITuyaResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        ToastUtil.shortToast(mContext,"success");
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

iTuyaDeviceMultiControl.disableMultiControl( id, new ITuyaResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        ToastUtil.shortToast(mContext,"success");
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

查询附属设备关联详情

接口说明

void getDeviceDpLinkRelation(String devId, ITuyaDataCallback<DeviceMultiControlRelationBean> callback);

参数说明

参数 说明
devId 设备 ID
callback 结果回调

示例代码


iTuyaDeviceMultiControl.getDeviceDpLinkRelation(devId, new ITuyaDataCallback<DeviceMultiControlRelationBean>() {
    @Override
    public void onSuccess(DeviceMultiControlRelationBean result) {
        L.d("MultiControlDeviceListPresenter",result.toString());
    }

    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});

DeviceMultiControlRelationBean 字段信息

字段 类型 说明
datapoints List DP 信息
mcGroups List 已关联的多控组信息
parentRules List 已关联的场景自动化信息