From a59bbb7890e107a681f677765f2600e278c06a0d Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 09 十月 2023 10:16:37 +0800 Subject: [PATCH] 2023年10月09日10:16:35 --- app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 198 +++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 164 insertions(+), 34 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java index a0ca15f..6462ac8 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -9,6 +9,7 @@ import com.hdl.hdlhttp.HxHttp; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.bean.HttpResponsePack; +import com.hdl.photovoltaic.bean.LocalResponse; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; @@ -27,6 +28,8 @@ import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; +import com.hdl.sdk.link.core.bean.request.BaseLocalRequest; +import com.hdl.sdk.link.core.bean.response.BaseLocalResponse; import com.hdl.sdk.link.core.callback.GatewayCallBack; import com.hdl.sdk.link.core.callback.HDLLinkCallBack; import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; @@ -35,13 +38,35 @@ import java.util.ArrayList; import java.util.List; -import io.reactivex.rxjava3.disposables.Disposable; /** - * 璁惧閫昏緫鐨勭晫闈� + * 璁惧閫昏緫 */ public class HdlDeviceLogic { private static volatile HdlDeviceLogic sHdlDeviceLogic; + + /** + * 鑾峰彇褰撳墠浣忓畢鐨勯�嗗彉鍣ㄥ垪琛� + */ + public List<GatewayBean> getGatewayList() { + List<GatewayBean> newList = new ArrayList<>(); + List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList(); + if (list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + GatewayBean gatewayBean = list.get(i); + if (TextUtils.isEmpty(gatewayBean.getDevice_mac())) { + continue; + } + if (gatewayBean.getMaster().equals("true") + && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { +// if ("0101050217BBC400".equals(gatewayBean.getOid()))//娴嬭瘯鏃惰繃婊ゆ帀鏃犳晥鐨勶紝杩欒鍚庨潰浠g爜瑕佸垹闄� +// continue; + newList.add(gatewayBean); + } + } + } + return newList; + } /** * 鑾峰彇褰撳墠瀵硅薄 @@ -68,7 +93,7 @@ * @param sid - * @param oid - * @param name - - * @param cloudCallBeak + * @param cloudCallBeak - */ public void addInverterDeviceToCloud(String mac, String spk, String sid, String oid, String name, CloudCallBeak<Boolean> cloudCallBeak) { @@ -87,6 +112,31 @@ public void onSuccess(String str) { if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); + //涓存椂鐨勯�昏緫锛屼笂浼爋id鍒楄〃鍒颁簯绔� + getGatewayOidList(mac, new LinkCallBack<List<OidBean>>() { + @Override + public void onSuccess(List<OidBean> obj) { + if (obj == null) { + return; + } + fullUpdateOid(obj, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + + } + + @Override + public void onFailure(HDLException e) { + + } + }); + } + + @Override + public void onError(HDLLinkException e) { + + } + }); } } @@ -214,7 +264,7 @@ * @param cloudCallBeak 鍥炶皟update */ public void fullUpdateOid(List<OidBean> oidList, CloudCallBeak<Boolean> cloudCallBeak) { - String requestUrl = HttpApi.POST_Device_ChildDevices_List; + String requestUrl = HttpApi.POST_Device_Oid; JsonObject json = new JsonObject(); json.addProperty("operationSource", "PROGRAM_ENERGY");// json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); @@ -224,7 +274,7 @@ JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("protocolType", oidBean.getProtocolType()); jsonObject.addProperty("deviceType", oidBean.getDeviceType()); - jsonObject.addProperty("mac", oidBean.getMac()); + jsonObject.addProperty("mac", oidBean.getDevice_mac()); jsonObject.addProperty("oid", oidBean.getOid()); jsonObject.addProperty("device_name", oidBean.getDevice_name()); jsonObject.addProperty("device_model", oidBean.getDevice_model()); @@ -263,7 +313,7 @@ * @param mac 璁惧mac * @param linkCallBack 鍥炶皟update */ - public void steGatewayParam(String mac, LinkCallBack<Boolean> linkCallBack) { + public void setGatewayRemoteParam(String mac, LinkCallBack<Boolean> linkCallBack) { String requestUrl = TopicApi.SET_GATEWAY_REMOTE_EDIT; JsonObject json = new JsonObject(); json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); @@ -295,6 +345,64 @@ } /** + * 缃戝叧鏃堕棿璇诲彇 + * + * @param mac 璁惧mac + * @param linkCallBack 鍥炶皟update + */ + public void getGatewayTime(String mac, LinkCallBack<Boolean> linkCallBack) { + String requestUrl = TopicApi.GET_GATEWAY_TIME; + TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, null, "", new HDLLinkCallBack() { + @Override + public void onSuccess(String msg) { + if (linkCallBack != null) { + linkCallBack.onSuccess(true); + } + } + + @Override + public void onError(HDLLinkException e) { + if (linkCallBack != null) { + linkCallBack.onError(e); + } + } + }); + + } + + /** + * 缃戝叧鏃堕棿淇敼 + * + * @param mac 璁惧mac + * @param linkCallBack 鍥炶皟update + */ + public void editGatewayTime(String mac, JsonObject jsonObject, LinkCallBack<Boolean> linkCallBack) { + String requestUrl = TopicApi.SET_GATEWAY_TIME_EDIT; +// JsonObject json = new JsonObject(); +// json.addProperty("master", "true"); +// "objects": { +// "date": "2020-08-15", +// "time": "17:25:20" +// } + TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, jsonObject, "", new HDLLinkCallBack() { + @Override + public void onSuccess(String msg) { + if (linkCallBack != null) { + linkCallBack.onSuccess(true); + } + } + + @Override + public void onError(HDLLinkException e) { + if (linkCallBack != null) { + linkCallBack.onError(e); + } + } + }); + + } + + /** * 缂栬緫缃戝叧鍙傛暟 * * @param mac 璁惧mac @@ -321,7 +429,6 @@ }); } - /** * 鑾峰彇缃戝叧璇︽儏淇℃伅 @@ -375,11 +482,17 @@ return; } Gson gson = new Gson(); - Type typeOfT = new TypeToken<List<OidBean>>() { + Type typeOfT = new TypeToken<BaseLocalResponse<List<OidBean>>>() { }.getType(); - List<OidBean> list = gson.fromJson(json, typeOfT); - if (linkCallBack != null) { - linkCallBack.onSuccess(list); + BaseLocalResponse<List<OidBean>> baseLocalResponse = gson.fromJson(json, typeOfT); + + if (linkCallBack == null) { + return; + } + if (baseLocalResponse == null || baseLocalResponse.getObjects() == null) { + linkCallBack.onSuccess(new ArrayList<>()); + } else { + linkCallBack.onSuccess(baseLocalResponse.getObjects()); } } @@ -407,7 +520,7 @@ @Override public void onSuccess(List<CloudInverterDeviceBean> list) { if (list == null || list.size() == 0) { -// //浜戠娌℃湁缁戝畾閫嗗彉鍣�,娓呯┖鏈湴鍒楄〃; +// //浜戠娌℃湁缁戝畾閫嗗彉鍣�,浠ユ湰鍦颁负涓�; // HDLLinkLocalGateway.getInstance().getGatewayList().clear(); if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); @@ -428,8 +541,14 @@ } } for (int i = 0; i < removeSidList.size(); i++) { - //鑾峰彇鏈湴鐨勬绫虫尝 + //鍒犻櫎鏈湴鐨勯�嗗彉鍣� removeInverter(removeSidList.get(i)); + } + + for (int i = 0; i < list.size(); i++) { + CloudInverterDeviceBean cloudInverterDeviceBean = list.get(i); + GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getSid()); + objectAssignment(cloudInverterDeviceBean, gatewayBean); } if (cloudCallBeak != null) { @@ -451,30 +570,21 @@ HdlDeviceLogic.getInstance().getCloudInverterDeviceList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<CloudInverterDeviceBean>>() { @Override public void onSuccess(List<CloudInverterDeviceBean> list) { - if (list == null) { - if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(true); - } - return; - } - if (list.size() <= 0) { - if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(true); - } - return; - } + //娓呮鏈湴缃戝叧鍒楄〃 HDLLinkLocalGateway.getInstance().getGatewayList().clear(); + if (list == null || list.size() == 0) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(true); + } + return; + } for (int i = 0; i < list.size(); i++) { CloudInverterDeviceBean cloudInverterDeviceBean = list.get(i); + //浜戠瀵硅薄鏁版嵁浜ゆ崲鍒版湰鍦板璞� GatewayBean gatewayBean = new GatewayBean(); - gatewayBean.setOid(cloudInverterDeviceBean.getOid()); - gatewayBean.setSid(cloudInverterDeviceBean.getSid()); - gatewayBean.setGatewayId(cloudInverterDeviceBean.getGatewayId()); - gatewayBean.setOnline(cloudInverterDeviceBean.isOnline()); - gatewayBean.setDevice_name(cloudInverterDeviceBean.getGatewayName()); - gatewayBean.setHomeId(UserConfigManage.getInstance().getHomeId()); - gatewayBean.setLocalEncrypt(true); - gatewayBean.setMaster("true"); + objectAssignment(cloudInverterDeviceBean, gatewayBean); + + //娣诲姞缃戝叧 HDLLinkLocalGateway.getInstance().getGatewayList().add(gatewayBean); } if (cloudCallBeak != null) { @@ -500,7 +610,6 @@ * @param sid 璁惧sid */ private void removeInverter(String sid) { - //鑾峰彇鏈湴鐨勬绫虫尝 GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(sid); if (gatewayBean != null) { HDLLinkLocalGateway.getInstance().getGatewayList().remove(gatewayBean); @@ -518,6 +627,27 @@ HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(UserConfigManage.getInstance().getHomeId(), spks, true, gatewayCallBack); } + + private void objectAssignment(CloudInverterDeviceBean cloudInverterDeviceBean, GatewayBean gatewayBean) { + if (cloudInverterDeviceBean == null || gatewayBean == null) { + return; + } + gatewayBean.setOid(cloudInverterDeviceBean.getOid()); + gatewayBean.setSid(cloudInverterDeviceBean.getSid()); + gatewayBean.setGatewayId(cloudInverterDeviceBean.getGatewayId()); + gatewayBean.setOnline(cloudInverterDeviceBean.isOnline()); + gatewayBean.setDevice_mac(cloudInverterDeviceBean.getOsn());//璁惧mac + gatewayBean.setDevice_name(cloudInverterDeviceBean.getGatewayName()); + gatewayBean.setHomeId(UserConfigManage.getInstance().getHomeId()); + gatewayBean.setLocalEncrypt(true); + gatewayBean.setMaster("true"); + gatewayBean.setSystemStatusDesc(cloudInverterDeviceBean.getSystemStatusDesc()); + gatewayBean.setHwVersion(cloudInverterDeviceBean.getHwVersion()); + gatewayBean.setCategorySecondName(cloudInverterDeviceBean.getCategorySecondName()); + gatewayBean.setDeviceId(cloudInverterDeviceBean.getDeviceId()); + + } + /** * 鑾峰彇缃戝叧spk鍒楄〃 * -- Gitblit v1.8.0