From 54a8c79222bba0644b02fe1dbc5d75e26ea50b5d Mon Sep 17 00:00:00 2001 From: mac <user@users-MacBook-Pro.local> Date: 星期二, 14 十一月 2023 18:17:58 +0800 Subject: [PATCH] 2023年11月14日18:17:48 --- app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java | 91 ++++++++++++++++++++++++++++++++++++--------- 1 files changed, 72 insertions(+), 19 deletions(-) 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 aa79f49..88f735e 100644 --- a/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java +++ b/app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java @@ -6,7 +6,22 @@ import com.google.gson.JsonArray; import com.google.gson.JsonObject; import com.google.gson.reflect.TypeToken; +import com.hdl.hdlhttp.HxHttp; +import com.hdl.linkpm.sdk.core.api.HDLCloudHomeApi; +import com.hdl.linkpm.sdk.core.callback.IDefaultCallBack; +import com.hdl.linkpm.sdk.core.callback.IResponseCallBack; import com.hdl.linkpm.sdk.core.exception.HDLException; +import com.hdl.linkpm.sdk.core.response.HDLResponse; +import com.hdl.linkpm.sdk.device.bean.DeviceOidInfoBean; +import com.hdl.linkpm.sdk.device.bean.GatewayCloudBean; +import com.hdl.linkpm.sdk.ota.HDLLinkPMOta; +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.linkpm.sdk.project.HDLLinkPMProject; +import com.hdl.linkpm.sdk.utils.HDLExceptionSubmitUtils; import com.hdl.photovoltaic.config.AppConfigManage; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; @@ -18,6 +33,7 @@ import com.hdl.photovoltaic.ui.bean.CloudInverterChildDeviceBean; import com.hdl.photovoltaic.ui.bean.CloudInverterDeviceBean; import com.hdl.photovoltaic.ui.bean.DeviceRemoteInfo; +import com.hdl.photovoltaic.ui.bean.DeviceTimeBean; import com.hdl.photovoltaic.ui.bean.OidBean; import com.hdl.sdk.link.common.exception.HDLLinkException; import com.hdl.sdk.link.core.bean.gateway.GatewayBean; @@ -28,10 +44,15 @@ import com.hdl.sdk.link.gateway.HDLLinkLocalGateway; import com.hdl.sdk.link.gateway.type.GatewayMasterType; +import org.json.JSONException; + import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; + +import io.dcloud.feature.unimp.DCUniMPJSCallback; +import io.reactivex.rxjava3.disposables.Disposable; /** @@ -69,14 +90,35 @@ if (TextUtils.isEmpty(gatewayBean.getDevice_mac())) { continue; } - if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) - && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { + if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { newList.add(gatewayBean); } } } return newList; } + + /** + * 鑾峰彇褰撳墠浣忓畢鐨勩�愪富銆戦�嗗彉鍣ㄥ垪琛� + */ + public GatewayBean getCurrentHomeMainGateway() { + List<GatewayBean> list = HDLLinkLocalGateway.getInstance().getGatewayList(); + if (list.size() > 0) { + for (int i = 0; i < list.size(); i++) { + GatewayBean gatewayBean = list.get(i); + if (TextUtils.isEmpty(gatewayBean.getDevice_mac())) { + continue; + } + if (gatewayBean.getMaster().equals(GatewayMasterType.MasterTrue) && gatewayBean.getHomeId().equals(UserConfigManage.getInstance().getHomeId())) { + //鎵惧埌杩斿洖 + return gatewayBean; + } + } + } + return null; + } + + /** * 閫嗗彉鍣ㄤ笂浼犳暟鎹埌浜戠(鍖呮嫭:sid锛宱id) @@ -353,13 +395,25 @@ * @param mac 璁惧mac * @param linkCallBack 鍥炶皟update */ - public void getGatewayTime(String mac, LinkCallBack<Boolean> linkCallBack) { + public void getGatewayTime(String mac, LinkCallBack<DeviceTimeBean> linkCallBack) { String requestUrl = TopicApi.GET_GATEWAY_TIME; TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, null, "", new HDLLinkCallBack() { @Override - public void onSuccess(String msg) { + public void onSuccess(String json) { + + if (TextUtils.isEmpty(json)) { + if (linkCallBack != null) { + linkCallBack.onSuccess(new DeviceTimeBean()); + } + return; + } + + Gson gson = new Gson(); + Type typeOfT = new TypeToken<BaseLocalResponse<DeviceTimeBean>>() { + }.getType(); + BaseLocalResponse<DeviceTimeBean> baseLocalResponse = gson.fromJson(json, typeOfT); if (linkCallBack != null) { - linkCallBack.onSuccess(true); + linkCallBack.onSuccess(baseLocalResponse.getObjects()); } } @@ -377,17 +431,16 @@ * 缃戝叧鏃堕棿淇敼 * * @param mac 璁惧mac + * @param date 鏃ユ湡 + * @param time 鏃堕棿 * @param linkCallBack 鍥炶皟update */ - public void editGatewayTime(String mac, JsonObject jsonObject, LinkCallBack<Boolean> linkCallBack) { + public void editGatewayTime(String mac, String date, String time, LinkCallBack<Boolean> linkCallBack) { String requestUrl = TopicApi.SET_GATEWAY_TIME_EDIT; -// JsonObject json = new JsonObject(); -// json.addProperty("master", "true"); -// "objects": { -// "date": "2020-08-15", -// "time": "17:25:20" -// } - TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, jsonObject, "", new HDLLinkCallBack() { + JsonObject json = new JsonObject(); + json.addProperty("date", date);// "2020-08-15" + json.addProperty("time", time);//"17:25:20" + TcpClient.getInstance().sendDataToLinkGateway(mac, requestUrl, json, "", new HDLLinkCallBack() { @Override public void onSuccess(String msg) { if (linkCallBack != null) { @@ -511,7 +564,7 @@ /** * 鑾峰彇閫嗗彉鍣ㄥ垪琛� - * 娉ㄦ剰:鏈夊缃戜互浜戠璁惧涓哄噯,鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘唴缃戜互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓紱 + * 娉ㄦ剰:鏈夊缃戜互浜戠璁惧涓哄噯;鏈湴瀛樺湪锛屼簯绔病鏈夊垯鍒犻櫎锛涘唴缃戜互鏈湴涓轰富,鎼滅储澶氬皯涓澶囧氨鏄剧ず澶氬皯涓紱 * * @param cloudCallBeak 杩斿洖閫嗗彉鍣ㄥ垪琛� */ @@ -671,7 +724,6 @@ * @param spk spk * @param mac 璁惧mac * @param cloudCallBeak 鍥炶皟 - * @return - */ public void getDeviceRemoteInfo(String homeId, String spk, String mac, CloudCallBeak<DeviceRemoteInfo> cloudCallBeak) { String requestUrl = HttpApi.POST_Device_RemoteInfo; @@ -705,7 +757,7 @@ } /** - * 鍒犻櫎鏈湴閫嗗彉鍣� + * 鍒犻櫎鏈湴缂撳瓨閫嗗彉鍣� * * @param sid 璁惧sid */ @@ -724,7 +776,7 @@ public void clearInverterHomeId(String mac, LinkCallBack<Boolean> callBeak) { String requestUrl = TopicApi.SET_GATEWAY_REMOTE_EDIT; JsonObject json = new JsonObject(); - json.addProperty("homeId",""); + json.addProperty("homeId", ""); json.addProperty("server_addr", ""); TcpClient.getInstance().sendDataToLinkGateway(mac, true, requestUrl, json, "", new HDLLinkCallBack() { @Override @@ -761,6 +813,7 @@ HDLLinkLocalGateway.getInstance().refreshGatewayByHomeIdAndSpk(UserConfigManage.getInstance().getHomeId(), spks, true, gatewayCallBack); } + /** * 鍒锋柊閫嗗彉鍣ㄧ紦瀛樹俊鎭�(鍖呮嫭璁剧疆mqtt绉橀挜锛� * 娉�: @@ -770,7 +823,7 @@ * @param deviceRemoteInfo 璁惧杩滅▼閫氳淇℃伅 * @param cloudInverterDeviceBean 閫嗗彉鍣� */ - private static void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) { + private void refreshGatewayCacheData(boolean isLocal, CloudInverterDeviceBean cloudInverterDeviceBean, DeviceRemoteInfo deviceRemoteInfo) { //鏈湴鏌ユ壘閫嗗彉鍣� GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getLocalGateway(cloudInverterDeviceBean.getOsn()); if (gatewayBean == null) { @@ -782,7 +835,7 @@ if (deviceRemoteInfo != null) { gatewayBean.setAesKey(deviceRemoteInfo.getSecret());//璁剧疆mqtt閫氳绉橀挜 gatewayBean.setGatewayId(deviceRemoteInfo.getGatewayId());//璁剧疆gatewayId - //鐢ㄤ箣鍓嶇殑搴�,搴曞眰mqtt璁㈤槄锛屽姞瑙e瘑浼氱敤鍒拌鍙傛暟; + //todo 璁剧疆鍒般�愬簱銆戦噷闈�,搴曞眰mqtt璁㈤槄锛屽姞瑙e瘑浼氱敤鍒拌鍙傛暟; HDLLinkConfig.getInstance().setAesKey(deviceRemoteInfo.getSecret());//璁剧疆mqtt閫氳绉橀挜搴� HDLLinkConfig.getInstance().setGatewayId(deviceRemoteInfo.getGatewayId());//璁剧疆gatewayId -- Gitblit v1.8.0