群组管理

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

设备群组由同一种类型设备组成,是一系列设备的集合。常见的有 Wi-Fi 设备群组和 Zigbee 设备群组。涂鸦提供群组管理能力,您可以创建群组、修改群组名称、管理群组设备、通过群组管理和控制多个设备、解散群组。

创建 Wi-Fi 群组

查询可创建群组的设备

接口说明

ThingHomeSdk.newHomeInstance(homeId).queryDeviceListToAddGroup(groupId, productId,
        new IThingResultCallback<List<GroupDeviceBean>>() {
               @Override
               public void onSuccess(List<GroupDeviceBean> arrayList) {
               }

               @Override
               public void onError(String errorCode, String errorMsg) {
               }
        });

参数说明

参数 说明
homeId 家庭 ID
groupId 群组 ID
  • 如果这些设备还未创建群组,请设置为 -1
  • 如果这些设备要加入已有的群组,请设置为实际的群组 ID
productId 入口设备的产品 ID(即 Product ID)

创建一个群组

接口说明

ThingHomeSdk.newHomeInstance(mHomeId).createGroup(productId, name, selectedDeviceIds,
        new IThingResultCallback<Long>() {
            @Override
            public void onSuccess(Long groupId) {
                    //返回 groupId
            }

            @Override
            public void onError(String errorCode, String errorMsg) {
            }
        });

参数说明

参数 说明
homeId 家庭 ID
productId 选择创建群组的设备的 PID(即 Product ID)
name 新群组的名称
selectedDeviceIds 选择的设备的 deviceId 列表

更新保存群组

在群组中添加或者移除设备后,您需要将交互的结果,同步更新保存到云端。

接口说明

ThingHomeSdk.newGroupInstance(groupId).updateDeviceList(deviceIds,
        new IResultCallback() {

            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

参数 说明
groupId 群组 ID
deviceIds 新增或者移除指定的设备的 ID 列表数组

创建 Zigbee 群组

群组管理

Zigbee 群组的创建支持 Zigbee 子设备、智能网关 Pro 子设备、Sub-G 子设备等,这些其他接入协议可以复用 Zigbee 协议的设备来创建群组。

查询可创建或加入群组的设备

接口说明

ThingHomeSdk.newHomeInstance(homeId).queryZigbeeDeviceListToAddGroup(groupId, productId, meshId,
          new IThingResultCallback<List<GroupDeviceBean>>() {
                @Override
                public void onSuccess(List<GroupDeviceBean> arrayList) {
                }

                @Override
                public void onError(String errorCode, String errorMsg) {
                }
          });

参数说明

参数 说明
homeId 家庭 ID
groupId 群组 ID
  • 如果这些设备还未创建群组,请设置为 -1
  • 如果这些设备要加入已有的群组,请设置为实际的群组 ID
productId 选择入口设备的 PID(即 Product ID)
meshId 选择群组的设备的网关 ID,可以通过 deviceBean.getMeshId() 查询

创建一个群组

接口说明

ThingHomeSdk.newHomeInstance(homeId).createZigbeeGroup(productId, meshId, name,
        new IThingResultCallback<CloudZigbeeGroupCreateBean>() {

            @Override
            public void onSuccess(CloudZigbeeGroupCreateBean cloudZigbeeGroupCreateBean) {
                //输出结果
                long mGroupId = cloudZigbeeGroupCreateBean.getGroupId();
                String mGId = cloudZigbeeGroupCreateBean.getLocalId();
            }

            @Override
            public void onError(String errorCode, String errorMsg) {

            }
        });

参数说明

参数 说明
homeId 家庭 ID
productId 选择创建群组的设备的 PID(即 Product ID)
meshId 选择创建群组的设备的网关 ID,可以通过 deviceBean.getMeshId() 查询
name 新群组的名称

添加设备到群组

添加新设备到群组的过程,是主要与固件交互,写入群组设备到网关。

接口说明

mIThingZigbeeGroup.addDeviceToGroup(meshId, selectedDeviceIds, gid,
        new IThingResultCallback<ZigbeeGroupCreateResultBean>() {

            @Override
            public void onSuccess(ZigbeeGroupCreateResultBean zigbeeGroupCreateResultBean) {
                if (zigbeeGroupCreateResultBean != null) {
                    //新增设备成功的列表
                    if (zigbeeGroupCreateResultBean.getSuccess() != null && zigbeeGroupCreateResultBean.getSuccess().size() > 0) {
                        List<String> mAddSuccessDeviceIds = new ArrayList<>();
                        mAddSuccessDeviceIds.addAll(zigbeeGroupCreateResultBean.getSuccess());
                    }
                    //新增设备失败的列表
                    if (zigbeeGroupCreateResultBean.getFailure() != null && zigbeeGroupCreateResultBean.getFailure().size() > 0) {
                        List<String>mAddFailDeviceIds = new ArrayList<>();
                        mAddFailDeviceIds.addAll(zigbeeGroupCreateResultBean.getFailure());
                    }
                    //选择合适的时机调用 [更新保存群组关系]
                    //ThingHomeSdk.newZigbeeGroupInstance(groupId).updateGroupDeviceList()
                }
            }

            @Override
            public void onError(String errorCode, String errorMsg) {

            }
        });

参数说明

参数 说明
meshId 选择创建群组的设备的网关 ID,您可以通过 deviceBean.getMeshId() 查询
selectedDeviceIds 选择待添加的设备的 deviceId 列表
gid 群组的 localId
  • 创建空群组时,会返回该参数
  • 若已有群组时,可通过 groupBean.getLocalId() 查询

移除群组已有设备

移除网关中存储的群组中已有设备。

接口说明

mIThingZigbeeGroup.delDeviceToGroup(meshId, selectedDeviceIds, gid,
        new IThingResultCallback<ZigbeeGroupCreateResultBean>() {

            @Override
            public void onSuccess(ZigbeeGroupCreateResultBean zigbeeGroupCreateResultBean) {
                if (zigbeeGroupCreateResultBean != null) {
                    //移除设备成功的列表
                    if (zigbeeGroupCreateResultBean.getSuccess() != null && zigbeeGroupCreateResultBean.getSuccess().size() > 0) {
                        List<String> mDelSuccessDeviceIds = new ArrayList<>();
                        mDelSuccessDeviceIds.addAll(zigbeeGroupCreateResultBean.getSuccess());
                    }
                    //移除设备失败的列表
                    if (zigbeeGroupCreateResultBean.getFailure() != null && zigbeeGroupCreateResultBean.getFailure().size() > 0) {
                        List<String> mDelFailDeviceIds = new ArrayList<>();
                        mDelFailDeviceIds.addAll(zigbeeGroupCreateResultBean.getFailure());
                    }
                    //选择合适的时机调用 [更新保存群组关系]
                    //ThingHomeSdk.newZigbeeGroupInstance(groupId).updateGroupDeviceList()
                }
            }

            @Override
            public void onError(String errorCode, String errorMsg) {

            }
        });

参数说明

参数 说明
meshId 群组设备的网关 ID,可使用 deviceBean.getMeshId() 查询
selectedDeviceIds 选择移除设备的 deviceId 列表
gid 群组的 localId
  • 创建空群组时,会返回该参数
  • 若已有群组时,可通过 groupBean.getLocalId() 查询

更新保存群组

在群组中添加或者移除设备后,您需要将跟网关固件交互的结果,同步更新保存到云端。

接口说明

ThingHomeSdk.newZigbeeGroupInstance(groupId).updateGroupDeviceList(homeId, selectedDeviceIds,
        new IResultCallback() {

            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

参数 说明
groupId 群组 ID
homeId 家庭 ID
selectedDeviceIds 新增或者移除成功后的总设备 ID 列表

群组控制

初始化群组实例

接口说明

IThingGroup mIThingGroup= ThingHomeSdk.newGroupInstance(groupId);

参数说明

参数 说明
groupId 群组 ID

修改群组名称

接口说明

ThingHomeSdk.newGroupInstance(groupId).renameGroup(titleName,
            new IResultCallback() {

            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

参数 说明
groupId 群组 ID
titleName 群组名称

解散一个群组

接口说明

ThingHomeSdk.newGroupInstance(groupId).dismissGroup(new IResultCallback() {

            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

参数 说明
groupId 待解散的群组 ID

发送群组控制指令

接口说明

mThingGroup.publishDps(String command, IResultCallback listener);

参数说明

参数 说明
command 控制命令

示例代码

//群组开灯代码片段
LampBean bean = new LampBean();
bean.setOpen(true);
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put(STHEME_LAMP_DPID_1, bean.isOpen());
mThingGroup.publishDps(JSONObject.toJSONString(hashMap),callback);

控制回调接口

//注册群组回调事件
mIThingGroup.registerGroupListener(new IGroupListener() {

            @Override
            public void onDpUpdate(long l, String s) {

            }

            @Override
            public void onGroupInfoUpdate(long l) {

            }

            @Override
            public void onGroupRemoved(long l) {

            }
        });

//注销群组回调事件
mIThingGroup.unRegisterGroupListener();

向群组发送控制指令后,如果返回了结果,是指发送给云端成功,并不是指实际控制设备成功。

查询群组详情

调用该接口前,您需要初始化家庭(home),即调用 getHomeDetail() 或者 getHomeLocalCache()之后,才能查询到数据。

//查询指定的群组数据
ThingHomeSdk.getDataInstance().getGroupBean(long groupId);

//查询群组下设备列表
ThingHomeSdk.getDataInstance().getGroupDeviceList(long groupId);

退出时销毁数据

//群组数据销毁,建议退出群组控制页面的时候调用。
mIThingGroup.onDestroy();