Last Updated on : 2024-03-04 08:46:20
Multi-control linkage is a device control feature. In this feature, a device data point (DP) is linked with a DP of another device to create a multi-control group. When a device of the multi-control group is controlled, the linked status of other devices in the group is synchronously changed.
For example, 3 two-gang Zigbee sub-device switches, the first DP of each switch is linked with the first DP of the other two switches to create a multi-control group. When the first DP for one of these switches is set to off, the first DP of the other two switches is synchronously set to off.

switch_number and sub_switch_number.IThingDeviceMultiControl iThingDeviceMultiControl = ThingHomeSdk.getDeviceMultiControlInstance();
You can query the multi-control and automation scene data linked with a specified DP of the current device. This device is regarded as the main device and the associated devices are regarded as auxiliary devices.
 
API description
void getDeviceDpInfoList(String devId, IThingDataCallback<ArrayList<DeviceDpInfoBean>> callback);
Parameters
| Parameter | Description | 
|---|---|
| devId | The device ID. | 
| callback | The callback. | 
Example
IThingDeviceMultiControl iThingDeviceMultiControl =ThingHomeSdk.getDeviceMultiControlInstance();
iThingDeviceMultiControl.getDeviceDpInfoList(mDevId, new IThingDataCallback<ArrayList<DeviceDpInfoBean>>() {
    @Override
    public void onSuccess(ArrayList<DeviceDpInfoBean> result) {
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
API description
void queryLinkInfoByDp(String devId, String dpId, IThingDataCallback<MultiControlLinkBean> callback);
Parameters
| Parameter | Description | 
|---|---|
| devId | The device ID. | 
| dpId | The DP ID of the device. | 
| callback | The callback. | 
Example
iThingDeviceMultiControl.queryLinkInfoByDp(mDevId, dpId, new IThingDataCallback<MultiControlLinkBean>() {
    @Override
    public void onSuccess(MultiControlLinkBean result) {
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
Fields of MultiControlLinkBean
| Field | Type | Description | 
|---|---|---|
| multiGroup | MultiControlLinkBean.MultiGroupBean | The data structure of the associated multi-control group. | 
| parentRules | List<MultiControlLinkBean.ParentRulesBean> | The data structure of the associated automation scene. | 
Fields of MultiControlLinkBean.MultiGroupBean
| Field | Type | Description | 
|---|---|---|
| uid | String | The user ID. | 
| groupName | String | The name of the multi-control group. | 
| groupType | int | The type of multi-control group. | 
| multiRuleId | String | The rule ID. | 
| id | int | The multi-control group ID. | 
| ownerId | String | The home ID. | 
| enabled | Boolean | Specifies whether to enable this multi-control group. | 
| status | int | The status of the multi-control group. | 
| groupDetail | List | The details of the multi-control group. | 
Fields of GroupDetailBean
| Field | Type | Description | 
|---|---|---|
| devId | String | The auxiliary device ID. | 
| dpName | String | The linked DP name of the auxiliary device. | 
| multiControlId | int | The multi-control group ID. | 
| dpId | int | The linked DP ID of the auxiliary device. | 
| devName | String | The name of the auxiliary device. | 
| enabled | Boolean | Indicates whether the associated auxiliary device can be controlled with a multi-control linkage. | 
| status | int | The status of the multi-control group. | 
| datapoints | List | The DP data. | 
Fields of MultiControlDataPointsBean
| Field | Type | Description | 
|---|---|---|
| code | String | The DP identifier denoted by dpCodeof the device. | 
| dpId | int | The DP ID. | 
| name | String | The name of the DP. | 
Fields of ParentRulesBean
| Field | Type | Description | 
|---|---|---|
| id | String | The automation scene ID. | 
| name | String | The name of the automation scene. | 
API description
void getMultiControlDeviceList(long mHomeId, IThingDataCallback<ArrayList<MultiControlDevInfoBean>> callback);
Parameters
| Parameter | Description | 
|---|---|
| mHomeId | The home ID. | 
| callback | The callback. | 
Example
iThingDeviceMultiControl.getMultiControlDeviceList(Constant.HOME_ID, new IThingDataCallback<ArrayList<MultiControlDevInfoBean>>() {
    @Override
    public void onSuccess(ArrayList<MultiControlDevInfoBean> result) {
        iMultiControlDeviceView.setData(result);
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
Fields of MultiControlDevInfoBean
| Field | Type | Description | 
|---|---|---|
| productId | String | The product ID. | 
| devId | String | The device ID. | 
| iconUrl | String | The URL of a device icon. | 
| name | String | The name of the device. | 
| roomName | String | The name of a room. | 
| inRule | Boolean | Indicates whether the device is linked with the main device. | 
| datapoints | List | The DP data. | 
API description
GroupDetail must include information about the main device.MultiControlBean. You implement the following features with MultiControlBean:
GroupDetail to an empty value.void saveDeviceMultiControl(long mHomeId, MultiControlBean multiControlBean, IThingResultCallback<MultiControlBean> callback);
void saveDeviceMultiControl(long mHomeId, String json, IThingResultCallback<MultiControlBean> callback);
Parameters
| Parameter | Description | 
|---|---|
| mHomeId | The home ID. | 
| MultiControlBean | The data structure of the multi-control group. | 
| json | The data structure of the multi-control group. | 
| callback | The callback. | 
The following code block shows the full data structure in the JSON format:
{
    "groupName":"Multi-control group 1",
    "groupType":1,
    "groupDetail":[{"devId":"adadwfw3e234ferf41","dpId":2, "id":22, "enable":true}],
    "id":22         // The multi-control group ID.
}
groupType must be 1.
Example
iThingDeviceMultiControl.saveDeviceMultiControl(Constant.HOME_ID, multiControlBean, new IThingResultCallback<MultiControlBean>() {
    @Override
    public void onSuccess(MultiControlBean result) {
        ToastUtil.shortToast(mContext,"success");
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
Fields of MultiControlBean
| Field | Type | Optional | Description | 
|---|---|---|---|
| groupName | String | Yes | The name of the multi-control group. | 
| groupType | int | No | The type of multi-control group. The value is 1. | 
| groupDetail | List | Yes | The device details of the multi-control group. | 
| id | int | Yes | The multi-control group ID. | 
API description
void enableMultiControl(long multiControlId, IThingResultCallback<Boolean> callback);
void disableMultiControl(long multiControlId, IThingResultCallback<Boolean> callback);
Parameters
| Parameter | Description | 
|---|---|
| multiControlId | The multi-control group ID. | 
| callback | The callback. | 
Example
iThingDeviceMultiControl.enableMultiControl(id, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        ToastUtil.shortToast(mContext,"success");
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
iThingDeviceMultiControl.disableMultiControl( id, new IThingResultCallback<Boolean>() {
    @Override
    public void onSuccess(Boolean result) {
        ToastUtil.shortToast(mContext,"success");
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
API description
void getDeviceDpLinkRelation(String devId, IThingDataCallback<DeviceMultiControlRelationBean> callback);
Parameters
| Parameter | Description | 
|---|---|
| devId | The device ID. | 
| callback | The callback. | 
Example
iThingDeviceMultiControl.getDeviceDpLinkRelation(devId, new IThingDataCallback<DeviceMultiControlRelationBean>() {
    @Override
    public void onSuccess(DeviceMultiControlRelationBean result) {
        L.d("MultiControlDeviceListPresenter",result.toString());
    }
    @Override
    public void onError(String errorCode, String errorMessage) {
        ToastUtil.shortToast(mContext,errorMessage);
    }
});
Fields of DeviceMultiControlRelationBean
| Field | Type | Description | 
|---|---|---|
| datapoints | List | The DP data. | 
| mcGroups | List | The details of the associated multi-control group. | 
| parentRules | List | The details of the associated automation scene. | 
Is this page helpful?
YesFeedbackIs this page helpful?
YesFeedback