From d1ebb94e1a17b7c25d4fcf73d85345d92cc86b5c Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期二, 02 一月 2024 18:41:34 +0800 Subject: [PATCH] 2024年01月02日18:41:32 --- app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 115 ++++++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 88 insertions(+), 27 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 aabe708..6175ea4 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -63,7 +63,7 @@ /** * 鑾峰彇褰撳墠浣忓畢鐨勯�嗗彉鍣ㄥ垪琛�(鍖呮嫭浠庣殑閫嗗彉鍣�) */ - public List<GatewayBean> getCurrentHomeGatewayList() { + public List<GatewayBean> getCurrentHomeGatewayList(String homeId) { List<GatewayBean> newList = new ArrayList<>(); List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList(); if (list.size() > 0) { @@ -73,7 +73,7 @@ continue; } //鐢╤omeId绛涢�夊綋鍓嶄綇瀹呯殑閫嗗彉鍣ㄥ垪琛� - if (gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { + if (gatewayBean.getHomeId().equals(homeId)) { newList.add(gatewayBean); } } @@ -84,21 +84,21 @@ /** * 鑾峰彇褰撳墠浣忓畢鐨勩�愪富銆戦�嗗彉鍣� */ - public GatewayBean getCurrentHomeMainGateway() { - return queryCurrentHomeMainGateway(this.getCurrentHomeGatewayList()); + public GatewayBean getCurrentHomeMainGateway(String homeId) { + return queryCurrentHomeMainGateway(this.getCurrentHomeGatewayList(homeId), homeId); } /** * 鏌ヨ褰撳墠浣忓畢鐨勩�愪富銆戦�嗗彉鍣� */ - public GatewayBean queryCurrentHomeMainGateway(List<GatewayBean> list) { + public GatewayBean queryCurrentHomeMainGateway(List<GatewayBean> list, String homeId) { if (list == null || list.size() == 0) { return null; } GatewayBean findGatewayBean = null; for (int i = 0; i < list.size(); i++) { GatewayBean gatewayBean = list.get(i); - if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { + if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(homeId)) { //鎵惧埌杩斿洖 findGatewayBean = gatewayBean; break; @@ -152,11 +152,11 @@ * @param name - * @param cloudCallBeak - */ - public void addInverterDeviceToCloud(String mac, String spk, String sid, String oid, String name, CloudCallBeak<Boolean> cloudCallBeak) { + public void addInverterDeviceToCloud(String homeId, String mac, String spk, String sid, String oid, String name, CloudCallBeak<Boolean> cloudCallBeak) { String requestUrl = HttpApi.POST_Device_Add; JsonObject json = new JsonObject(); - json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); + json.addProperty("homeId", homeId); json.addProperty("mac", mac); json.addProperty("spk", spk); json.addProperty("sid", sid); @@ -227,10 +227,10 @@ * @param deviceId 璁惧id * @param cloudCallBeak 鍥炶皟 */ - public void delInverterDevice(String deviceId, CloudCallBeak<Boolean> cloudCallBeak) { + public void delInverterDevice(String homeId, String deviceId, CloudCallBeak<Boolean> cloudCallBeak) { String requestUrl = HttpApi.POST_Device_Remove; JsonObject json = new JsonObject(); - json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); + json.addProperty("homeId", homeId); json.addProperty("deviceId", deviceId); // json.addProperty("zoneType", "password");//鍖哄煙 @@ -257,10 +257,10 @@ * @param parentOid 涓婄骇璁惧鐨凮id * @param cloudCallBeak 鍥炶皟 */ - public void getInverterDeviceChildDeviceList(String parentOid, CloudCallBeak<List<CloudInverterChildDeviceBean>> cloudCallBeak) { + public void getInverterDeviceChildDeviceList(String homeId, String parentOid, CloudCallBeak<List<CloudInverterChildDeviceBean>> cloudCallBeak) { String requestUrl = HttpApi.POST_Device_ChildDevices_List; JsonObject json = new JsonObject(); - json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); + json.addProperty("homeId", homeId); json.addProperty("parentOid", parentOid); // json.addProperty("zoneType", "password");//鍖哄煙 @@ -299,9 +299,69 @@ * @param cloudCallBeak 鍥炶皟update */ public void fullUpdateOid(String homeId, List<OidBean> oidList, CloudCallBeak<Boolean> cloudCallBeak) { + if (oidList == null || oidList.size() == 0) { + HdlLogLogic.print("oid鍒楄〃涓虹┖锛屾棤娉曞叏閲忔洿鏂皁id鍒颁簯绔�--->", true); + return; + } String requestUrl = HttpApi.POST_Device_Oid; JsonObject json = new JsonObject(); json.addProperty("operationSource", "PROGRAM_ENERGY");// + json.addProperty("homeId", homeId); + JsonArray jsonArray = new JsonArray(); + for (int i = 0; i < oidList.size(); i++) { + OidBean oidBean = oidList.get(i); + JsonObject jsonObject = new JsonObject(); + jsonObject.addProperty("protocolType", oidBean.getProtocolType()); + jsonObject.addProperty("deviceType", oidBean.getDeviceType()); + 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()); + jsonObject.addProperty("addresses", oidBean.getAddresses()); + jsonObject.addProperty("parentOid", oidBean.getParentOid()); + jsonArray.add(jsonObject); + + } + json.add("devices", jsonArray); + // json.addProperty("zoneType", "password");//鍖哄煙 + + HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { + @Override + public void onSuccess(String str) { + if (cloudCallBeak != null) { + cloudCallBeak.onSuccess(true); + } + + HdlLogLogic.print("鍏ㄩ噺鏇存柊oid鍒颁簯绔垚鍔�--->", true); + + } + + @Override + public void onFailure(HDLException e) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(e); + } + HdlLogLogic.print("鍏ㄩ噺鏇存柊oid鍒颁簯绔け璐�--->" + e.getMsg() + "(" + e.getCode() + ")", true); + } + }); + + } + + + /** + * (oid)澧為噺娣诲姞 + * + * @param homeId 浣忓畢id + * @param oidList oid鍒楄〃 + * @param cloudCallBeak 鍥炶皟update + */ + public void updateOidAdd(String homeId, List<OidBean> oidList, CloudCallBeak<Boolean> cloudCallBeak) { + if (oidList == null || oidList.size() == 0) { + HdlLogLogic.print("oid鍒楄〃涓虹┖锛屾棤娉曞閲忔坊鍔爋id鍒颁簯绔�--->", true); + return; + } + String requestUrl = HttpApi.POST_Device_IncrAdd; + JsonObject json = new JsonObject(); json.addProperty("homeId", homeId); JsonArray jsonArray = new JsonArray(); for (int i = 0; i < oidList.size(); i++) { @@ -328,7 +388,7 @@ if (cloudCallBeak != null) { cloudCallBeak.onSuccess(true); } - + HdlLogLogic.print("澧為噺娣诲姞oid鍒颁簯绔垚鍔�--->"); } @Override @@ -336,6 +396,7 @@ if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } + HdlLogLogic.print("澧為噺娣诲姞oid鍒颁簯绔け璐�--->" + e.getMsg() + "(" + e.getCode() + ")", true); } }); @@ -348,10 +409,10 @@ * @param mac 璁惧mac * @param linkCallBack 鍥炶皟update */ - public void setGatewayRemoteParam(String mac, LinkCallBack<Boolean> linkCallBack) { + public void setGatewayRemoteParam(String homeId, String mac, LinkCallBack<Boolean> linkCallBack) { String requestUrl = TopicApi.SET_GATEWAY_REMOTE_EDIT; JsonObject json = new JsonObject(); - json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); + json.addProperty("homeId", homeId); json.addProperty("server_addr", AppConfigManage.getUserRegionUrl()); json.addProperty("local_secret", UserConfigManage.getInstance().getLocalSecret()); //瑙e瘑璐熻浇鏁版嵁(鍐欏瘑閽ョ粰缃戝叧涓�瀹氭槸鏄庢枃锛屽洜涓洪偅鏃剁綉鍏宠繕娌℃湁瀵嗛挜) @@ -571,7 +632,7 @@ if (list == null || list.size() == 0) { //浜戠娌℃湁缁戝畾閫嗗彉鍣�,榛樿杩斿洖鏈湴閫嗗彉鍣ㄥ垪琛�; if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } return; } @@ -585,7 +646,7 @@ public void onSuccess(DeviceRemoteInfo deviceRemoteInfo) { atomicInteger.set(atomicInteger.get() + 1); //鏇存柊閫嗗彉鍣ㄦ湰鍦扮紦瀛樹俊鎭� - refreshGatewayCacheData(true, cloudInverterDeviceBean, deviceRemoteInfo); + refreshGatewayCacheData(true, cloudInverterDeviceBean, deviceRemoteInfo, homeId); //鏈�鍚庝竴鏉℃墠鍋氬垹闄ら�嗗彉鍣ㄩ�昏緫澶勭悊 if (atomicInteger.get() == list.size()) { //鏀堕泦鍒犻櫎閫嗗彉鍣╯id @@ -606,7 +667,7 @@ removeLocalInverter(removeSidList.get(i)); } if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } } } @@ -634,7 +695,7 @@ removeLocalInverter(removeSidList.get(i)); } if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } } HdlLogLogic.print("鑾峰彇璁惧杩滅▼閫氳淇℃伅澶辫触->msg->" + e.getMsg() + "(" + e.getCode() + ")"); @@ -650,7 +711,7 @@ ///鎯呭喌2:鏈夊眬鍩熺綉锛屾病鏈夊缃�; //鏈湴鏈夐�嗗彉鍣ㄥ垪琛�,鑾峰彇浜戠缁戝畾閫嗗彉鍣ㄥけ璐�,榛樿杩斿洖鏈湴閫嗗彉鍣ㄥ垪琛�; if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } } }); @@ -684,11 +745,11 @@ public void onSuccess(DeviceRemoteInfo deviceRemoteInfo) { atomicInteger.set(atomicInteger.get() + 1); //鏇存柊閫嗗彉鍣ㄦ湰鍦扮紦瀛樹俊鎭� - refreshGatewayCacheData(false, cloudInverterDeviceBean, deviceRemoteInfo); + refreshGatewayCacheData(false, cloudInverterDeviceBean, deviceRemoteInfo, homeId); //鍒版渶鍚庝竴鏉★紝鎵嶆湁鍥炶皟 if (atomicInteger.get() == list.size()) { if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } } } @@ -699,7 +760,7 @@ //褰撴渶鍚庝竴鏉¤姹傚け璐ヤ簡锛屾墠鏈夊洖璋� if (atomicInteger.get() == list.size()) { if (cloudCallBeak != null) { - cloudCallBeak.onSuccess(getCurrentHomeGatewayList()); + cloudCallBeak.onSuccess(getCurrentHomeGatewayList(homeId)); } } HdlLogLogic.print("鑾峰彇璁惧杩滅▼閫氳淇℃伅澶辫触->msg->" + e.getMsg() + "(" + e.getCode() + ")"); @@ -893,8 +954,8 @@ * * @param deviceMac 璁惧mac */ - public void checkInverterConnectedCloud(String deviceMac, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) { - this.getCloudInverterDeviceList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<CloudInverterDeviceBean>>() { + public void checkInverterConnectedCloud(String homeId, String deviceMac, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) { + this.getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() { @Override public void onSuccess(List<CloudInverterDeviceBean> list) { CloudInverterDeviceBean cloudInverterDeviceBean = null; @@ -931,7 +992,7 @@ * @param deviceRemoteInfo 璁惧杩滅▼閫氳淇℃伅 * @param cloudInverterDeviceBean 閫嗗彉鍣� */ - private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) { + private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo, String homeId) { //鏈湴鏌ユ壘閫嗗彉鍣� GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getOsn()); if (gatewayBean == null) { @@ -948,7 +1009,7 @@ HDLLinkConfig.getInstance().setGatewayId(deviceRemoteInfo.getGatewayId());//璁剧疆gatewayId } - gatewayBean.setHomeId(UserConfigManage.getInstance().getHomeId());//浣忓畢id + gatewayBean.setHomeId(homeId);//浣忓畢id gatewayBean.setDeviceStatus(cloudInverterDeviceBean.getDeviceStatus());//璁剧疆缃戝叧鐘舵�� gatewayBean.setDeviceId(cloudInverterDeviceBean.getDeviceId());//璁剧疆link璁惧id gatewayBean.setDevice_mac(cloudInverterDeviceBean.getOsn());//璁剧疆mac -- Gitblit v1.8.0