简体中文
简体中文
English
联系我们
注册
登录

群组管理

更新时间:2022-02-17 06:18:20下载pdf

功能概述

涂鸦云支持群组管理体系:可以创建群组,修改群组名称,管理群组设备,通过群组管理多个设备,解散群组。
涂鸦智能提供一些设备群组控制的接口。

群组创建

创建 Wi-Fi 群组

群组列表获取

根据groupId查询可以创组建群组的设备列表或可加入当前群组的设备列表

TuyaOSGroup.getDevicesCanBeGrouped(groupId, productId,
        new ITuyaResultCallback<List<GroupDeviceBean>>() {
            @Override
            public void onSuccess(List<GroupDeviceBean> arrayList) {
            }

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

参数说明

参数 说明
homeId 家庭 id
groupId 群组未创建,入参 groupId 传-1;已有群组,请传实际群组 ID
productId 选择创建群组的设备的 pid

创建群组

创建一个群组

TuyaOSGroup.createGroup(productId, name, selectedDeviceIds,
        new ITuyaResultCallback<Long>() {
            @Override
            public void onSuccess(Long groupId) {
                //返回groupId
            }

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

参数说明

参数 说明
homeId 家庭 id
productId 选择创建群组的设备的 pid
name 选择创建群组的名称
selectedDeviceIds 选择的设备的 deviceId 列表

更新保存群组

更新保存群组到云端

TuyaOSGroup.newGroupInstance(groupId).updateDeviceList(deviceIds,
        new IResultCallback() {
            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

参数 说明
groupId 群组 id
deviceIds 新增或者删除选择后的设备 id 列表

创建 ZigBee 群组

支持 ZigBee 子设备、智能网关 pro 子设备、Sub-G 子设备等复用 ZigBee 网络协议的设备组建群组

群组列表获取

获取可创建群组设备列表

TuyaOSGroup.getZigbeeDevicesCanBeGrouped(groupId, productId, meshId,
        new ITuyaResultCallback<List<GroupDeviceBean>>() {
            @Override
            public void onSuccess(List<GroupDeviceBean> arrayList) {
            }

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

参数说明

参数 说明
homeId 家庭 id
groupId 群组未创建,入参 groupId 传-1;已有群组,请传实际群组 ID
productId 选择创建群组的设备的 pid
meshId 选择创建群组的设备的网关 id,deviceBean.getMeshId()

创建群组

创建一个空群组

TuyaOSGroup.createZigBeeGroup(productId, meshId, name,
        new ITuyaResultCallback<CloudZigbeeGroupCreateBean>() {
            @Override
            public void onSuccess(CloudZigbeeGroupCreateBean bean) {
                //输出结果
                long mGroupId = cloudZigbeeGroupCreateBean.getGroupId();
                String mGId = cloudZigbeeGroupCreateBean.getLocalId();
            }

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

            }
        });

参数说明

参数 说明
homeId 家庭 id
productId 选择创建群组的设备的 pid
meshId 选择创建群组的设备的网关 id(可使用 deviceBean.getMeshId() 获取)
name 选择创建群组的名称

新增设备到群组

接口说明

添加新设备到群组,主要跟固件交互,写入群组设备到网关

tuyaZigbeeGroup.addDeviceToGroup(meshId, selectedDeviceIds, gid,
        new ITuyaResultCallback<ZigbeeGroupCreateResultBean>() {
            @Override
            public void onSuccess(ZigbeeGroupCreateResultBean bean) {
                if (bean != null) {
                    //新增设备成功的列表
                    if (bean.getSuccess() != null && bean.getSuccess().size() > 0) {
                        List<String> mAddSuccessDeviceIds = new ArrayList<>();
                        mAddSuccessDeviceIds.addAll(bean.getSuccess());
                    }
                    //新增设备失败的列表
                    if (bean.getFailure() != null && bean.getFailure().size() > 0) {
                        List<String> mAddFailDeviceIds = new ArrayList<>();
                        mAddFailDeviceIds.addAll(bean.getFailure());
                    }
                }
            }

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

            }
        });

参数说明

参数 说明
meshId 选择创建群组的设备的网关 id(可使用 deviceBean.getMeshId() 获取)
selectedDeviceIds 选择新增设备的 deviceId 列表
gid 群组的 localId 可以通过创建空群组时获得,若已有群组可通过 groupBean.getLocalId() 获取

删除群组已有设备

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

tuyaZigbeeGroup.delDeviceToGroup(meshId, selectedDeviceIds, gid,
        new ITuyaResultCallback<ZigbeeGroupCreateResultBean>() {
            @Override
            public void onSuccess(ZigbeeGroupCreateResultBean bean) {
                if (bean != null) {
                    //删除设备成功的列表
                    if (bean.getSuccess() != null && bean.getSuccess().size() > 0) {
                        List<String> mDelSuccessDeviceIds = new ArrayList<>();
                        mDelSuccessDeviceIds.addAll(bean.getSuccess());
                    }
                    //删除设备失败的列表
                    if (bean.getFailure() != null && bean.getFailure().size() > 0) {
                        List<String> mDelFailDeviceIds = new ArrayList<>();
                        mDelFailDeviceIds.addAll(bean.getFailure());
                    }
                }
            }

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

            }
        });

参数说明

参数 说明
meshId 选择创建群组的设备的网关 id(可使用 deviceBean.getMeshId() 获取)
selectedDeviceIds 选择删除设备的 deviceId 列表
gid 群组的 localId 可以通过创建空群组时获得,若已有群组可通过 groupBean.getLocalId() 获取

更新保存群组

将跟网关固件群组设备增删后的结果同步更新保存到云端

TuyaOSGroup.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 列表

群组控制

群组初始化

群组实例初始化

ITuyaGroup mITuyaGroup= TuyaOSGroup.newGroupInstance(groupId);

参数说明

参数 说明
groupId 群组 id

修改名称

修改某个群组名称

TuyaOSGroup.newGroupInstance(groupId).renameGroup(titleName,
        new IResultCallback() {
            @Override
            public void onError(String s, String s1) {

            }

            @Override
            public void onSuccess() {

            }
        });

参数说明

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

解散群组

解散一个群组

TuyaOSGroup.newGroupInstance(groupId).dismissGroup(new IResultCallback() {
    @Override
    public void onError(String s, String s1) {

    }

    @Override
    public void onSuccess() {

    }
});

参数说明

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

控制发送

mTuyaGroup.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());
mTuyaGroup.publishDps(JSONObject.toJSONString(hashMap), callback);

控制回调

//注册群组回调事件
mITuyaGroup.registerGroupListener(new IGroupListener() {
    @Override
    public void onDpUpdate(long l, String s) {

    }

    @Override
    public void onGroupInfoUpdate(long l) {

    }

    @Override
    public void onGroupRemoved(long l) {

    }
});

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

注意事项

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

查询群组

获取群组数据,需要初始化 Home(调用 getHomeDetail() 或者 getHomeLocalCache() )之后,才能取到数据

//获取制定群组数据
TuyaOSDevice.getDataInstance().getGroupBean(long groupId);

//获取群组下设备列表
TuyaOSDevice.getDataInstance().getGroupDeviceList(long groupId);

数据销毁

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