app/src/main/java/com/hdl/photovoltaic/codes/CustomCloudCode.java
New file @@ -0,0 +1,4 @@ package com.hdl.photovoltaic.codes; public class CustomCloudCode { } app/src/main/java/com/hdl/photovoltaic/codes/CustomLocalCode.java
New file @@ -0,0 +1,4 @@ package com.hdl.photovoltaic.codes; public class CustomLocalCode { } app/src/main/java/com/hdl/photovoltaic/internet/HttpClient.java
@@ -69,7 +69,7 @@ * @param callBack 回调 * @return - */ private Disposable request(String api, String body, CloudCallBeak<String> callBack) { private Disposable requestPost(String api, String body, CloudCallBeak<String> callBack) { String requestUrl = HDLCloudUserApi.getRequestUrl(api); @@ -111,7 +111,7 @@ * @param callBack 回调 * @return - */ private Disposable requestFile(String api, File body, CloudCallBeak<String> callBack) { private Disposable requestFilePost(String api, File body, CloudCallBeak<String> callBack) { String requestUrl = HDLCloudUserApi.getRequestUrl(api); @@ -153,7 +153,7 @@ * @param callBack 回调 */ public Disposable requestHttp(String api, String body, CloudCallBeak<String> callBack) { return request(api, body, callBack); return requestPost(api, body, callBack); } /** @@ -164,7 +164,7 @@ * @param callBack 回调 */ public Disposable requestHttpFile(String api, File body, CloudCallBeak<String> callBack) { return requestFile(api, body, callBack); return requestFilePost(api, body, callBack); } app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpServer.java
@@ -20,7 +20,7 @@ public class MyNanoHttpServer extends NanoHTTPD { //声明服务端 端口 private static final Integer HTTP_PORT = 49152; public static final Integer HTTP_PORT = 49152; public MyNanoHttpServer(String hostname, int port) { super(hostname, port); @@ -66,10 +66,14 @@ com.alibaba.fastjson.JSONObject jsonParam = JSON.parseObject(paramStr); Map<String, Object> result = new HashMap<>(); //TODO 写你的业务逻辑..... String ss = HdlFileLogic.getInstance().readFile(HdlFileLogic.getInstance().getLogFilePath()); //升级驱动文件路径 String fileName = ((HTTPSession) session).getUri(); String data = ""; if (fileName.equals(HdlFileLogic.getInstance().getDriveRootPath())) { data = HdlFileLogic.getInstance().readFile(fileName); } //响应客户端 return newFixedLengthResponse(ss); return newFixedLengthResponse(data); // return newFixedLengthResponse("success"); } catch (IOException e) { e.printStackTrace(); @@ -78,11 +82,15 @@ } return newFixedLengthResponse("success"); } else if (Method.GET == session.getMethod()) { Map<String, List<String>> parameters = session.getParameters(); String ss = HdlFileLogic.getInstance().readFile(HdlFileLogic.getInstance().getLogFilePath()); //升级驱动文件路径 String fileName = ((HTTPSession) session).getUri(); String data = ""; if (fileName.contains(HdlFileLogic.getInstance().getDriveRootPath())) { data = HdlFileLogic.getInstance().readFile(fileName); } //响应客户端 return newFixedLengthResponse(ss); return newFixedLengthResponse(data); // return newFixedLengthResponse("success"); } app/src/main/java/com/hdl/photovoltaic/internet/HttpServer/MyNanoHttpService.java
@@ -2,6 +2,7 @@ import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import androidx.annotation.Nullable; @@ -9,11 +10,7 @@ public class MyNanoHttpService extends Service { private MyNanoHttpServer myNanoHttpServer = MyNanoHttpServer.getInstance(null); @Nullable @Override public IBinder onBind(Intent intent) { return null; } private final IBinder mBinder = new LocalBinder(); @Override public void onCreate() { @@ -38,4 +35,17 @@ super.onDestroy(); myNanoHttpServer.stop(); } @Nullable @Override public IBinder onBind(Intent intent) { return mBinder; } public class LocalBinder extends Binder { public MyNanoHttpService getService() { // Return this instance of LocalService so clients can call public methods return MyNanoHttpService.this; } } } app/src/main/java/com/hdl/photovoltaic/internet/api/TopicApi.java
@@ -43,6 +43,9 @@ public static final String GET_GATEWAY_TIME = "/user/%s/custom/gateway/time/get"; //网关时间修改 public static final String SET_GATEWAY_TIME_EDIT = "/user/%s/custom/gateway/time/edit"; //本地升级包推送(告诉网关下载升级包地址等信息) public static final String SET_GATEWAY_UPGRADE_INFO = "/base/%s/ota/device/upgrade/down"; /* * 网关编辑命令 * 与服务器无关的 app/src/main/java/com/hdl/photovoltaic/other/HdlCommonLogic.java
New file @@ -0,0 +1,26 @@ package com.hdl.photovoltaic.other; /** * 公共逻辑 */ public class HdlCommonLogic { private static volatile HdlCommonLogic sHdlCommonLogic; /** * 获取当前对象 * * @return HdlCommonLogic */ public static synchronized HdlCommonLogic getInstance() { if (sHdlCommonLogic == null) { synchronized (HdlCommonLogic.class) { if (sHdlCommonLogic == null) { sHdlCommonLogic = new HdlCommonLogic(); } } } return sHdlCommonLogic; } } app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -835,6 +835,39 @@ return gatewayBean == null; } /** * 检测逆变器有没有连接上云 * * @param deviceMac 设备mac */ public void checkInverterConnectedCloud(String deviceMac, CloudCallBeak<CloudInverterDeviceBean> cloudCallBeak) { this.getCloudInverterDeviceList(UserConfigManage.getInstance().getHomeId(), new CloudCallBeak<List<CloudInverterDeviceBean>>() { @Override public void onSuccess(List<CloudInverterDeviceBean> list) { CloudInverterDeviceBean cloudInverterDeviceBean = null; if (list != null && list.size() > 0) { for (int i = 0; i < list.size(); i++) { if (list.get(i).getOsn().equals(deviceMac)) { cloudInverterDeviceBean = list.get(i); break; } } } if (cloudCallBeak != null) { cloudCallBeak.onSuccess(cloudInverterDeviceBean); } } @Override public void onFailure(HDLException e) { if (cloudCallBeak != null) { cloudCallBeak.onFailure(e); } } }); } /** * 刷新逆变器缓存信息(包括设置mqtt秘钥) app/src/main/java/com/hdl/photovoltaic/other/HdlFileLogic.java
@@ -107,6 +107,18 @@ return getAPPInternalStoreFilesPath() + "/userConfigManage.txt"; } /** * 获取驱动升级文件全路径 * * @param driverCode 驱动编码 * @param version 驱动版本 * @return 全路径 */ public String getDrivePathFileName(String driverCode, String version) { String driverFileName = driverCode + "_" + version + ".zip"; return HdlFileLogic.getInstance().getDriveRootPath() + "/" + driverFileName; } //endregion //region ---------【文件夹】操作----------- app/src/main/java/com/hdl/photovoltaic/other/HdlOtaLogic.java
@@ -1,5 +1,10 @@ package com.hdl.photovoltaic.other; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.text.TextUtils; @@ -13,10 +18,19 @@ 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.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.internet.TcpClient; import com.hdl.photovoltaic.internet.api.HttpApi; import com.hdl.photovoltaic.internet.api.TopicApi; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.listener.LinkCallBack; import com.hdl.photovoltaic.utils.AppManagerUtils; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.callback.HDLLinkCallBack; import java.lang.reflect.Type; import java.util.ArrayList; @@ -45,6 +59,23 @@ } return sHdlOtaLogic; } /** * Intent专门启动本地服务 * * @return Intent */ public Intent getIntent() { return intentServer; } public void setIntent(Intent intent) { this.intentServer = intent; } private Intent intentServer = null; private ServiceConnection mServiceConnection = null; //region -----固件升级--------- @@ -381,47 +412,27 @@ * * @param driverVersionId 驱动版本Id */ public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<String> callBack) { // "driverCode":"029B9988", // "driverName":"核心层", // "imageId":"12345678", // "version":"V01.02.20" public void getDeviceDriverDownloadUrl(String driverVersionId, CloudCallBeak<DownloadUrlBean> callBack) { String requestUrl = HttpApi.POST_OTA_GET_LinkDeviceDriverDownloadUrl; JsonObject json = new JsonObject(); json.addProperty("driverVersionId", driverVersionId); HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() { @Override public void onSuccess(String json) { if (TextUtils.isEmpty(json)) { public void onSuccess(String s) { if (TextUtils.isEmpty(s)) { if (callBack != null) { callBack.onSuccess("-2"); callBack.onSuccess(new DownloadUrlBean()); } return; } Gson gson = new Gson(); Type typeOfT = new TypeToken<DownloadUrlBean>() { }.getType(); DownloadUrlBean downloadUrlBean = gson.fromJson(json, typeOfT); if (downloadUrlBean == null) { if (callBack != null) { callBack.onSuccess("-2"); } return; DownloadUrlBean downloadUrlBean = gson.fromJson(s, typeOfT); if (callBack != null) { callBack.onSuccess(downloadUrlBean); } 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 @@ -446,4 +457,72 @@ //endregion /** * 本地升级包推送(告诉网关下载升级包地址等信息) * * @param mac 物理设备mac * @param oid 物理设备oid * @param module 模块信息 * @param version 版本号 * @param size 升级包大小 * @param url 升级包下载地址(存储在本地) * @param sign_method md5加密字符串 * @param linkCallBack - */ public void pushUpgradePacketInfo(String mac, String oid, String module, String version, String size, String url, String sign_method, LinkCallBack<String> linkCallBack) { String requestUrl = TopicApi.SET_GATEWAY_UPGRADE_INFO; JsonObject json = new JsonObject(); json.addProperty("oid", oid);// 物理设备oid json.addProperty("module", module);//模块信息 json.addProperty("version", version);//版本号 // json.addProperty("is_diff", is_diff);//true=增量包,false=全量包 json.addProperty("size", size);//升级包大小 json.addProperty("url", url);//升级包下载地址 json.addProperty("sign_method", sign_method);//升级包签名类型:md5 TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, json, "", new HDLLinkCallBack() { @Override public void onSuccess(String msg) { if (linkCallBack != null) { linkCallBack.onSuccess(msg); } } @Override public void onError(HDLLinkException e) { if (linkCallBack != null) { linkCallBack.onError(e); } } }); } /** * 启动本地服务 */ public void startLocalService(ServiceConnection serviceConnection) { //本地 //1,建立本地服务; //2,告诉网关手机ip和端口; //实例化 获取ip 地址 MyNanoHttpServer.getInstance(AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance())); //MyNanoHttpServer.getInstance("127.0.0.1"); intentServer = new Intent(); intentServer.setClass(HDLApp.getInstance(), MyNanoHttpService.class); this.mServiceConnection = serviceConnection; //启动服务监听 HDLApp.getInstance().bindService(intentServer, serviceConnection, Context.BIND_AUTO_CREATE); } /** * 关闭本地服务 */ public void unLocalService() { if (intentServer != null && this.mServiceConnection != null) { HDLApp.getInstance().unbindService(this.mServiceConnection); } } } app/src/main/java/com/hdl/photovoltaic/other/HdlUniLogic.java
@@ -1,6 +1,11 @@ package com.hdl.photovoltaic.other; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.content.ServiceConnection; import android.os.IBinder; import android.text.TextUtils; import android.util.Log; @@ -12,15 +17,21 @@ 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.linkpm.sdk.utils.HDLMD5Utils; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.bean.ModBusBean; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpServer; import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.listener.LinkCallBack; import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; import com.hdl.photovoltaic.ui.bean.OidBean; import com.hdl.photovoltaic.uni.HDLUniMP; import com.hdl.photovoltaic.uni.HDLUniMPSDKManager; import com.hdl.photovoltaic.utils.AppManagerUtils; import com.hdl.photovoltaic.utils.WifiUtils; import com.hdl.sdk.link.common.exception.HDLLinkCode; import com.hdl.sdk.link.common.exception.HDLLinkException; @@ -35,8 +46,11 @@ import org.json.JSONObject; import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Objects; import io.dcloud.feature.unimp.DCUniMPJSCallback; @@ -62,6 +76,7 @@ } return sHdlUniLogic; } //region ******【原生】和【小程序】通讯的3个方法名 onOtherUniMPEventReceive();openUniMP();sendUni();****** @@ -279,7 +294,7 @@ * 注意:需要提前小程序在运行才可成功 * * @param topic 主题大类(如:UNI_EVENT_REPLY_HOME_MODEL) * @param callBackBaseBean —— * @param callBackBaseBean 自定义实体类 */ public void sendUni(String topic, HDLUniMP.UniCallBackBaseBean callBackBaseBean) { try { @@ -362,9 +377,29 @@ * 获取【设备本地固件】列表 */ 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 try { String hardwareModel = getKeyValue("hardwareModel", getKeyValue("data", data));//硬件型号 String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//系统镜像id String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//系统镜像id List<DeviceFirmwareBean> list = new ArrayList<>(); String driverFileList = HdlFileLogic.getInstance().getFirmwareRootPath(); File file = new File(driverFileList); if (file.list() != null) { for (int i = 0; i < Objects.requireNonNull(file.list()).length; i++) { String path = Objects.requireNonNull(file.list())[i]; String[] ary = path.split("/"); String[] driverInfoAry = ary[ary.length - 1].split("_"); DeviceFirmwareBean deviceFirmwareBean = new DeviceFirmwareBean(); deviceFirmwareBean.setVersion(driverInfoAry[0]); deviceFirmwareBean.setImageId(driverInfoAry[1].replace(".zip", "")); list.add(deviceFirmwareBean); } } if (callback != null) { this.uniCallbackData(list, callback); } } catch (Exception ignored) { } } /** @@ -395,6 +430,8 @@ String deviceOidId = getKeyValue("deviceOidId", getKeyValue("data", data));//设备id String firmwareVersionId = getKeyValue("firmwareVersionId", getKeyValue("data", data));//固件版本id //升级本地优先->云端升级 boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); if (isLocalConnect) { //本地 @@ -402,11 +439,32 @@ // 2,告诉网关手机ip和端口; } else { //云端 HdlOtaLogic.getInstance().upgradeDeviceFirmware(deviceOidId, firmwareVersionId, new CloudCallBeak<Boolean>() { //远程升级需要检测在逆变器有没有连接上云 HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { @Override public void onSuccess(Boolean obj) { uniCallbackData(obj, callback); public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { //1:待机,2:连接中,3:故障,4:运行,5:离线,6:逆变器连不上云(自定义) if (cloudInverterDeviceBean == null) { uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); return; } if (cloudInverterDeviceBean.getDeviceStatus() != 4) { uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), getDeviceStatusString(cloudInverterDeviceBean.getDeviceStatus()), callback); return; } //4:运行 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); } }); } @Override @@ -414,7 +472,10 @@ uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); } } /** @@ -460,23 +521,64 @@ * 获取【设备本地驱动】列表 */ 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 try { String driveCode = getKeyValue("driveCode", getKeyValue("data", data));//驱动编号或驱动名称 String osImageId = getKeyValue("osImageId", getKeyValue("data", data));//驱动类型id String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动类型id List<GatewayDriverBean> list = new ArrayList<>(); String driverFileList = HdlFileLogic.getInstance().getDriveRootPath(); File file = new File(driverFileList); if (file.list() != null) { for (int i = 0; i < Objects.requireNonNull(file.list()).length; i++) { String path = Objects.requireNonNull(file.list())[i]; String[] ary = path.split("/"); String[] driverInfoAry = ary[ary.length - 1].split("_"); GatewayDriverBean gatewayDriverBean = new GatewayDriverBean(); gatewayDriverBean.setDriverCode(driverInfoAry[0]); gatewayDriverBean.setVersion(driverInfoAry[1].replace(".zip", "")); list.add(gatewayDriverBean); } } if (callback != null) { this.uniCallbackData(list, callback); } } catch (Exception exception) { this.uniCallbackData(new ArrayList<>(), callback); } } /** * 向云端发起【设备驱动】下载指令 */ private void uniGatewayDriverDownload(Object data, DCUniMPJSCallback callback) { String deviceOid = getKeyValue("oid", getKeyValue("data", data));//网关设备oid String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码 String imageId = getKeyValue("imageId", getKeyValue("data", data));//驱动镜像id String version = getKeyValue("version", getKeyValue("data", data));//驱动版本 String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { HdlOtaLogic.getInstance().getDeviceDriverDownloadUrl(driverVersionId, new CloudCallBeak<DownloadUrlBean>() { @Override public void onSuccess(Boolean obj) { uniCallbackData(obj, callback); public void onSuccess(DownloadUrlBean downloadUrlBean) { if (downloadUrlBean == null) { uniCallbackData(null, -2, "下载链接找不到", callback); return; } HdlOtaLogic.getInstance().getDeviceDriverDownloadFile(downloadUrlBean.getDownloadUrl(), new CloudCallBeak<DownloadUrlBean>() { @Override public void onSuccess(DownloadUrlBean obj) { Gson gson = new Gson(); String json = gson.toJson(obj); String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); HdlFileLogic.getInstance().writeFile(drivePathFileName, json); } @Override public void onFailure(HDLException e) { } }); } @Override @@ -494,17 +596,72 @@ String deviceMac = getKeyValue("mac", getKeyValue("data", data));//网关设备mac(查找socket) String deviceOid = getKeyValue("oid", getKeyValue("data", data));//网关设备oid String driverVersionId = getKeyValue("driverVersionId", getKeyValue("data", data));//驱动版本id String module = getKeyValue("module", getKeyValue("data", data));//模块信息 String version = getKeyValue("version", getKeyValue("data", data));//驱动版本号 String driverCode = getKeyValue("driverCode", getKeyValue("data", data));//驱动编码 //升级本地优先->云端升级 boolean isLocalConnect = HdlDeviceLogic.getInstance().isLocalConnect(deviceMac); if (isLocalConnect) { //本地 //1,建立本地服务; // 2,告诉网关手机ip和端口; } else { HdlOtaLogic.getInstance().upgradeGatewayDriver(deviceOid, driverVersionId, new CloudCallBeak<Boolean>() { //实例化 获取ip 地址 HdlOtaLogic.getInstance().startLocalService(new ServiceConnection() { @Override public void onSuccess(Boolean obj) { uniCallbackData(obj, callback); public void onServiceConnected(ComponentName name, IBinder service) { //本地升级驱动文件路径 String drivePathFileName = HdlFileLogic.getInstance().getDrivePathFileName(driverCode, version); String data = HdlFileLogic.getInstance().readFile(drivePathFileName); String md5 = HDLMD5Utils.encodeMD5(data);//网关驱动需要 //升级驱动文件地址 String upgradeFileLocalPathUrl = AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance()) + ":" + MyNanoHttpServer.HTTP_PORT + drivePathFileName; //通知给网关升级驱动文件地址等信息 HdlOtaLogic.getInstance().pushUpgradePacketInfo(deviceMac, deviceOid, module, version, data.length() + "", upgradeFileLocalPathUrl, md5, new LinkCallBack<String>() { @Override public void onSuccess(String obj) { HdlLogLogic.print("通知给网关升级驱动文件地址成功.", false); } @Override public void onError(HDLLinkException e) { HdlLogLogic.print("通知给网关升级驱动文件地址失败,无法升级.", false); uniCallbackData(null, -2, "通知给网关升级驱动文件地址失败,无法升级,", callback); } }); } @Override public void onServiceDisconnected(ComponentName name) { uniCallbackData(null, -2, "本地服务有异常失败,无法升级,", callback); } }); } else { //远程升级需要检测在逆变器有没有连接上云 HdlDeviceLogic.getInstance().checkInverterConnectedCloud(deviceMac, new CloudCallBeak<CloudInverterDeviceBean>() { @Override public void onSuccess(CloudInverterDeviceBean cloudInverterDeviceBean) { //1:待机,2:连接中,3:故障,4:运行,5:离线,6:逆变器连不上云(自定义) if (cloudInverterDeviceBean == null) { uniCallbackData(null, 6, HDLApp.getInstance().getString(R.string.ota_not_cloud_upgrade_fails), callback); return; } if (cloudInverterDeviceBean.getDeviceStatus() != 4) { uniCallbackData(null, cloudInverterDeviceBean.getDeviceStatus(), getDeviceStatusString(cloudInverterDeviceBean.getDeviceStatus()), callback); return; } //4:运行 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); } }); } @Override @@ -512,9 +669,35 @@ uniCallbackData(null, e.getCode(), e.getMsg(), callback); } }); } } /** * @param deviceStatus 逆变器连接云端状态值( 1:待机,2:连接中,3:故障,4:运行,5:离线) * @return 返回文本 */ public String getDeviceStatusString(int deviceStatus) { switch (deviceStatus) { case 1: { return HDLApp.getInstance().getString(R.string.my_power_station_await); } case 2: { return HDLApp.getInstance().getString(R.string.my_power_station_connecting); } case 3: { return HDLApp.getInstance().getString(R.string.my_power_station_malfunction); } case 5: { return HDLApp.getInstance().getString(R.string.my_power_station_off_line); } default: return ""; } } /** * 逆变器清空住宅id * app/src/main/java/com/hdl/photovoltaic/ui/MyPowerStationActivity.java
@@ -14,6 +14,7 @@ import com.google.gson.Gson; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.linkpm.sdk.home.type.HomeType; import com.hdl.photovoltaic.HDLApp; import com.hdl.photovoltaic.R; import com.hdl.photovoltaic.base.CustomBaseActivity; import com.hdl.photovoltaic.bean.MqttInfo; @@ -23,6 +24,7 @@ import com.hdl.photovoltaic.internet.HttpServer.MyNanoHttpService; import com.hdl.photovoltaic.listener.CloudCallBeak; import com.hdl.photovoltaic.other.HdlDeviceLogic; import com.hdl.photovoltaic.other.HdlFileLogic; import com.hdl.photovoltaic.other.HdlLogLogic; import com.hdl.photovoltaic.other.HdlMqttLogic; import com.hdl.photovoltaic.other.HdlThreadLogic; @@ -76,14 +78,13 @@ //初始化mqtt客户端 initMqttClient(); String path = HdlFileLogic.getInstance().getDriveRootPath() + "/036F6C1B.zip"; MyNanoHttpServer.getInstance(AppManagerUtils.getAppManager().getIPAddress(HDLApp.getInstance())); //MyNanoHttpServer.getInstance("127.0.0.1"); Intent intentServer = new Intent(); intentServer.setClass(HDLApp.getInstance(), MyNanoHttpService.class); startService(intentServer); //实例化 获取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() { app/src/main/java/com/hdl/photovoltaic/uni/HDLUniMP.java
@@ -45,12 +45,16 @@ 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_CANCEL_DOWNLOAD = "firmwares_cancel_download";//设备固件取消下载 public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_UPGRADE = "firmwares_upgrade";//设备固件升级 public final static String UNI_EVENT_REPLY_OTA_FIRMWARES_CANCEL_UPGRADE = "firmwares_cancel_upgrade";//设备固件取消升级 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_CANCEL_DOWNLOAD = "driver_cancel_download";//设备驱动取消下载 public final static String UNI_EVENT_REPLY_OTA_DRIVER_UPGRADE = "driver_upgrade";//设备驱动升级 public final static String UNI_EVENT_REPLY_OTA_DRIVER_CANCEL_UPGRADE = "driver_cancel_upgrade";//设备驱动取消升级 /*********Wifi模块*********/ //卫锦定义 app/src/main/res/values-en/strings.xml
@@ -75,6 +75,7 @@ <string name="my_power_station_off_line">离线</string> <string name="my_power_station_malfunction">故障</string> <string name="my_power_station_operation">运行</string> <string name="my_power_station_await">待机</string> <!--设备--> <string name="device_manual_connection">手动连接</string> @@ -105,7 +106,8 @@ <string name="set_privacy">隐私设置</string> <string name="set_nickname_modification">昵称修改</string> <!--ota--> <string name="ota_not_cloud_upgrade_fails">逆变器没上云,升级失败.</string> <!--uin--> <string name="uni_open_error">页面初始化中 请等待5秒再点击</string> app/src/main/res/values-zh/strings.xml
@@ -75,6 +75,7 @@ <string name="my_power_station_off_line">离线</string> <string name="my_power_station_malfunction">故障</string> <string name="my_power_station_operation">运行</string> <string name="my_power_station_await">待机</string> <!--设备--> <string name="device_manual_connection">手动连接</string> @@ -105,7 +106,8 @@ <string name="set_privacy">隐私设置</string> <string name="set_nickname_modification">昵称修改</string> <!--ota--> <string name="ota_not_cloud_upgrade_fails">逆变器没上云,升级失败.</string> <!--uin--> <string name="uni_open_error">页面初始化中 请等待5秒再点击</string> app/src/main/res/values/strings.xml
@@ -75,6 +75,7 @@ <string name="my_power_station_off_line">离线</string> <string name="my_power_station_malfunction">故障</string> <string name="my_power_station_operation">运行</string> <string name="my_power_station_await">待机</string> <!--设备--> <string name="device_manual_connection">手动连接</string> @@ -105,6 +106,9 @@ <string name="set_privacy">隐私设置</string> <string name="set_nickname_modification">昵称修改</string> <!--ota--> <string name="ota_not_cloud_upgrade_fails">逆变器没连上云,升级失败.</string> <!--uin--> <string name="uni_open_error">页面初始化中 请等待5秒再点击</string>