From ae57b0e8ca15e818e66b4edd4696804d81796327 Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期五, 03 一月 2025 09:53:44 +0800 Subject: [PATCH] 2025年01月03日09:53:42 --- app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 274 ++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 241 insertions(+), 33 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java index 5a804ba..bc70bde 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -10,8 +10,10 @@ import android.location.Location; import android.location.LocationManager; import android.os.IBinder; +import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; +import android.util.Log; import androidx.core.app.ActivityCompat; @@ -19,6 +21,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.hdl.link.error.HDLLinkCode; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; @@ -29,10 +32,13 @@ import com.hdl.linkpm.sdk.utils.HDLMD5Utils; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; +import com.hdl.photovoltaic.bean.InverterBean; +import com.hdl.photovoltaic.bean.LocalResponse; import com.hdl.photovoltaic.bean.ModBusBean; import com.hdl.photovoltaic.bean.PageNumberObject; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; +import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; import com.hdl.photovoltaic.internet.TcpClient; import com.hdl.photovoltaic.internet.api.TopicApi; @@ -44,6 +50,7 @@ import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; import com.hdl.photovoltaic.ui.bean.Geolocation; import com.hdl.photovoltaic.ui.bean.HouseIdBean; +import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.LinkBean; import com.hdl.photovoltaic.ui.bean.MemberBean; import com.hdl.photovoltaic.ui.bean.NotRunBean; @@ -60,7 +67,6 @@ import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import com.hdl.photovoltaic.utils.NetworkUtils; import com.hdl.photovoltaic.utils.WifiUtils; -import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.bean.eventbus.BaseEventBus; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; @@ -74,6 +80,7 @@ import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; import org.greenrobot.eventbus.EventBus; +import org.json.JSONArray; import org.json.JSONObject; @@ -135,6 +142,8 @@ if (!HDLUniMP.UNI_APP_ID.equals(appId)) { return; } + long startTime = System.currentTimeMillis(); + Log.d("===寮�濮嬫椂闂�===", String.valueOf(startTime)); String type = getKeyValue("type", data);//灏忕被 String logTag = getKeyValue("logTag", data);//鏍囪uni鎸囦护 String mode_type = "澶х被-" + topic + "---" + "灏忕被-" + type;//鐢ㄦ潵鎵撳嵃鐨� @@ -180,10 +189,7 @@ case HDLUniMP.UNI_EVENT_REPLY_HOME_ADD: { String url = getKeyValue("url", getKeyValue("data", data)); //EventBus浜嬩欢鍒嗗彂 - HdlCommonLogic.getInstance().postEventBusSticky( - HDLUniMP.UNI_EVENT_REPLY_HOME_ADD, - HDLUniMP.UNI_EVENT_REPLY_HOME_ADD, - url); + HdlCommonLogic.getInstance().postEventBusSticky(HDLUniMP.UNI_EVENT_REPLY_HOME_ADD, HDLUniMP.UNI_EVENT_REPLY_HOME_ADD, url); if (callback != null) { uniSuccessCallback(type, null, callback); @@ -200,10 +206,7 @@ //鍒涘缓鐢电珯 case HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION: { //EventBus浜嬩欢鍒嗗彂 - HdlCommonLogic.getInstance().postEventBus( - HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL, - HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION, - getKeyValue("data", data)); + HdlCommonLogic.getInstance().postEventBus(HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL, HDLUniMP.UNI_EVENT_REPLY_HOME_CREATION, getKeyValue("data", data)); if (callback != null) { uniSuccessCallback(type, null, callback); } @@ -238,18 +241,20 @@ //浣忓畢銆愮數绔欍�戠紪杈� case HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT: { //EventBus浜嬩欢鍒嗗彂 - HdlCommonLogic.getInstance().postEventBus( - HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL, - HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT, - getKeyValue("data", data)); + HdlCommonLogic.getInstance().postEventBus(HDLUniMP.UNI_EVENT_REPLY_HOME_MODEL, HDLUniMP.UNI_EVENT_REPLY_HOME_EDIT, getKeyValue("data", data)); if (callback != null) { uniSuccessCallback(type, null, callback); } } break; - //鐢电珯鐨勪氦浠樹簩缁寸爜(瀹夎鍟�) +// //鐢电珯鐨勪氦浠樹簩缁寸爜(瀹夎鍟�) +// case HDLUniMP.UNI_EVENT_REPLY_HOME_DELIVERYURLQRCODE: { +// uniGetDeliveryUrlQrcode(type, data, callback); +// } +// break; + //鐢电珯鐨勪氦浠楿RL(瀹夎鍟�) case HDLUniMP.UNI_EVENT_REPLY_HOME_DELIVERYURLQRCODE: { - uniGetDeliveryUrlQrcode(type, data, callback); + uniGetDeliveryUrl(type, data, callback); } break; //鐢电珯鎵嬪姩浜や粯(瀹夎鍟�) @@ -365,9 +370,14 @@ this.uniSetDeviceStartup(mode_type, data, callback); } break; - //鑾峰彇璁惧璇︽儏 + //鑾峰彇璁惧璇︽儏锛堜簯绔澶囷級 case HDLUniMP.UNI_EVENT_REPLY_DEVICE_OPEN_DEVICE_info: { this.uniGetDeviceInfo(mode_type, data, callback); + } + break; + //鑾峰彇閫嗗彉鍣ㄨ鎯咃紙鐗╃悊璁惧锛� + case HDLUniMP.UNI_EVENT_REPLY_DEVICE_OPEN_gateway_info: { + this.uniGetGatewayInfo(mode_type, data, callback); } break; } @@ -418,12 +428,18 @@ break; //閫嗗彉鍣ㄤ互澶綉閰嶇疆 case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ETHERNET_SET: { - uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_EDIT, callback); + if (callback != null) { + uniSuccessCallback(type, "", callback); + } + //uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_EDIT, callback); } break; //閫嗗彉鍣ㄤ互澶綉鑾峰彇 case HDLUniMP.UNI_EVENT_REPLY_DEVICE_ETHERNET_GET: { - uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_GET, callback); + if (callback != null) { + uniSuccessCallback(type, "", callback); + } + //uniGetAndSetNetwork(mode_type, data, TopicApi.DELETING_GATEWAY_ETHERNET_GET, callback); } break; @@ -677,25 +693,116 @@ String localSecret = HDLLinkConfig.getInstance().getLocalSecret(); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("local_encrypt", localSecret); + HdlLogLogic.print("uni---log---鏈湴瀵嗛挜鑾峰彇---" + localSecret, true); if (callback != null) { uniSuccessCallback(type, jsonObject, callback); } - HdlLogLogic.print("uni---log---" + localSecret, true); } break; //鏈湴瀵嗛挜璁剧疆 case HDLUniMP.UNI_EVENT_REPLY_OTHER_LOCAL_ENCRYPT_SET: { String local_encrypt = getKeyValue("local_encrypt", getKeyValue("data", data)); - //閲嶆柊璁剧疆鏈湴閫氳绉橀挜 - UserConfigManage.getInstance().setLocalSecret(local_encrypt); - UserConfigManage.getInstance().Save(); - //閰嶇疆鏈湴閫氫俊鐨勪俊鎭� - HDLLinkConfig.getInstance().setLocalSecret(local_encrypt); - HdlLogLogic.print("uni---log---" + local_encrypt, true); - + if (!TextUtils.isEmpty(local_encrypt)) { + //閲嶆柊璁剧疆鏈湴閫氳绉橀挜 + UserConfigManage.getInstance().setLocalSecret(local_encrypt); + UserConfigManage.getInstance().Save(); + //閰嶇疆鏈湴閫氫俊鐨勪俊鎭� + HDLLinkConfig.getInstance().setLocalSecret(local_encrypt); + HdlLogLogic.print("uni---log---鏈湴瀵嗛挜璁剧疆---" + local_encrypt, true); + } + if (callback != null) { + uniSuccessCallback(type, true, callback); + } } break; + //link杩涜瀵嗙爜楠岃瘉 + case HDLUniMP.UNI_EVENT_REPLY_OTHER_PASSWORD_VERIFIY: { + uniCheckPasswordVerification(mode_type, data, callback); + } + break; + //鏈湴json璧勬簮鏂囦欢鑾峰彇 + case HDLUniMP.UNI_EVENT_REPLY_OTHER_GET_LOCAL_JSON: { + String url = getKeyValue("url", getKeyValue("data", data)); + String deviceModel = getKeyValue("deviceModel", getKeyValue("data", data)); + String language = getKeyValue("language", getKeyValue("data", data)); + String json = HdlESLocalJsonLogic.getInstance().readHdlESLocalJson(url, deviceModel); + if (TextUtils.isEmpty(json)) { + //鏈湴娌℃湁缂撳瓨 + HdlESLocalJsonLogic.getInstance().getHdlESLocalJson(url, deviceModel, new CloudCallBeak<String>() { + @Override + public void onSuccess(String obj) { +// if (callback != null) { +// uniSuccessCallback(type, obj, callback); +// } + String s = HdlESLocalJsonLogic.getInstance().readHdlESLocalJson(url, deviceModel); + //鏈湴缂撳瓨鏁版嵁 + if (callback != null) { + try { + if (s.startsWith("{")) { + uniSuccessCallback(type, new Gson().fromJson(s, JsonObject.class), callback); + } else if (s.startsWith("[")) { + uniSuccessCallback(type, new Gson().fromJson(s, JsonArray.class), callback); + } else { + uniSuccessCallback(type, s, callback); + } + } catch (Exception e) { + uniSuccessCallback(type, s, callback); + } + } + } + + @Override + public void onFailure(HDLException e) { + if (callback != null) { + uniExceptionCallback(type, e, callback); + } + } + }); + } else { + //鏈湴缂撳瓨鏁版嵁 + if (callback != null) { + try { + if (json.startsWith("{")) { + uniSuccessCallback(type, new Gson().fromJson(json, JsonObject.class), callback); + } else if (json.startsWith("[")) { + uniSuccessCallback(type, new Gson().fromJson(json, JsonArray.class), callback); + } else { + uniSuccessCallback(type, json, callback); + } + } catch (Exception e) { + uniSuccessCallback(type, json, callback); + } + long endTime = System.currentTimeMillis() - startTime; + Log.d("====鑰楁椂鏃堕棿====", String.valueOf(endTime)); + } + } + } + break; + } + } else if (HDLUniMP.UNI_EVENT_REPLY_COMMON_MODEL.equals(topic)) { + //缃戠粶璇锋眰妯″潡 + if (type.equals(HDLUniMP.UNI_EVENT_REPLY_UNI_SEND_TO_CLOUD)) { + String url = getKeyValue("url", getKeyValue("data", data)); + JsonObject jObject = new JsonObject(); + String body = getKeyValue("body", getKeyValue("data", data)); + if (!TextUtils.isEmpty(body)) { + try { + jObject = new Gson().fromJson(body, JsonObject.class); + } catch (Exception ignored) { + } + } + HttpClient.getInstance().requestHttp(url, jObject.toString(), new CloudCallBeak<String>() { + @Override + public void onSuccess(String jsonStr) { + uniSuccessCallback(mode_type, jsonStr, callback); + } + + @Override + public void onFailure(HDLException e) { + uniExceptionCallback(mode_type, e, callback); + } + }); } } @@ -715,7 +822,7 @@ public void openUniMP(String path, JSONObject jsonObject) { JSONObject json = this.createdJSONObject(jsonObject, true); HDLUniMPSDKManager.getInstance().openUniMP(HDLUniMP.UNI_APP_ID, path, json, HdlUniLogic.this); - HdlLogLogic.print("uni---缁勮uni鍙戦�佹暟鎹牸寮�---" + json, false); +// HdlLogLogic.print("uni---缁勮uni鍙戦�佹暟鎹牸寮�---" + json, false); } /** @@ -742,6 +849,31 @@ //endregion //region ******uni鎺ュ彛鏂规硶****** + + /** + * link杩涜鏈湴瀵嗙爜鐧诲綍楠岃瘉 + */ + private void uniCheckPasswordVerification(String type, Object data, DCUniMPJSCallback callback) { + String password = getKeyValue("password", getKeyValue("data", data)); + String mac = getKeyValue("mac", getKeyValue("data", data)); + HdlDeviceLogic.getInstance().getPasswordVerification(mac, password, new LinkCallBack<LocalResponse>() { + @Override + public void onSuccess(LocalResponse obj) { + + if (callback != null) { + uniCallbackData(type, obj.getObjects(), obj.getCode(), obj.getMsg(), callback); + } + } + + @Override + public void onError(HDLLinkException e) { + + if (callback != null) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + } + } + }); + } /** * 鐢电珯鍒犻櫎 @@ -778,7 +910,7 @@ HdlUniLogic.getInstance().openUniMP(path, null); } else { HouseIdBean houseIdBean = HouseIdList.get(0);//榛樿鎷跨涓�涓� - HdlResidenceLogic.getInstance().switchHouse(houseIdBean); + HdlResidenceLogic.getInstance().switchHouse(houseIdBean, true); JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("homeId", houseIdBean.getHomeId()); jsonObject.addProperty("homeName", houseIdBean.getHomeName()); @@ -856,6 +988,32 @@ @Override public void onSuccess(String obj) { uniSuccessCallback(type, obj, callback); + } + + @Override + public void onFailure(HDLException e) { + uniExceptionCallback(type, e, callback); + } + }); + + } + + /** + * 鐢电珯鐨勪氦浠楿Rl(瀹夎鍟�) + */ + private void uniGetDeliveryUrl(String type, Object data, DCUniMPJSCallback callback) { + String homeId = getKeyValue("homeId", getKeyValue("data", data)); + HdlResidenceLogic.getInstance().getDeliveryUrl(homeId, new CloudCallBeak<String>() { + @Override + public void onSuccess(String obj) { + try { + Gson g = new Gson(); + JsonObject jObject = g.fromJson(obj, JsonObject.class); + String deliveryUrl = jObject.get("deliveryUrl").toString(); + uniSuccessCallback(type, deliveryUrl, callback); + } catch (Exception ignored) { + uniSuccessCallback(type, obj, callback); + } } @Override @@ -2218,8 +2376,9 @@ HdlDeviceLogic.getInstance().getCurrentHomeLocalAndCloudGatewayList(homeId, new CloudCallBeak<List<GatewayBean>>() { @Override public void onSuccess(List<GatewayBean> list) { + List<GatewayBean> newList = sortLogic(list); if (callback != null) { - uniSuccessCallback(type, list, callback); + uniSuccessCallback(type, newList, callback); } //EventBus浜嬩欢鍒嗗彂,杩涘叆浣忓畢寮�濮嬭闃呬富棰� BaseEventBus baseEventBus = new BaseEventBus(); @@ -2228,7 +2387,7 @@ baseEventBus.setData(homeId); EventBus.getDefault().post(baseEventBus); //杩涙潵浣忓畢璇︽儏閮借涓婁紶涓�娆id鍒楄〃鍒颁簯绔�; - HdlDeviceLogic.getInstance().uploadOidDataToCloud(homeId, list, false, null); + HdlDeviceLogic.getInstance().uploadOidDataToCloud(homeId, newList, false, null); } @Override @@ -2239,6 +2398,31 @@ } }); + } + + /** + * 杩涜鎺掑簭锛堥�嗗彉鍣�-璐熻浇涓績锛� + * + * @param list 婧愭暟鎹� + * @return 杩斿洖鍒楄〃 + */ + private List<GatewayBean> sortLogic(List<GatewayBean> list) { + if (list == null || list.size() == 0) { + return new ArrayList<>(); + } + List<GatewayBean> newList = new ArrayList<>(); + List<GatewayBean> inverterList = new ArrayList<>(); + List<GatewayBean> lcList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + if (list.get(i).getSpk().equals(HdlDeviceLogic.getInstance().INVERTER_DEVICE_SPK)) { + inverterList.add(list.get(i)); + } else { + lcList.add(list.get(i)); + } + } + newList.addAll(inverterList); + newList.addAll(lcList); + return newList; } /** @@ -2531,7 +2715,7 @@ } /** - * 鑾峰彇璁惧璇︽儏 + * 鑾峰彇璁惧璇︽儏锛堜簯绔級 * * @param type 绫诲瀷 * @param data uni璇锋眰鏁版嵁 @@ -2549,6 +2733,28 @@ @Override public void onFailure(HDLException e) { + uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); + } + }); + } + + /** + * 鑾峰彇閫嗗彉鍣ㄨ鎯� + * + * @param type 绫诲瀷 + * @param data uni璇锋眰鏁版嵁 + * @param callback uni鍥炶皟 + */ + public void uniGetGatewayInfo(String type, Object data, DCUniMPJSCallback callback) { + String mac = getKeyValue("mac", getKeyValue("data", data)); + HdlDeviceLogic.getInstance().getGatewayInfo(mac, new LinkCallBack<InverterBean>() { + @Override + public void onSuccess(InverterBean obj) { + uniSuccessCallback(type, obj, callback); + } + + @Override + public void onError(HDLLinkException e) { uniCallbackData(type, null, e.getCode(), e.getMsg(), callback); } }); @@ -2591,12 +2797,14 @@ //HdlLogLogic.print("uni---鍙戦��---ModBus---" + Arrays.toString(modBusBean.getData()), true); //鍙戦�乵odbus鍗忚 - HDLModBusConnect.getInstance().Send(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() { + long startTime = System.currentTimeMillis(); + HDLModBusConnect.getInstance().asyncSend(modBusBean.getMac(), modBusBean.getData(), new ModbusCallBack() { @Override public void onSuccess(int[] data) { uniSuccessCallback(type, data, callback); // HdlLogLogic.print("uni---鎺ユ敹---ModBus---" + Arrays.toString(data), true); - + long endTime = System.currentTimeMillis() - startTime; + Log.d("====Mobus鑰楁椂鏃堕棿====", String.valueOf(endTime)); } @Override -- Gitblit v1.8.0