群组管理

更新时间:2022-02-17 05:46:20下载pdf

概念介绍

  • 群组是一个或多个设备按照一定规则的聚合体,通过对群组的控制以达到群控该群组下设备的目的。

  • 组合群组是指一个或多个不同类型的小群组的聚合体,通过对组合群组的控制以达到群控该组合群组内的小群组的目的,进而控制所有小群组中的设备。

  • 商照SDK提供组合群组的创建、编辑、控制等能力,暂不支持对单个小群组进行操作。

  • 组合群组附属于区域维度下,没有区域时无法创建组合群组。

    组合群组-(小)群组-设备三者之前的关系如图所示:

    群组管理

获取能够创建组合群组的设备列表

接口说明

//创建组合群组实例
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

//获取能够加入该组合群组的设备列表
groupPackInstance.getAvailableDevices2JoinGroupPack(long areaId, @GroupPackType String topCategory, int limit, 
									String offsetKey,ITuyaResultCallback<GroupDeviceListRespBean> callback)

参数说明

参数 说明
projectId 当前项目ID
groupPackId 组合群组ID,创建时无组合群组ID时,可传空字符串
areaId 当前区域ID,组合群组附属于区域维度下,没有区域时无法创建组合群组。
topCategory 一级品类code,当前版本仅支持创建照明品类组合群组,固定传GroupPackCategory.CATEGORY_LIGHTING
limit 每页请求的设备列表数量
offsetKey 当前请求的页数,第一页为1,后续页数依次递增
callback 设备列表结果回调

创建组合群组

接口说明

TuyaCommercialLightingGroupPack.getGroupPackManager()
  .createPackedGroup(long projectId,long areaId,String packedGroupName,List<ComplexDeviceBean> addDevices,
                                        @GroupPackCategory int topCategory,String deviceId,DefaultDeviceTransferListener listener)

参数说明

参数 说明
projectId 当前项目ID
areaId 当前区域ID,组合群组附属于区域维度下,没有区域时无法创建组合群组。
packedGroupName 组合群组名称
addDevices 要加入该组合群组的设备列表,该设备列表为获取能够加入组合群组的设备列表接口返回的数据。
topCategory 一级品类code,当前版本仅支持创建照明品类组合群组,固定传GroupPackCategory.CATEGORY_LIGHTING
deviceId 主设备ID,默认传空字符串
listener 创建组合群组的回调,各种回调方法的具体含义可参考区域管理章节中DefaultDeviceTransferListener的介绍

更新组合群组设备列表

接口说明

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

//更新群组中的设备列表
groupPackInstance.updateDevicesByIds(List<String> bindDevIds, List<String> unbindDevIds, final ITuyaResultCallback<DeviceTaskResultBean> callback);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
bindDevIds 新添加到当前组合群组的设备ID集合
unbindDevIds 从当前组合群组中移除的设备ID集合
callback 结果回调,其中,DeviceTaskResultBean#success为操作成功的设备集合,failed为操作失败的设备ID集合

获取组合群组信息

接口说明

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

//获取信息
groupPackInstance.getPackedGroupInfo(ITuyaResultCallback<GroupPackBean> resultListener);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
resultListener 结果回调

组合群组重命名

接口说明

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

groupPackInstance.renamePackedGroup(String name,IResultCallback callback);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
name 当前组合群组新名称
callback 结果回调

获取组合群组中的设备列表

接口说明

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

groupPackInstance.getDevicesInGroupPack(int limit,String offsetKey,ITuyaResultCallback<GroupDeviceListRespBean> callback);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
limit 每页请求的设备列表数量
offsetKey 当前请求的页数,第一页为1,后续页数依次递增
callback 结果回调

解散组合群组

接口说明

解散组合群组时,建议先将该组合群组中的所有设备移出。蓝牙Mesh设备能够加入的群组的数量是有限制的,超出群组数量后会出现无法再次加入群组的情况。

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

groupPackInstance.dismiss(IResultCallback callback);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
callback 结果回调

获取组合群组中的小群组列表

接口说明

如非必要,请勿调用该接口,原则上组合群组中的小群组是用户无感知的。

//创建组合群组实例对象
ILightingGroupPack groupPackInstance = TuyaCommercialLightingGroupPack.newGroupPackInstance(long projectId,String groupPackId);

groupPackInstance.getChildrenGroupBeans(ITuyaResultCallback<List<GroupBean>> callback);

参数说明

参数 说明
projectId 项目ID
groupPackId 组合群组ID
callback 结果回调

获取组合群组列表

接口说明

ILightingGroupPackManager groupPackManager = TuyaCommercialLightingGroupPack.getGroupPackManager();
groupPackManager.getPackedGroupList(long areaId, int limit, String offsetKey, ITuyaResultCallback<GroupPackListBean> callback);

参数说明

参数 说明
areaId 当前区域ID
limit 每页请求的组合群组列表数量
offsetKey 当前请求的页数,第一页为1,后续页数依次递增
callback 结果回调

代码示例

TuyaCommercialLightingGroupPack.getGroupPackManager().unRegisterGroupPackListener(listener);

注册组合群组变更监听

接口说明

ILightingGroupPackManager groupPackManager = TuyaCommercialLightingGroupPack.getGroupPackManager();
groupPackManager.registerGroupPackListener(ILightingGroupPackListener listener);

参数说明

参数 说明
listener 结果回调

移除组合群组变更监听

接口说明

ILightingGroupPackManager groupPackManager = TuyaCommercialLightingGroupPack.getGroupPackManager();
groupPackManager.unRegisterGroupPackListener(ILightingGroupPackListener listener);

参数说明

参数 说明
listener 结果回调

组合群组控制

组合群组控制是指对该组合群组下的设备进行总控的一种功能,目前支持的区域总控功能为开关亮度模式色温等,该部分功能必须在请求获取组合群组列表后执行该操作

获取区域群控管理类

接口说明

ILightingGroupPackDpsManager groupPackDpsManager = TuyaCommercialLightingGroupPack.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

ILightingGroupPackDpsManager groupPackDpsManager = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)

获取该区域相关DP点数据

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getDps()

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

String groupDps = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getDps()

获取区域开关状态

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getSwitchStatus()

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

boolean switchOn = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getSwitchStatus()

获取亮度百分比

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getBrightPercent()

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

int brightnessPercent = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getBrightPercent()

获取色温百分比

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getTemperaturePercent()

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

int temperaturePercent = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getTemperaturePercent()

获取彩光模式颜色值

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getColorData();

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

String colorData = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getColorData();

获取场景模式

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getSceneStatus();

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

LightDefaultSceneType sceneType = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getSceneStatus();

获取当前灯光模式

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.getCurrentMode();

参数说明

参数 说明
projectId 项目ID
groupPackBean 组合群组对象

示例代码

AreaDpMode groupDpMode = TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)
		.getCurrentMode();

切换开关状态

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishSwitchStatus(boolean status, final IResultCallback callback);

参数说明

参数 说明
status 开关状态,true:开启 false:关闭
callback 执行结果回调

示例代码

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishSwitchStatus(true, new IResultCallback() {
            @Override
            public void onError(String errorCode, String errorMsg) {
                if (callback != null) {
                    callback.onError(errorCode, errorMsg);
                }
            }

            @Override
            public void onSuccess() {
                if (callback != null) {
                    callback.onSuccess();
                }
            }
        });

切换灯光模式

当前支持三种灯光模式,分别为白光模式、彩光模式和场景模式,分别对应AreaDpMode枚举中的MODE_WHITE_LIGHTMDOE_COLORFUL_LIGHTMODE_SCENE

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishWorkMode(AreaDpMode mode, IResultCallback callback);

参数说明

参数 说明
Mode 要切换的模式的枚举值,包含MODE_WHITE_LIGHTMDOE_COLORFUL_LIGHTMODE_SCENE
callback 执行结果回调

示例代码

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)
		.publishWorkMode(AreaDpMode.MODE_WHITE_LIGHT, new IResultCallback() {
            @Override
            public void onError(String errorCode, String errorMsg) {
                if (callback != null) {
                    callback.onError(errorCode, errorMsg);
                }
            }

            @Override
            public void onSuccess() {
                if (callback != null) {
                    callback.onSuccess();
                }
            }
        });

调整色温值

该操作仅支持在白光模式下进行。

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishTemperaturePercent(int value, IResultCallback callback);

参数说明

参数 说明
value 色温值,取值范围0-1000
callback 执行结果回调

示例代码

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)
		.publishTemperaturePercent(int value, new IResultCallback() {
            @Override
            public void onError(String errorCode, String errorMsg) {
                if (callback != null) {
                    callback.onError(errorCode, errorMsg);
                }
            }

            @Override
            public void onSuccess() {
                if (callback != null) {
                    callback.onSuccess();
                }
            }
        });

设置场景

该操作仅支持在场景模式下进行。

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishSceneStatus(LightDefaultSceneType type, IResultCallback callback);

参数说明

参数 说明
type 场景类型,包含NONEWORKMEETINGSIESTAOFF_DUTY,分表表示无模式、会议模式灯光、工作模式灯光、午休模式灯光和下班模式灯光。
callback 执行结果回调

示例代码

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)
		.publishSceneStatus(LightDefaultSceneType.WORK, new IResultCallback() {
            @Override
            public void onError(String errorCode, String errorMsg) {
                if (callback != null) {
                    callback.onError(errorCode, errorMsg);
                }
            }

            @Override
            public void onSuccess() {
                if (callback != null) {
                    callback.onSuccess();
                }
            }
        });

设置彩光

该操作仅支持在彩光模式下进行。

通过getColorData获取到彩光模式的数据,该数据为12位的组合数据,组合的规则为hhhhssssvvvv,其中hhhh表示16进制后的色调值,ssss表示16进制后的饱和度值,vvvv表示16进制后的亮度值,可使用stringToHSV方法将colorData转换成hsv的值,代码如下:

public static float[] stringToHSV(String hsv){
        int h = Integer.valueOf(hsv.substring(0,4),16);
        int s = Integer.valueOf(hsv.substring(4,8),16);
        int v = Integer.valueOf(hsv.substring(8,12),16);
        return new float[]{(float)h,(float)s,(float)v};
}

并可通过hsvToString将HSV的值转换成colorData,代码如下:

public static String hsvToString(int[] hsv) {
        String h = numToHex4(hsv[0]);
        String s = numToHex4(hsv[1]);
        String v = numToHex4(hsv[2]);
        String hhhhssssvvvv = h + s + v;
        return  hhhhssssvvvv;
 }

 public static String numToHex4(int num) {
        return String.format("%04x", num);
 }

接口说明

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(long projectId,GroupPackBean groupPackBean)
		.publishColors(String color, IResultCallback callback);

参数说明

参数 说明
color 颜色值,16位字符串,格式为hhhhssssvvvv
callback 执行结果回调

示例代码

TuyaCommercialLightingGroupPack
		.newGroupPackDpsManager(projectId,groupPackBean)
		.publishColors("hhhhssssvvvv", new IResultCallback() {
            @Override
            public void onError(String errorCode, String errorMsg) {
                if (callback != null) {
                    callback.onError(errorCode, errorMsg);
                }
            }

            @Override
            public void onSuccess() {
                if (callback != null) {
                    callback.onSuccess();
                }
            }
        });