package com.hdl.linkpm.sdk.device; import android.text.TextUtils; import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.hdl.hdlhttp.HxHttp; import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi; import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack; import com.hdl.linkpm.sdk.core.callback.IResponseCallBack; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.core.response.HDLResponse; import com.hdl.linkpm.sdk.device.bean.CategoryInfo; import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; import com.hdl.linkpm.sdk.device.bean.FunctionActionBean; import com.hdl.linkpm.sdk.device.bean.FunctionInfoBaseBean; import com.hdl.linkpm.sdk.device.bean.FunctionInfoListBean; import com.hdl.linkpm.sdk.device.bean.GatewayCloudBean; import com.hdl.linkpm.sdk.device.bean.ProductInfo; import com.hdl.linkpm.sdk.device.controller.HDLPMDeviceController; import com.hdl.linkpm.sdk.home.bean.QuestionInfo; import com.hdl.linkpm.sdk.home.bean.QuestionListInfo; import com.hdl.linkpm.sdk.utils.HDLGsonUtils; import java.util.List; import io.reactivex.rxjava3.disposables.Disposable; /** * Created by jlchen on 12/2/21. */ public class HDLLinkPMDevice { //instance private volatile static HDLLinkPMDevice instance; /** * getInstance * * @return HDLLinkDevice */ public static synchronized HDLLinkPMDevice getInstance() { if (instance == null) { synchronized (HDLLinkPMDevice.class) { if (instance == null) { instance = new HDLLinkPMDevice(); } } } return instance; } /***************4.设备、功能增删改查管理***************/ /** * 设备基本信息列表(oid)全量添加 * * @param homeId 住宅id * @param oidDeviceList 最新的设备Oid列表 * @param callBack * @return */ public void fullAddDeviceOidList(String homeId, List oidDeviceList, IDefaultCallBack callBack) { HDLPMDeviceController.getInstance().fullAddDeviceOidList(homeId, oidDeviceList, callBack); } /** * 设备基本信息列表(oid)获取 * * @param homeId 住宅id * @param callBack * @return */ public void getDeviceOidList(String homeId, IResponseCallBack> callBack) { HDLPMDeviceController.getInstance().getDeviceOidList(homeId, callBack); } /** * 设备网关列表 * * @param homeId 住宅id * @param callBack * @return */ public void getGatewayList(String homeId, IResponseCallBack> callBack) { HDLPMDeviceController.getInstance().getGatewayList(homeId, callBack); } /** * 设备基本信息(oid)删除 * 删除设备或者从网关等oid * * @param homeId 住宅id * @param oid 设备的oid * @param callBack * @return */ public void removeDeviceOid(String homeId, String oid, IDefaultCallBack callBack) { HDLPMDeviceController.getInstance().removeDeviceOid(homeId, oid, callBack); } /** * 设备(功能)全量更新 * * @param homeId 住宅id * @param gatewayId 网关Id * @param functionList 最新的功能列表 * @param callBack * @return */ public void fullAddFunctionList(String homeId, String gatewayId, List functionList, IDefaultCallBack callBack) { HDLPMDeviceController.getInstance().fullAddFunctionList(homeId, gatewayId, functionList, callBack); } /** * 获取类目 * * @param callBack * @return */ public void getCategoryAllTree(IResponseCallBack> callBack) { HDLPMDeviceController.getInstance().getCategoryList(callBack); } /** * 获取类目下设备列表根据名字 * * @param callBack * @return */ public void getCategoryListByName(String productName, IResponseCallBack> callBack) { HDLPMDeviceController.getInstance().getCategoryListByName(productName, callBack); } /** * 获取类目下设备列表根据类目 * * @param callBack * @return */ public void getCategoryListByCode(String categorySecondCode, IResponseCallBack> callBack) { HDLPMDeviceController.getInstance().getCategoryListByCode(categorySecondCode, callBack); } /** * 设备(功能)列表获取 * * @param homeId 住宅id * @param gatewayId 网关Id * @param callBack * @return */ public void getFunctionList(String homeId, String gatewayId, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().getFunctionList(homeId, gatewayId, callBack); } /** * 设备(功能)删除,支持批量 * * @param homeId 住宅id * @param gatewayId 网关Id * @param devices 云端设备ID集合 * @param callBack * @return */ public void batchDeleteFunctionList(String homeId, String gatewayId, List devices, IDefaultCallBack callBack) { HDLPMDeviceController.getInstance().batchDeleteFunctionList(homeId, gatewayId, devices, callBack); } /** * 控制设备 * * @param homeId 住宅id * @param gatewayId 网关Id * @param actions 动作 * @param callBack * @return */ public void controlFunction(String homeId, String gatewayId, List actions, IDefaultCallBack callBack) { HDLPMDeviceController.getInstance().controlFunction(homeId, gatewayId, actions, callBack); } /** * 绑定毫米波设备 * * @param homeId 住宅Id * @param name 设备名称 * @param spk 产品spk * @param oid 设备oid * @param mac 设备mac * @param sid 设备sid * @param uidList 房间uid列表 * @param callBack 回调 */ public void bindMillimeterDevice(String homeId, String name, String spk, String oid, String mac, String sid, List uidList, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().bindMillimeterDevice(homeId, name, spk, oid, mac, sid, uidList, callBack); } /** * 解绑毫米波设备 * * @param homeId 住宅Id * @param spk 产品spk * @param mac 设备mac * @param callBack 回调 */ public void unBindMillimeterDevice(String homeId, String spk, String mac, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().unBindMillimeterDevice(homeId, spk, mac, callBack); } /** * 获取link功能列表 * * @param homeId 住宅Id * @param spk spk * @param callBack 回调 */ public void getDeviceList(String homeId, String spk, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().getDeviceList(homeId, spk, callBack); } /** * 获取毫米波(获取设备远程通讯信息) * * @param homeId 住宅Id * @param spk spk * @param mac 设备mac * @param callBack 回调 */ public void getDeviceRemoteInfo(String homeId, String spk, String mac, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().getDeviceRemoteInfo(homeId, spk, mac, callBack); } /** * 设备(功能)修改备注 * * @param homeId 住宅id * @param deviceId 设备Id * @param name 设备名称 */ public void rename(String homeId, long deviceId,String name, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().rename( homeId, deviceId, name, callBack); } /** * 设备(功能)绑定房间 * * @param homeId 住宅id * @param deviceIds 设备id列表 * @param roomIds 房间id列表 */ public void bindRoom(String homeId, List deviceIds,List roomIds, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().bindRoom( homeId, deviceIds, roomIds, callBack); } /** * 获取常见问题列表 * * @param languageType 0:中文 1:英文,可用值:CHINESE,ENGLISH * @param pageNo 当前页 * @param pageSize 页面大小 * @param question 问题 * @param callBack * @return */ public void getQuestionList(String languageType, String question, String pageNo, String pageSize, IResponseCallBack callBack) { HDLPMDeviceController.getInstance().getQuestionList(languageType, question, pageNo, pageSize, callBack); } }