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