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

区域管理

更新时间:2022-02-17 05:45:59下载pdf

获取一级区域列表

接口说明

TuyaCommercialLightingProject.newProjectInstance(long projectId)
			.getAreaList(ITuyaResultCallback<List<AreaBean>> callback);

参数说明

参数 说明
projectId 项目ID

示例代码

TuyaCommercialLightingProject.newProjectInstance(projectId).getAreaList(
			new ITuyaResultCallback<List<AreaBean>>() {
            @Override
            public void onSuccess(List<AreaBean> result) {
            		//success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            	  // error callback
            }
        });

获取子区域列表

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).getSubAreaList(
    ITuyaResultCallback<List<AreaBean>> listener
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).getSubAreaList(
    new ITuyaResultCallback<List<AreaBean>>() {
            @Override
            public void onSuccess(List<AreaBean> result) {
            		//success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            	  // error callback
            }
        }
);

获取区域层级列表

接口说明

获取项目下的一级层级列表

TuyaCommercialLightingProject.newProjectInstance(long projectId).getAreaLevels(
    boolean needUnassignedArea,
    boolean needPublicArea,
    ITuyaResultCallback<AreaListInProjectResponse> callback
) ;

参数说明

参数 说明
projectId 项目ID
needUnassignedArea 是否返回未分区层级
needPublicArea 是否返回公共区域层级

示例代码

TuyaCommercialLightingProject.newProjectInstance(projectId).getAreaLevels(needUnassignedArea, needPublicArea, new ITuyaResultCallback<AreaListInProjectResponse>() {
            @Override
            public void onSuccess(AreaListInProjectResponse result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

获取区域信息

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).getAreaInfo(
    ITuyaResultCallback<SimpleAreaBean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

        TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).getAreaInfo(new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

获取区域下的设备列表

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).queryDeviceListInArea(
    String tag, int limit, String offsetKey, ITuyaResultCallback<LightingDeviceListBean> callback
);

参数说明

参数 说明
tag 设备列表条件分类,默认传空
limit 每页请求的设备数量
offsetKey 当前页码,第一页传1,后续页数依次递增
callback 结果回调

示例代码

        TuyaCommercialLightingArea.newAreaInstance(mProjectId, mAreaId).queryDeviceListInArea("", 20,
                "1", new ITuyaResultCallback<LightingDeviceListBean>() {
                    @Override
                    public void onSuccess(LightingDeviceListBean result) {
                        //success callback0
                    }

                    @Override
                    public void onError(String errorCode, String errorMessage) {
                    		//error callback
                    }
                });

创建区域

创建区域(适用于室内项目)

接口说明

TuyaCommercialLightingArea.getLightingAreaManager().createArea(
    long projectId,
    long currentAreaId,
    String name,
    int roomLevel,
    ITuyaResultCallback<SimpleAreaBean> callback
 );

参数说明

参数 说明
projectId 项目ID
currentAreaId 当前区域ID,若无传 0
name 区域名称
roomLevel 创建的区域层级ID

示例代码

TuyaCommercialLightingArea.getLightingAreaManager().createArea(projectId, currentAreaId, name, roomLevel, new 		  ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

创建区域(适用于户外项目)

接口说明

TuyaCommercialLightingArea.getLightingAreaManager().createArea(
    long projectId,
    long currentAreaId,
    String name,
    int roomLevel,
    double longitude,
    double latitude,
    String address,
    ITuyaResultCallback<SimpleAreaBean> callback
 );

参数说明

参数 说明
projectId 项目ID
currentAreaId 当前区域ID,若无传 0
name 区域名称
roomLevel 创建的区域层级ID
longitude 当前区域位置的经度
latitude 当前区域位置的维度
address 当前区域地址
callback 回调

示例代码

TuyaCommercialLightingArea.getLightingAreaManager().createArea(projectId, currentAreaId, name, roomLevel, longitude, latitude, address, new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

创建子区域(适用于室内区域)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).createSubArea(
    String subAreaName,
    ITuyaResultCallback<SimpleAreaBean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
subAreaName 子区域名称

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).createSubArea(subAreaName, new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

创建子区域(适用于户外区域)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).createSubArea(
		String subAreaName,
    double longitude,
    double latitude,
    String address,
    ITuyaResultCallback<SimpleAreaBean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
subAreaName 子区域名称
longitude 区域位置经度
latitude 区域位置纬度
address 区域实际位置地址:经纬度定位到的位置

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).createSubArea(subAreaName, longitude, latitude, address, new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

创建父区域(适用于室内项目)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).createParentArea(
    String parentAreaName,
    ITuyaResultCallback<SimpleAreaBean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
parentAreaName 父区域名称

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).createParentArea(parentAreaName, new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

创建父区域(适用于户外项目)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).createParentArea(
    String parentAreaName,
    double longitude,
    double latitude,
    String address,
    ITuyaResultCallback<SimpleAreaBean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
parentAreaName 父区域名称
longitude 区域位置经度
latitude 区域位置纬度
address 区域实际位置地址:经纬度定位到的位置

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).createParentArea(parentAreaName, longitude, latitude, address, new ITuyaResultCallback<SimpleAreaBean>() {
            @Override
            public void onSuccess(SimpleAreaBean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

修改区域

修改区域(适用于室内项目)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).updateName(
    String name,
    ITuyaResultCallback<Boolean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
name 区域名称

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).updateName(name, new ITuyaResultCallback<Boolean>() {
            @Override
            public void onSuccess(Boolean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

修改区域(适用于户外项目)

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).updateAreaInfo(
    String name,
    double longitude,
    double latitude,
    String address, 
    ITuyaResultCallback<Boolean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID
name 区域名称
longitude 区域位置经度
latitude 区域位置纬度
address 区域实际位置地址:经纬度定位到的位置

示例代码

TuyaCommercialLightingArea.newAreaInstance(projectId, areaId).updateAreaInfo(name,longitude,latitude,address, new ITuyaResultCallback<Boolean>() {
            @Override
            public void onSuccess(Boolean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        });

删除区域

接口说明

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).delete(
    ITuyaResultCallback<Boolean> callback
);

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

TuyaCommercialLightingArea.newAreaInstance(long projectId, long areaId).delete(
   new ITuyaResultCallback<Boolean>() {
            @Override
            public void onSuccess(Boolean result) {
                //success callback
            }

            @Override
            public void onError(String errorCode, String errorMessage) {
            		//error callback
            }
        }
);

设备转移

设备转移是指将部分设备从一个区域转移到另外一个区域的操作,设备转移过程较复杂,下图为设备转移的大致流程:

区域管理

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId, long areaId)
		.transferDevices(List<String> devIds,DefaultDeviceTransferListener transferListener)

参数说明

参数 说明
devIds 设备ID集合
transferListener 区域转移过程及结果回调

其中,DefaultDeviceTransferListener回调各方法说明如下:

public abstract class DefaultDeviceTransferListener implements IDeviceTransferListener {

    @Override
    public void onFilterMeshDeviceFail(String errorMsg, String errorCode) {
    		//过滤mesh设备失败回调
    }

    @Override
    public void removeDeviceFromGroupByLocalError(long groupId, List<String> devIds, String errorMsg, String errorCode) {
    		//将设备从本地群组中移除操作失败
    }

    @Override
    public void removeDeviceFromGroupByCloudError(long groupId, List<String> devIds, String errorMsg, String errorCode) {
    		//将设备从云端群组中移除失败
    }

    @Override
    public void saveDevicesToNewAreaError(long areaId, List<String> devIds, String errorMsg, String errorCode) {
    		//将设备分配到新区域下操作失败
    }

    @Override
    public void createNewGroupError(long areaId, List<String> devIds, String errorMsg, String errorCode) {
   			//创建新群组失败
   }

    @Override
    public void bindDeviceToGroupByLocalError(long groupId, String devId, String errorMsg, String errorCode) {
    		//本地将mesh设备绑定到群组中操作失败
    }

    @Override
    public void bindDeviceToGroupByGroupError(long groupId, List<String> devId, String errorMsg, String errorCode) {
    		//云端将设备绑定到群组中操作失败
    }

    @Override
    public void onTransferStateChanged(@TransferState int state) {
    		//无须关注
    }

    @Override
    public void onDeviceOperationByLocal(@TransferState int state, @DeviceOperationType int operationType,
                                         List<ComplexDeviceBean> deviceBeans, boolean success) {
        //无须关注
    }

    @Override
    public void onResult(List<FilterGroup> filterGroups) {
    		//过时的结果回调,请勿使用,可使用handleResult回调
    }

		//最终结果回调,流程结束后会走到该回调
    @Override
    public abstract void handleResult(TransferResultSummary transferResultSummary);
    

		//异常回调,走到该回调表示设备转移操作出现异常,此时不会触发handleResult回调
    @Override
    public abstract void onError(String errorMsg, String errorCode);
}

获取区域相关数据

获取区域群控管理类

接口说明

ILightingStandardAreaDpsManager areaDpsManager = TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance();

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

ILightingStandardAreaDpsManager areaDpsManager = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance();

获取该区域相关DP点数据

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getDps();

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

String areaDps = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getDps();

获取区域开关状态

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getSwitchStatus()

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

boolean switchOn = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getSwitchStatus()

获取亮度百分比

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getBrightPercent()

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

int brightnessPercent = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getBrightPercent()

获取色温百分比

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getTemperaturePercent()

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

int temperaturePercent = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getTemperaturePercent();

获取彩光模式颜色值

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getColorData();

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

String colorData = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getColorData();

获取场景模式

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getSceneStatus();

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

LightDefaultSceneType sceneType = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getSceneStatus();

获取当前灯光模式

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getCurrentMode();

参数说明

参数 说明
projectId 项目ID
areaId 区域ID

示例代码

AreaDpMode areaDpMode = TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.getCurrentMode();

区域群控

区域群控是指对该区域下的设备进行总控的一种功能,目前支持的区域总控功能为开关亮度模式色温等,该部分功能必须在TuyaCommercialLightingArea#newAreaInstance#getSubAreaList接口调用后获取当前区域的AreaBean信息后再进行!

切换开关状态

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishSwitchStatus(boolean status, final IResultCallback callback);

参数说明

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

示例代码

TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.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

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishWorkMode(AreaDpMode mode, IResultCallback callback);

参数说明

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

示例代码

TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.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();
                }
            }
        });

调整色温值

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

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishTemperaturePercent(int value, IResultCallback callback);

参数说明

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

示例代码

TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishTemperaturePercent(50, 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();
                }
            }
        });

设置场景

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

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishSceneStatus(LightDefaultSceneType type, IResultCallback callback);

参数说明

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

示例代码

TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.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);
 }

接口说明

TuyaCommercialLightingArea
		.newAreaInstance(long projectId,long areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.publishColors(String color, IResultCallback callback);

参数说明

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

示例代码

TuyaCommercialLightingArea
		.newAreaInstance(projectId,areaId)
		.getLightingStandardAreaDpsManagerInstance()
		.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();
                }
            }
        });