From fb51d3e3a40a0f29c656664aad65e566bc24ab42 Mon Sep 17 00:00:00 2001 From: wjc <1243177876@qq.com> Date: 星期四, 29 六月 2023 10:33:48 +0800 Subject: [PATCH] Merge branch 'wjc' --- app/src/main/java/com/hdl/photovoltaic/utils/ThroughUtils.java | 117 +++++++++++++++++++ app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java | 8 + app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java | 18 +- app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java | 10 - local.properties | 2 app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java | 10 + app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java | 45 ++++++- app/src/main/java/com/hdl/photovoltaic/HDLApp.java | 13 ++ app/src/main/java/com/hdl/photovoltaic/other/HdlMqttLogic.java | 79 +++++++++++++ app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 1 app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java | 2 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 11 + 12 files changed, 281 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java index 693ae32..98d51cd 100644 --- a/app/src/main/java/com/hdl/photovoltaic/HDLApp.java +++ b/app/src/main/java/com/hdl/photovoltaic/HDLApp.java @@ -108,4 +108,17 @@ HDLUdpConnect.getInstance().initUdp(); } +// /** +// * 鍒濆鍖杣ni app mqtt +// */ +// private void initUniMqtt() { +// try { +// Through.getInstance().setUni(false); +// //IP 鍦板潃瑕佹牴鎹疄闄呯殑鏇存敼 +// UniAppMqtt.getInstance().initMqtt(this, "tcp://192.168.3.124:1883", "Android_" + android.os.Build.BRAND + "_" + this.hashCode(), new String[]{"PCToAndroid/#"}); +// } catch (Exception e) { +// LogUtils.e("娴嬭瘯Mqtt杩炴帴鏈嶅姟绔け璐�"); +// } +// } + } diff --git a/app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java b/app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java index fee18e9..b3e8d5c 100644 --- a/app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java +++ b/app/src/main/java/com/hdl/photovoltaic/config/UserConfigManage.java @@ -47,6 +47,8 @@ private String homeId; //鏄惁鐧诲綍鐘舵�� private boolean isLogin; + //鏈湴閫氳绉橀挜 + private String localSecret; //鏄惁鏄疊绔处鍙风櫥褰� private boolean isB_account; @@ -156,6 +158,14 @@ isB_account = b; } + public String getLocalSecret() { + return localSecret == null ? "" : localSecret; + } + + public void setLocalSecret(String localSecret) { + this.localSecret = localSecret; + } + /** * 褰撳墠浣忓畢 */ diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java index 301a102..7c01dbc 100644 --- a/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java +++ b/app/src/main/java/com/hdl/photovoltaic/internet/api/HttpApi.java @@ -1,9 +1,7 @@ package com.hdl.photovoltaic.internet.api; public class HttpApi { - /** - * -----鐢ㄦ埛绠$悊--------- - */ + //region -----鐢ㄦ埛绠$悊--------- //鑾峰彇璐﹀彿鍖哄煙淇℃伅 public static final String POST_RegionByUserAccount = "/smart-footstone/region/regionByUserAccount"; //鐧诲綍鎺ュ彛 @@ -28,10 +26,8 @@ public static final String POST_GET_IMAGE_URL = "/home-wisdom/app/images/get_image_url"; //閫�鍑虹櫥褰� public static final String POST_GET_IMAGE_LOGOUT = "basis-footstone/mgmt/user/oauth/logout"; - - /** - * ------鐢电珯绠$悊(浣忓畢)-------- - */ + //endregion + //region -----鐢电珯绠$悊(浣忓畢)--------- //鐢电珯鍒楄〃 public static final String POST_PowerStation_List = "/home-wisdom/app/powerStation/page"; //鐢电珯鍒涘缓 @@ -42,10 +38,9 @@ public static final String POST_PowerStation_Info = "/home-wisdom/app/powerStation/info"; //鐢电珯缂栬緫 public static final String POST_PowerStation_Edit = "/home-wisdom/app/powerStation/edit"; + //endregion - /** - * ------璁惧绠$悊-------- - */ + //region -----璁惧绠$悊--------- //娣诲姞閫嗗彉鍣� public static final String POST_Device_Add = "/home-wisdom/app/device/independentRegister"; //鑾峰彇閫嗗彉鍣ㄥ垪琛� @@ -56,6 +51,9 @@ public static final String POST_Device_ChildDevices_List = "/home-wisdom/app/powerStation/childDevices"; //鍏ㄩ噺鏇存柊OID public static final String POST_Device_Oid = "/home-wisdom/program/device/oid/add"; + //鑾峰彇閫嗗彉鍣�(鑾峰彇璁惧杩滅▼閫氳淇℃伅) + public static final String POST_Device_remoteInfo = "/home-wisdom/program/device/remoteInfo"; + //endregion } 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 b22dc3b..dbb5f4f 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -4,6 +4,7 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.hdl.hdlhttp.HxHttp; import com.hdl.photovoltaic.bean.HttpResponsePack; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; @@ -24,6 +25,8 @@ import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; + +import io.reactivex.rxjava3.disposables.Disposable; /** * 璁惧閫昏緫鐨勭晫闈� @@ -85,13 +88,13 @@ /** * 鑾峰彇閫嗗彉鍣ㄥ垪琛� * - * @param inverterDeviceBean 閫嗗彉鍣ㄥ璞� - * @param cloudCallBeak 鍥炶皟 + * @param homeId 浣忓畢id + * @param cloudCallBeak 鍥炶皟 */ - public void getInverterDeviceList(InverterDeviceBean inverterDeviceBean, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) { + public void getInverterDeviceList(String homeId, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) { String requestUrl = HttpApi.POST_Device_List; JsonObject json = new JsonObject(); - json.addProperty("homeId", UserConfigManage.getInstance().getHomeId()); + json.addProperty("homeId", homeId); // json.addProperty("zoneType", "password");//鍖哄煙 HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() { diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlMqttLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlMqttLogic.java new file mode 100644 index 0000000..35720bf --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlMqttLogic.java @@ -0,0 +1,79 @@ +package com.hdl.photovoltaic.other; + +import com.google.gson.Gson; +import com.google.gson.JsonObject; +import com.google.gson.reflect.TypeToken; +import com.hdl.hdlhttp.HxHttp; +import com.hdl.photovoltaic.bean.HttpResponsePack; +import com.hdl.photovoltaic.internet.HttpClient; +import com.hdl.photovoltaic.internet.api.HttpApi; +import com.hdl.photovoltaic.listener.BaseSuccessFailureCallBeak; +import com.hdl.photovoltaic.listener.CloudCallBeak; +import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean; + +import java.lang.reflect.Type; +import java.util.List; + +import io.reactivex.rxjava3.disposables.Disposable; + +/** + * mqtt鐨勯�昏緫 + */ +public class HdlMqttLogic { + private static volatile HdlMqttLogic sHdlMqttLogic; + + /** + * 鑾峰彇褰撳墠瀵硅薄 + * + * @return HdlAccountLogic + */ + public static synchronized HdlMqttLogic getInstance() { + if (sHdlMqttLogic == null) { + synchronized (HdlMqttLogic.class) { + if (sHdlMqttLogic == null) { + sHdlMqttLogic = new HdlMqttLogic(); + } + } + + } + return sHdlMqttLogic; + } + + /** + * 鑾峰彇閫嗗彉鍣�(鑾峰彇璁惧杩滅▼閫氳淇℃伅) + * + * @param homeId 浣忓畢Id + * @param spk spk + * @param mac 璁惧mac + * @param cloudCallBeak 鍥炶皟 + */ + public void getDeviceRemoteInfo(String homeId, String spk, String mac, CloudCallBeak<String> cloudCallBeak) { + String requestUrl = HttpApi.POST_Device_remoteInfo; + JsonObject json = new JsonObject(); + json.addProperty("homeId", homeId); + json.addProperty("spk", spk); + json.addProperty("mac", mac); + HttpClient.getInstance().requestHttp(requestUrl, json.toString(), true, true, new BaseSuccessFailureCallBeak() { + @Override + public void onSuccess(HttpResponsePack httpResponsePack) { +// if (httpResponsePack != null && httpResponsePack.getData() != null) { +// Gson gson = new Gson(); +// String json = gson.toJson(httpResponsePack.getData()); +// Type typeOfT = new TypeToken<List<CloudInverterChildDeviceBean>>() { +// }.getType(); +// if (cloudCallBeak != null) { +// cloudCallBeak.onSuccess("list"); +// } +// } + } + + @Override + public void onFailure(Exception exception) { + if (cloudCallBeak != null) { + cloudCallBeak.onFailure(exception); + } + } + }); + + } +} diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java index fcdf6ec..54a63fe 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlResidenceLogic.java @@ -12,6 +12,10 @@ import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.ui.bean.HouseInfoBean; import com.hdl.photovoltaic.ui.bean.HouseIdBean; +import com.hdl.sdk.link.common.exception.HDLLinkException; +import com.hdl.sdk.link.core.bean.gateway.GatewayBean; +import com.hdl.sdk.link.core.callback.GatewayCallBack; +import com.hdl.sdk.link.core.config.HDLLinkConfig; import java.util.ArrayList; import java.util.List; @@ -502,21 +506,44 @@ /** * 鍒囨崲浣忓畢 * - * @param homeId 浣忓畢id + * @param houseIdBean 浣忓畢Id瀵硅薄 */ - public Boolean switchHouse(String homeId) { + public void switchHouse(HouseIdBean houseIdBean) { String oidHomeId = UserConfigManage.getInstance().getHomeId(); + if (houseIdBean.getHomeId().equals(oidHomeId)) { + return; + } + //鍒犻櫎鏃х殑浣忓畢鏂囦欢澶� HdlFileLogic.getInstance().deleteDirectory(HdlFileLogic.getInstance().getCurrentHomeRootPath()); - UserConfigManage.getInstance().setHomeId(homeId); + //閲嶆柊璁剧疆浣忓畢id + UserConfigManage.getInstance().setHomeId(houseIdBean.getHomeId()); + //閲嶆柊璁剧疆鏈湴閫氳绉橀挜 + UserConfigManage.getInstance().setLocalSecret(houseIdBean.getLocalSecret()); + //閲嶆柊鍒涘缓浣忓畢鏂囦欢澶� HdlFileLogic.getInstance().createDirectory(); - - HdlThreadLogic.runThread(new Runnable() { + //閰嶇疆鏈湴閫氫俊鐨勪俊鎭� + initLocalLinkSdk(); + HdlDeviceLogic.getInstance().searchGateway(new GatewayCallBack() { @Override - public void run() { - //鎼滅储涓�涓嬩綇瀹呰澶� + public void onSuccess(List<GatewayBean> gatewayBeanList) { + } - }, null, null); - return true; + + @Override + public void onError(HDLLinkException e) { + + } + }); + + } + + /** + * 閰嶇疆鏈湴閫氫俊鐨勪俊鎭�(tcp閫氫俊鐢ㄥ埌) + */ + private void initLocalLinkSdk() { + HDLLinkConfig.getInstance().setHomeId(UserConfigManage.getInstance().getHomeId()); + HDLLinkConfig.getInstance().setLocalSecret(UserConfigManage.getInstance().getLocalSecret()); + } 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 3179558..2d40f33 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -113,6 +113,7 @@ } break; case HDLUniMP.UNI_EVENT_REPLY_DEVICE_MODBUS_SEND: { + //鍙戦�乵odbus鍗忚 // HDLModBusConnect.getInstance().Send(uniToAndroidBean.getGatewayOid(), null, ); } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java index 427f308..829674b 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/bean/HouseIdBean.java @@ -10,6 +10,7 @@ private String power;//鍙戠數鍔熺巼 private String todayElectricity;//浠婂ぉ鍙戠數閲� private int powerStationStatus;//鐢电珯鐘舵��(鐢电珯鐘舵�� 1:姝e父(杩愯),2:绂荤嚎,3:杩炴帴涓�,4:鏁呴殰) + private String localSecret;//鏈湴閫氳绉橀挜 public String getHomeId() { return homeId == null ? "" : homeId; @@ -66,5 +67,12 @@ public void setPowerStationStatus(int powerStationStatus) { this.powerStationStatus = powerStationStatus; } + public String getLocalSecret() { + return localSecret == null ? "" : localSecret; + } + + public void setLocalSecret(String localSecret) { + this.localSecret = localSecret; + } } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java index bd3064f..7ae93a2 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java @@ -104,7 +104,7 @@ public void onClick(int position, HouseIdBean houseIdBean) { //鐐瑰嚮浣忓畢璇︽儏 HdlLogLogic.print("====鐐瑰嚮浣忓畢璇︽儏" + position); - HdlResidenceLogic.getInstance().switchHouse(houseIdBean.getHomeId()); + HdlResidenceLogic.getInstance().switchHouse(houseIdBean); String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId(); HdlUniLogic.getInstance().openUniMP(path, null); } diff --git a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java index 39b3b1f..3106d1a 100644 --- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java +++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java @@ -69,8 +69,6 @@ */ public static class UniCallBackBaseBean implements Serializable { - - private String path;//鎵撳紑灏忕▼搴忚矾寰�(鏆傛椂鐢ㄤ笉涓�) private String code;//鐘舵�佺爜 private String mes;//淇℃伅鎻忚堪 private String type;//鍔熻兘绫诲瀷 @@ -118,14 +116,6 @@ public void setType(String type) { this.type = type; - } - - public String getPath() { - return path == null ? "" : path; - } - - public void setPath(String path) { - this.path = path; } diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/ThroughUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/ThroughUtils.java new file mode 100644 index 0000000..d621f55 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/utils/ThroughUtils.java @@ -0,0 +1,117 @@ +//package com.hdl.photovoltaic.utils; +// +//import com.alibaba.fastjson.JSONObject; +//import com.hdl.photovoltaic.other.HdlUniLogic; +//import com.hdl.photovoltaic.uni.HDLUniMP; +//import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; +//import com.hdl.sdk.link.common.event.EventListener; +//import com.hdl.sdk.link.core.bean.ZigbeeResponse; +//import com.hdl.sdk.link.core.connect.HDLZigbeeConnect; +// +///** +// * Created by hxb on 2022/1/18. +// * 鍘熺敓閫忎紶鍒皍ni app +// */ +//public class ThroughUtils { +// +// final String tag = ThroughUtils.class.getName(); +// +// /** +// * 鏄惁uni鏂瑰紡锛屽惁鍒檓qtt鏂瑰紡 +// */ +// private boolean isUni=true; +// +// +// /** +// * instance +// */ +// private volatile static ThroughUtils instance; +// +// /** +// * getInstance +// * +// * @return Through +// */ +// public static synchronized ThroughUtils getInstance() { +// if (instance == null) { +// synchronized (ThroughUtils.class) { +// if (instance == null) { +// instance = new ThroughUtils(); +// } +// } +// } +// return instance; +// } +// +// EventListener throughEventListener; +// +// /** +// * 娉ㄥ唽鏂拌澶囧叆缃戠洃鍚� +// */ +// public void registerThroughListener() { +// //娉ㄥ唽鐩戝惉浜嬩欢 +// if (throughEventListener == null) { +// throughEventListener = new EventListener() { +// @Override +// public void onMessage(Object msg) { +// if (msg instanceof ZigbeeResponse) { +// ZigbeeResponse zigbeeResponse = (ZigbeeResponse) msg; +// try { +// HDLUniMP.UniCallBackBaseBean callBackBaseBean = new HDLUniMP.UniCallBackBaseBean(); +// callBackBaseBean.setTopic(zigbeeResponse.getTopic()); +// callBackBaseBean.setData(zigbeeResponse.getData()); +// if (zigbeeResponse.getTopic().startsWith("ZbDataPassthrough")) { +// //濡傛灉涓嶆槸浣跨敤mqtt鏂瑰紡锛屽氨浣跨敤uni app鎺ㄩ�佹柟寮� +// if (isUni()) { +// HdlUniLogic.getInstance().sendUni(HDLUniMP.UNI_EVENT_NOTIFICATION_DEVICE_MODEL, callBackBaseBean); +// HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, HDLUniMP.UNI_EVENT_ZigBeePassthrough, JSONObject.toJSON(callBackBaseBean)); +// } else {//浣跨敤mqtt鏂瑰紡 +// //AndroidToPC/鍞竴鏍囪瘑/uni_event" +// UniAppMqtt.getInstance().publish(String.format("AndroidToPC/%s/%s", System.currentTimeMillis(), HDLUniMP.UNI_EVENT_ZigBeePassthrough), JSONObject.toJSON(callBackBaseBean).toString()); +// } +// } +// else if(zigbeeResponse.getTopic().contains("DeviceStatusReport/")){ +// //濡傛灉涓嶆槸浣跨敤mqtt鏂瑰紡锛屽氨浣跨敤uni app鎺ㄩ�佹柟寮� +// if (isUni()) { +// HDLUniMPSDKManager.getInstance().sendUniMPEvent(HDLUniMP.UNI_APP_ID, HDLUniMP.EVENT_DeviceStatusReportPassthrough, JSONObject.toJSON(callBackBaseBean)); +// } else {//浣跨敤mqtt鏂瑰紡 +// //AndroidToPC/鍞竴鏍囪瘑/uni_event" +// UniAppMqtt.getInstance().publish(String.format("AndroidToPC/%s/%s", System.currentTimeMillis(), HDLUniMP.EVENT_DeviceStatusReportPassthrough), JSONObject.toJSON(callBackBaseBean).toString()); +// } +// } +// +// } catch (Exception e) { +// +// } +// } +// } +// }; +// HDLZigbeeConnect.getInstance().registerListener(throughEventListener); +// } +// } +// +// /** +// * 绉婚櫎鍏ㄥ眬鐩戝惉 +// */ +// public void removeThroughListener() +// { +// HDLZigbeeConnect.getInstance().removeListener(throughEventListener); +// throughEventListener=null; +// } +// +// /** +// * 鏄惁uni鏂瑰紡锛屽惁鍒檓qtt鏂瑰紡 +// * @return +// */ +// public boolean isUni() { +// return isUni; +// } +// +// /** +// * 鏄惁uni鏂瑰紡锛屽惁鍒檓qtt鏂瑰紡 +// * @param uni +// */ +// public void setUni(boolean uni) { +// isUni = uni; +// } +//} diff --git a/local.properties b/local.properties index 4142787..f1350c6 100644 --- a/local.properties +++ b/local.properties @@ -5,4 +5,4 @@ # For customization when using a Version Control System, please read the # header note. #Wed Jun 28 17:38:10 CST 2023 -sdk.dir=/Users/wenjucheng/Library/Android/sdk +sdk.dir=/Users/hdl/Library/Developer/Xamarin/android-sdk-macosx/platform-tools -- Gitblit v1.8.0