From 734babb3a7348050fdffe845c560ba8b0b218152 Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期一, 20 十一月 2023 18:24:43 +0800 Subject: [PATCH] 2023年11月20日18:24:36 --- app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpServer.java | 96 ++++++++++++ app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java | 61 +++++++ app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java | 1 app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java | 10 app/src/main/AndroidManifest.xml | 13 - app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java | 2 app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java | 113 +++++++++++++ app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java | 56 ++++++ app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java | 24 ++ app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpService.java | 41 +++++ app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java | 11 + app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java | 3 app/src/main/java/com/hdl/photovoltaic/ui/powerstation/HouseListFragment.java | 3 app/build.gradle | 3 app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 15 + 15 files changed, 423 insertions(+), 29 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index ed09318..c22f64a 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -130,5 +130,8 @@ implementation 'androidx.webkit:webkit:1.3.0'//3.6.15鐗堟湰涔嬪悗 蹇呴』闆嗘垚锛岀敤鏉ユ敮鎸佹殫榛戞ā寮� //********UniSDK蹇呴』娣诲姞鐨勪緷璧� end******** + //NanoHTTPD鎼缓鏈嶅姟鍣� + implementation 'org.nanohttpd:nanohttpd:2.3.1' + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3acd613..585a89c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,7 +6,6 @@ <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" tools:ignore="ProtectedPermissions" /> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> --> - <!-- <uses-permission android:name="android.permission.CAMERA" /> --> <uses-permission android:name="android.permission.VIBRATE" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> --> <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> --> <!-- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> --> @@ -18,7 +17,7 @@ <uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE" /> <!-- <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> --> <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /> <!-- wifi鐘舵�佹潈闄� --> <uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> - <uses-permission android:name="android.permission.INTERNET" /> <!-- 浣嶇疆淇℃伅 --> + <uses-permission android:name="android.permission.INTERNET" /><!--寮�鍚綉缁滄潈闄�--><!-- 浣嶇疆淇℃伅 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 濡傛灉鏄畨鍗�10.0锛岄渶瑕佸悗鍙拌幏鍙栬繛鎺ョ殑wifi鍚嶇О鍒欐坊鍔犺繘绋嬭幏鍙栦綅缃俊鎭潈闄� --> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- android 10.0浣跨敤wifi api鏂版坊鍔犵殑鏉冮檺 --> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> @@ -30,7 +29,6 @@ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- bugly鎵�闇�鏉冮檺 start --> <uses-permission android:name="android.permission.CAMERA" /> <!-- <uses-permission android:name="android.permission.INTERNET" /> --> <!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> --> - <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> @@ -43,15 +41,12 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- bugly鎵�闇�鏉冮檺 end --> <!-- UNI SDK 鍩哄骇鍒犻櫎鐨勯儴鍒嗘潈闄� start --> - <uses-permission android:name="android.permission.CAMERA" /> - <uses-permission android:name="android.permission.INTERNET" /> <!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> --> + <!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> --> <!-- <uses-feature android:name="android.hardware.camera.autofocus" /> --> - <!-- <uses-permission android:name="android.permission.CAMERA" /> --> <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" /> --> <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" /> --> <!-- 璁块棶闂厜鐏� --> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> - <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" /> @@ -62,7 +57,6 @@ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> - <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="com.hdl.debugtreasure.permission.JPUSH_MESSAGE" /> <uses-permission android:name="android.permission.CALL_PHONE" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> @@ -113,6 +107,9 @@ </intent-filter> </activity> + <!--娉ㄥ唽鏈嶅姟--> + <service android:name="com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService" /> + <meta-data android:name="design_height_in_dp" android:value="812" /> diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpServer.java b/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpServer.java new file mode 100644 index 0000000..7653899 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpServer.java @@ -0,0 +1,96 @@ +package com.hdl.photovoltaic.internet.HttpServer; + +import android.text.TextUtils; + +import com.alibaba.fastjson.JSON; +import com.hdl.photovoltaic.other.HdlFileLogic; + + +import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import fi.iki.elonen.NanoHTTPD; + +/** + * 鏈湴鏈嶅姟鍣� + */ +public class MyNanoHttpServer extends NanoHTTPD { + + //澹版槑鏈嶅姟绔� 绔彛 + private static final Integer HTTP_PORT = 49152; + + public MyNanoHttpServer(String hostname, int port) { + super(hostname, port); + } + + private volatile static MyNanoHttpServer myNanoHttpServer; + + //TODO 鍗曚緥妯″紡锛岃幏鍙栧疄渚嬪璞★紝骞朵紶鍏ュ綋鍓嶆満鍣↖P + public static MyNanoHttpServer getInstance(String ipAddress) { + if (myNanoHttpServer == null) { + synchronized (MyNanoHttpServer.class) { + if (myNanoHttpServer == null) { + myNanoHttpServer = new MyNanoHttpServer(ipAddress, HTTP_PORT); + } + } + } + return myNanoHttpServer; + } + + @Override + public Response serve(IHTTPSession session) { + //TODO 瑙e喅瀹㈡埛绔姹傚弬鏁版惡甯︿腑鏂囷紝鍑虹幇涓枃涔辩爜闂 + ContentType ct = new ContentType(session.getHeaders().get("content-type")).tryUTF8(); + session.getHeaders().put("content-type", ct.getContentTypeHeader()); + return dealWith(session); + } + + private Response dealWith(IHTTPSession session) { + Date dateTime = new Date(); + if (Method.POST == session.getMethod()) { + //鑾峰彇璇锋眰澶存暟鎹� + Map<String, String> header = session.getHeaders(); + //鑾峰彇浼犲弬鍙傛暟 + Map<String, String> params = new HashMap<String, String>(); + try { + session.parseBody(params); + String paramStr = params.get("postData"); + if (TextUtils.isEmpty(paramStr)) { + return newFixedLengthResponse("success"); + } + paramStr = paramStr.replace("\r\n", " "); + + com.alibaba.fastjson.JSONObject jsonParam = JSON.parseObject(paramStr); + Map<String, Object> result = new HashMap<>(); + //TODO 鍐欎綘鐨勪笟鍔¢�昏緫..... + + String ss = HdlFileLogic.getInstance().readFile(HdlFileLogic.getInstance().getLogFilePath()); + //鍝嶅簲瀹㈡埛绔� + return newFixedLengthResponse(ss); +// return newFixedLengthResponse("success"); + } catch (IOException e) { + e.printStackTrace(); + } catch (ResponseException e) { + e.printStackTrace(); + } + return newFixedLengthResponse("success"); + } else if (Method.GET == session.getMethod()) { + + Map<String, List<String>> parameters = session.getParameters(); + String ss = HdlFileLogic.getInstance().readFile(HdlFileLogic.getInstance().getLogFilePath()); + //鍝嶅簲瀹㈡埛绔� + return newFixedLengthResponse(ss); +// return newFixedLengthResponse("success"); + } + + return newFixedLengthResponse("404"); + } + + public static Response newFixedLengthResponse(String msg) { + return newFixedLengthResponse(Response.Status.OK, NanoHTTPD.MIME_HTML, msg); + } + +} diff --git a/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpService.java b/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpService.java new file mode 100644 index 0000000..007d757 --- /dev/null +++ b/app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpService.java @@ -0,0 +1,41 @@ +package com.hdl.photovoltaic.internet.HttpServer; + +import android.app.Service; +import android.content.Intent; +import android.os.IBinder; + +import androidx.annotation.Nullable; + +public class MyNanoHttpService extends Service { + private MyNanoHttpServer myNanoHttpServer = MyNanoHttpServer.getInstance(null); + + @Nullable + @Override + public IBinder onBind(Intent intent) { + return null; + } + + @Override + public void onCreate() { + super.onCreate(); + try { + myNanoHttpServer.start(); + } catch (Exception e) { + e.printStackTrace(); + startService(new Intent(this, MyNanoHttpService.class)); + } + } + + + @Override + public int onStartCommand(Intent intent, int flags, int startId) { + return super.onStartCommand(intent, flags, startId); + } + + + @Override + public void onDestroy() { + super.onDestroy(); + myNanoHttpServer.stop(); + } +} 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 27b5ee8..0a4b5c0 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -563,7 +563,7 @@ } /** - * 鑾峰彇閫嗗彉鍣ㄥ垪琛� + * 鑾峰彇閫嗗彉鍣ㄥ垪琛�(鏁村悎浜戠鍜屾湰鍦板垪琛�) * 娉ㄦ剰:鏈夊缃戜互浜戠璁惧涓哄噯,鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘唴缃戜互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓紱 * * @param cloudCallBeak 杩斿洖閫嗗彉鍣ㄥ垪琛� @@ -667,7 +667,7 @@ @Override public void onError(HDLLinkException e) { - //澶栫綉鍙湁1鎯呭喌(鏈湴鎼滅储閫嗗彉鍣ㄥ垪琛ㄥけ璐ヤ簡) + //澶栫綉鍙湁1绉嶆儏鍐�(鏈湴鎼滅储閫嗗彉鍣ㄥ垪琛ㄥけ璐ヤ簡) HdlDeviceLogic.getInstance().getCloudInverterDeviceList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<CloudInverterDeviceBean>>() { @Override public void onSuccess(List<CloudInverterDeviceBean> list) { @@ -824,6 +824,17 @@ HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(UserConfigManage.getInstance().getHomeId(), spks, true, gatewayCallBack); } + /** + * 鍒ゆ柇鏄湰鍦拌繛鎺� + * + * @param deviceMac 璁惧mac + * @return true=鏈湴杩炴帴 + */ + public boolean isLocalConnect(String deviceMac) { + GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(deviceMac); + return gatewayBean == null; + } + /** * 鍒锋柊閫嗗彉鍣ㄧ紦瀛樹俊鎭�(鍖呮嫭璁剧疆mqtt绉橀挜锛� diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java index fb26833..69b3e95 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java @@ -79,17 +79,32 @@ } /** + * 鑾峰彇瀛樻斁銆愰┍鍔ㄦ枃浠跺す銆戞牴璺緞 + */ + public String getDriveRootPath() { + return getAPPInternalStoreFilesPath() + "/upgrade/drive"; + } + + + /** + * 鑾峰彇瀛樻斁銆愬浐浠舵枃浠跺す銆戞牴璺緞 + */ + public String getFirmwareRootPath() { + return getAPPInternalStoreFilesPath() + "/upgrade/firmware"; + } + + /** * 鑾峰彇銆愭棩蹇楁枃浠躲�戝叏璺緞 */ public String getLogFilePath() { - return getCurrentHomeRootPath() + "/Log.txt"; + return getCurrentHomeRootPath() + "/log.txt"; } /** * 鑾峰彇銆愮敤鎴锋枃浠躲�戝叏璺緞 */ public String getUserFilePath() { - return getAPPInternalStoreFilesPath() + "/UserConfigManage.txt"; + return getAPPInternalStoreFilesPath() + "/userConfigManage.txt"; } //endregion @@ -102,6 +117,11 @@ public void createDirectory() { //瀛樻斁浣忓畢淇℃伅 this.createFileDir(this.getCurrentHomeRootPath()); + //椹卞姩鏂囦欢 + this.createFileDir(this.getDriveRootPath()); + //鍥轰欢鏂囦欢 + this.createFileDir(this.getFirmwareRootPath()); + } /** diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java index 2945f6a..896bfc9 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlLogLogic.java @@ -75,7 +75,7 @@ */ public static void writeLog(String strLog) { synchronized (HdlLogLogic.class) { - strLog = TimeUtils.getTimeFromTimestamp(System.currentTimeMillis()) + "s%" + " " + strLog;//鍔犳墦鍗版椂闂�(s%鍗犱綅绗︼紝鏄剧ず鏃堕棿鏃惰缃笉鍚屽瓧浣撻鑹�) + strLog = TimeUtils.getTimeFromTimestamp(System.currentTimeMillis()) + "s%" + " " + strLog;//鍔犳墦鍗版椂闂�(s%鍗犱綅绗︼紝璁剧疆鏄剧ず鏃堕棿涓嶅悓瀛椾綋棰滆壊) HdlFileLogic.getInstance().appendFile(HdlFileLogic.getInstance().getLogFilePath(), strLog); } } diff --git a/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java b/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java index ca50153..d858f8c 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java @@ -208,6 +208,12 @@ * @param firmwareVersionId 鍥轰欢鐗堟湰Id */ public void getDeviceFirmwareDownloadUrl(String firmwareVersionId, CloudCallBeak<DownloadUrlBean> callBack) { +// "protocolType":"bus", +// "deviceModel":"029B9988", +// "firmwareNameEn":"鏍稿績灞�", +// "firmwareNameCn":"鏍稿績灞�", +// "imageId":"12345678", +// "version":"V01.02.20" String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceFirmwareDownloadUrl; JsonObject json = new JsonObject(); json.addProperty("firmwareVersionId", firmwareVersionId); @@ -237,6 +243,17 @@ } } }); + } + + /** + * 鍚戜簯绔幏鍙栥�愯澶囧浐浠躲�戜笅杞藉崌绾ф枃浠� + * + * @param downloadUrl 浜戠鍥轰欢鍦板潃 + */ + public void getDeviceFirmwareDownloadFile(String downloadUrl, CloudCallBeak<DownloadUrlBean> callBack) { + String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceFirmwareDownloadUrl; + JsonObject json = new JsonObject(); + } //endregion @@ -364,7 +381,11 @@ * * @param driverVersionId 椹卞姩鐗堟湰Id */ - public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<DownloadUrlBean> callBack) { + public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<String> callBack) { +// "driverCode":"029B9988", +// "driverName":"鏍稿績灞�", +// "imageId":"12345678", +// "version":"V01.02.20" String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceDriverDownloadUrl; JsonObject json = new JsonObject(); json.addProperty("driverVersionId", driverVersionId); @@ -374,7 +395,7 @@ if (TextUtils.isEmpty(json)) { if (callBack != null) { - callBack.onSuccess(new DownloadUrlBean()); + callBack.onSuccess("-2"); } return; } @@ -382,9 +403,25 @@ Type typeOfT = new TypeToken<DownloadUrlBean>() { }.getType(); DownloadUrlBean downloadUrlBean = gson.fromJson(json, typeOfT); - if (callBack != null) { - callBack.onSuccess(downloadUrlBean); + if (downloadUrlBean == null) { + if (callBack != null) { + callBack.onSuccess("-2"); + } + return; } + getDeviceDriverDownloadFile(downloadUrlBean.getDownloadUrl(), new CloudCallBeak<DownloadUrlBean>() { + @Override + public void onSuccess(DownloadUrlBean obj) { + String full = HdlFileLogic.getInstance().getDriveRootPath() + "/" + driverVersionId; + HdlFileLogic.getInstance().writeFile(full, obj.toString()); + } + + @Override + public void onFailure(HDLException e) { + + } + }); + } @Override @@ -396,6 +433,17 @@ }); } + /** + * 鍚戜簯绔幏鍙栥�愯澶囬┍鍔ㄣ�戜笅杞藉崌绾ф枃浠� + * + * @param downloadUrl 浜戠鍥轰欢鍦板潃 + */ + public void getDeviceDriverDownloadFile(String downloadUrl, CloudCallBeak<DownloadUrlBean> callBack) { + String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceFirmwareDownloadUrl; + JsonObject json = new JsonObject(); + + } + //endregion } 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 ff4307a..78ed634 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java @@ -10,6 +10,7 @@ import com.hdl.linkpm.sdk.ota.bean.CloudDeviceFirmwaresBean; import com.hdl.linkpm.sdk.ota.bean.CloudGatewayDriversBean; import com.hdl.linkpm.sdk.ota.bean.DeviceFirmwareBean; +import com.hdl.linkpm.sdk.ota.bean.DownloadUrlBean; import com.hdl.linkpm.sdk.ota.bean.GatewayDriverBean; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.bean.ModBusBean; @@ -210,6 +211,16 @@ this.uniGetNewDeviceFirmwares(data, callback); } break; + //璁惧鏈湴鍥轰欢鍒楄〃 + case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_LOCAL: { + this.uniGetLocalFirmwares(data, callback); + } + break; + //璁惧鍥轰欢涓嬭浇 + case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_DOWNLOAD: { + this.uniDeviceFirmwareDownload(data, callback); + } + break; //璁惧鍥轰欢鍗囩骇 case HDLUniMP.UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE: { this.uniUpgradeDeviceFirmware(data, callback); @@ -223,6 +234,16 @@ //璁惧鏂伴┍鍔ㄥ垪琛� case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_NEW: { this.uniGetNewGatewayDrivers(data, callback); + } + break; + //璁惧鏈湴椹卞姩鍒楄〃 + case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_LOCAL: { + this.uniGetLocalDrivers(data, callback); + } + break; + //璁惧椹卞姩涓嬭浇 + case HDLUniMP.UNI_EVENT_REPLY_OTA_DRIVER_DOWNLOAD: { + this.uniGatewayDriverDownload(data, callback); } break; //璁惧椹卞姩鍗囩骇 @@ -338,14 +359,23 @@ } /** - * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戝崌绾TA鎸囦护 + * 鑾峰彇銆愯澶囨湰鍦板浐浠躲�戝垪琛� */ - private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) { + private void uniGetLocalFirmwares(Object data, DCUniMPJSCallback callback) { + String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//纭欢鍨嬪彿 + String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//绯荤粺闀滃儚id + String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//绯荤粺闀滃儚id + } + + /** + * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戜笅杞芥寚浠� + */ + private void uniDeviceFirmwareDownload(Object data, DCUniMPJSCallback callback) { String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//璁惧id String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id - HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { + HdlOtaLogic.getInstance().getDeviceFirmwareDownloadUrl(firmwareVersionId, new CloudCallBeak<DownloadUrlBean>() { @Override - public void onSuccess(Boolean obj) { + public void onSuccess(DownloadUrlBean obj) { uniCallbackData(obj, callback); } @@ -354,6 +384,37 @@ uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); + } + + /** + * 鍚戜簯绔彂璧枫�愯澶囧浐浠躲�戝崌绾TA鎸囦护 + */ + private void uniUpgradeDeviceFirmware(Object data, DCUniMPJSCallback callback) { + + String deviceMac = getKeyValue("mac", getKeyValue("data", data));//缃戝叧璁惧mac锛堟煡鎵緎ocket锛� + String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//璁惧id + String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//鍥轰欢鐗堟湰id + + boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); + if (isLocalConnect) { + //鏈湴 + //1,寤虹珛鏈湴鏈嶅姟锛� + // 2锛屽憡璇夌綉鍏虫墜鏈篿p鍜岀鍙o紱 + + } else { + //浜戠 + HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(obj, callback); + } + + @Override + public void onFailure(HDLException e) { + uniCallbackData(null, e.getCode(), e.getMsg(), callback); + } + }); + } } /** @@ -396,9 +457,20 @@ } /** - * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄣ�戝崌绾TA鎸囦护 + * 鑾峰彇銆愯澶囨湰鍦伴┍鍔ㄣ�戝垪琛� */ - private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) { + private void uniGetLocalDrivers(Object data, DCUniMPJSCallback callback) { + String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//椹卞姩缂栧彿鎴栭┍鍔ㄥ悕绉� + String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//椹卞姩绫诲瀷id + String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩绫诲瀷id + } + + /** + * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄣ�戜笅杞芥寚浠� + */ + private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) { + + String deviceOid = getKeyValue("oid", getKeyValue("data", data));//缃戝叧璁惧oid String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩鐗堟湰id HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { @@ -415,6 +487,35 @@ } /** + * 鍚戜簯绔彂璧枫�愯澶囬┍鍔ㄣ�戝崌绾TA鎸囦护 + */ + private void uniUpgradeGatewayDriver(Object data, DCUniMPJSCallback callback) { + + String deviceMac = getKeyValue("mac", getKeyValue("data", data));//缃戝叧璁惧mac锛堟煡鎵緎ocket锛� + String deviceOid = getKeyValue("oid", getKeyValue("data", data));//缃戝叧璁惧oid + String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//椹卞姩鐗堟湰id + boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); + if (isLocalConnect) { + //鏈湴 + //1,寤虹珛鏈湴鏈嶅姟锛� + // 2锛屽憡璇夌綉鍏虫墜鏈篿p鍜岀鍙o紱 + + } else { + HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { + @Override + public void onSuccess(Boolean obj) { + uniCallbackData(obj, callback); + } + + @Override + public void onFailure(HDLException e) { + uniCallbackData(null, e.getCode(), e.getMsg(), callback); + } + }); + } + } + + /** * 閫嗗彉鍣ㄦ竻绌轰綇瀹卛d * * @param data uni鏁版嵁 diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java index 3bf3d37..de54baa 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/HomeLoginActivity.java @@ -27,7 +27,6 @@ import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.UserConfigManage; -import com.hdl.photovoltaic.other.HdlFileLogic; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.ui.account.ChangePassword; import com.hdl.photovoltaic.ui.account.RegisterAccountActivity; @@ -41,7 +40,6 @@ import com.hdl.photovoltaic.widget.ConfirmationCancelDialog1; import java.util.List; -import java.util.Locale; /** * 鐧诲綍鐨勭晫闈� @@ -53,6 +51,7 @@ @Override public Object getContentView() { + viewBinding = ActivityHomeLoginBinding.inflate(getLayoutInflater()); return viewBinding.getRoot(); } diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java index 7e204c2..bc6dd9c 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java @@ -4,6 +4,7 @@ import androidx.appcompat.content.res.AppCompatResources; import android.Manifest; +import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Process; @@ -18,6 +19,8 @@ import com.hdl.photovoltaic.bean.MqttInfo; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.databinding.ActivityMyPowerStationBinding; +import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; +import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlLogLogic; @@ -64,7 +67,6 @@ @Override public void onBindView(Bundle savedInstanceState) { - //鍒濆鍖� initView(); //鍒濆鍖栫晫闈㈢洃鍚櫒 @@ -75,6 +77,13 @@ initMqttClient(); + //瀹炰緥鍖� 鑾峰彇ip 鍦板潃 + MyNanoHttpServer.getInstance(AppManagerUtils.getAppManager().getIPAddress(this)); +// MyNanoHttpServer.getInstance("127.0.0.1"); + Intent intent = new Intent(); + intent.setClass(this, MyNanoHttpService.class); + //鍚姩鏈嶅姟鐩戝惉 + startService(intent); } private void initEvent() { diff --git a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java index 9236664..f85c6af 100644 --- a/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java +++ b/app/src/main/java/com/hdl/photovoltaic/ui/StartActivity.java @@ -8,6 +8,7 @@ import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.config.UserConfigManage; +import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlResidenceLogic; import com.hdl.photovoltaic.ui.bean.HouseIdBean; 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 5f7071b..e24ddaf 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 @@ -110,6 +110,9 @@ HdlResidenceLogic.getInstance().switchHouse(houseIdBean); String path = HDLUniMP.UNI_EVENT_OPEN_HOME_DETAILS + "?homeId=" + houseIdBean.getHomeId() + "&homeName=" + houseIdBean.getHomeName(); HdlUniLogic.getInstance().openUniMP(path, null); + HdlLogLogic.print("鐐瑰嚮浣忓畢璇︽儏===1", true); + HdlLogLogic.print("鐐瑰嚮浣忓畢璇︽儏===2", true); + HdlLogLogic.print("鐐瑰嚮浣忓畢璇︽儏===3", true); } }); 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 1157256..5f5fb54 100644 --- a/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java +++ b/app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java @@ -41,11 +41,15 @@ /*********OTA妯″潡*********/ public final static String UNI_EVENT_REPLY_OTA_MODEL = "uni_ota_model";//鍗囩骇妯″潡(澶х被) public final static String UNI_EVENT_REPLY_OTA_CLOUD_OID_LIST = "cloud_oid_list";//鍚戜簯绔幏鍙杘id鍒楄〃 - public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_LIST = "firmwares_list";//褰撳墠璁惧鍥轰欢鍒楄〃 + public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_LIST = "firmwares_current_list";//褰撳墠璁惧鍥轰欢鍒楄〃 public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_NEW_LIST = "firmwares_new_list";//璁惧鏂板浐浠跺垪琛� + public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_LOCAL = "firmwares_local_list";//璁惧鏈湴鍥轰欢鍒楄〃 + public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_DOWNLOAD = "firmwares_download";//璁惧鍥轰欢涓嬭浇 public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE = "firmwares_upgrade";//璁惧鍥轰欢鍗囩骇 - public final static String UNI_EVENT_REPLY_OTA_DRIVER_LIST = "driver_list";//褰撳墠璁惧椹卞姩鍒楄〃 - public final static String UNI_EVENT_REPLY_OTA_DRIVER_NEW = "driver_new";//璁惧鏂伴┍鍔ㄥ垪琛� + public final static String UNI_EVENT_REPLY_OTA_DRIVER_LIST = "driver_current_list";//褰撳墠璁惧椹卞姩鍒楄〃 + public final static String UNI_EVENT_REPLY_OTA_DRIVER_NEW = "driver_new_list";//璁惧鏂伴┍鍔ㄥ垪琛� + public final static String UNI_EVENT_REPLY_OTA_DRIVER_LOCAL = "driver_local_list";//璁惧鏈湴椹卞姩鍒楄〃 + public final static String UNI_EVENT_REPLY_OTA_DRIVER_DOWNLOAD = "driver_download";//璁惧椹卞姩涓嬭浇 public final static String UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE = "driver_upgrade";//璁惧椹卞姩鍗囩骇 diff --git a/app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java b/app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java index 5ba006c..b85206e 100644 --- a/app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java +++ b/app/src/main/java/com/hdl/photovoltaic/utils/AppManagerUtils.java @@ -4,7 +4,18 @@ import android.content.Context; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; +import android.net.wifi.WifiInfo; +import android.net.wifi.WifiManager; +import com.hdl.photovoltaic.HDLApp; + +import java.net.Inet4Address; +import java.net.InetAddress; +import java.net.NetworkInterface; +import java.net.SocketException; +import java.util.Enumeration; import java.util.Iterator; import java.util.Stack; @@ -166,5 +177,55 @@ // } // } + /** + * 鑾峰緱IP鍦板潃锛屽垎涓轰袱绉嶆儏鍐�: + * 涓�锛氭槸wifi涓嬶紱 + * 浜岋細鏄Щ鍔ㄧ綉缁滀笅锛� + */ + public String getIPAddress(Context context) { + NetworkInfo info = ((ConnectivityManager) context + .getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); + if (info != null && info.isConnected()) { + if (info.getType() == ConnectivityManager.TYPE_MOBILE) {//褰撳墠浣跨敤2G/3G/4G缃戠粶 + try { + //Enumeration<NetworkInterface> en=NetworkInterface.getNetworkInterfaces(); + for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements(); ) { + NetworkInterface intf = en.nextElement(); + for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements(); ) { + InetAddress inetAddress = enumIpAddr.nextElement(); + if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) { + return inetAddress.getHostAddress(); + } + } + } + } catch (SocketException e) { + e.printStackTrace(); + } + } else if (info.getType() == ConnectivityManager.TYPE_WIFI) {//褰撳墠浣跨敤鏃犵嚎缃戠粶 + WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + WifiInfo wifiInfo = wifiManager.getConnectionInfo(); + //璋冪敤鏂规硶灏唅nt杞崲涓哄湴鍧�瀛楃涓� + String ipAddress = intIP2StringIP(wifiInfo.getIpAddress());//寰楀埌IPV4鍦板潃 + return ipAddress; + } + } else { + //褰撳墠鏃犵綉缁滆繛鎺�,璇峰湪璁剧疆涓墦寮�缃戠粶 + } + return null; + } + + /** + * 灏嗗緱鍒扮殑int绫诲瀷鐨処P杞崲涓篠tring绫诲瀷 + * + * @param ip int绫诲瀷 + * @return - + */ + public static String intIP2StringIP(int ip) { + return (ip & 0xFF) + "." + + ((ip >> 8) & 0xFF) + "." + + ((ip >> 16) & 0xFF) + "." + + (ip >> 24 & 0xFF); + } + } -- Gitblit v1.8.0