wjc
2025-01-10 2e91f8abdcb87feda9e237895d4460a19fd7aed8
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -8,6 +8,8 @@
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hdl.linkpm.sdk.core.exception.HDLException;
import com.hdl.photovoltaic.bean.InverterBean;
import com.hdl.photovoltaic.bean.LocalResponse;
import com.hdl.photovoltaic.bean.PageNumberObject;
import com.hdl.photovoltaic.config.AppConfigManage;
import com.hdl.photovoltaic.config.UserConfigManage;
@@ -909,7 +911,7 @@
     * @param mac          网关mac
     * @param linkCallBack 回调
     */
    public void getGatewayInfo(String mac, LinkCallBack<GatewayBean> linkCallBack) {
    public void getGatewayInfo(String mac, LinkCallBack<InverterBean> linkCallBack) {
        String requestUrl = TopicApi.GET_GATEWAY_INFO;
        JsonObject json = new JsonObject();
        json.addProperty("device_mac", mac);
@@ -925,11 +927,11 @@
                }
                Gson gson = new Gson();
                Type typeOfT = new TypeToken<BaseLocalResponse<GatewayBean>>() {
                Type typeOfT = new TypeToken<BaseLocalResponse<InverterBean>>() {
                }.getType();
                BaseLocalResponse<GatewayBean> baseLocalResponse = gson.fromJson(json, typeOfT);
                BaseLocalResponse<InverterBean> baseLocalResponse = gson.fromJson(json, typeOfT);
                if (baseLocalResponse == null || baseLocalResponse.getObjects() == null) {
                    linkCallBack.onSuccess(new GatewayBean());
                    linkCallBack.onSuccess(new InverterBean());
                } else {
                    linkCallBack.onSuccess(baseLocalResponse.getObjects());
                }
@@ -1166,19 +1168,63 @@
            @Override
            public void onError(HDLLinkException e) {
                //外网只有1种情况(本地搜索逆变器列表失败了)
                //向云端获取逆变器列表
                getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
                    @Override
                    public void onSuccess(List<CloudInverterDeviceBean> list) {
                        //外网进来先【默认】清空本地逆变器列表
                        HDLLinkLocalGateway.getInstance().getGatewayList().clear();
                        setDeviceRemoteInfo(list, homeId, cloudCallBeak);
                    public void onSuccess(List<CloudInverterDeviceBean> cloudInverterList) {
                        //再向云端获取负载中心列表
                        getLoadCentreDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
                            @Override
                            public void onSuccess(List<CloudInverterDeviceBean> loadCentreDeviceList) {
                                //外网进来先【默认】清空本地逆变器列表
                                HDLLinkLocalGateway.getInstance().getGatewayList().clear();
                                List<CloudInverterDeviceBean> newList = new ArrayList<>();
                                if (cloudInverterList != null) {
                                    newList.addAll(cloudInverterList);
                                }
                                if (loadCentreDeviceList != null) {
                                    newList.addAll(loadCentreDeviceList);
                                }
                                //逆变器列表和负载中心列表相加
                                setDeviceRemoteInfo(newList, homeId, cloudCallBeak);
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                //外网进来先【默认】清空本地逆变器列表
                                //向云端获取负载中心列表失败,直接返回逆变器列表;
                                HDLLinkLocalGateway.getInstance().getGatewayList().clear();
                                setDeviceRemoteInfo(cloudInverterList, homeId, cloudCallBeak);
                            }
                        });
//                        //外网进来先【默认】清空本地逆变器列表
//                        HDLLinkLocalGateway.getInstance().getGatewayList().clear();
//                        setDeviceRemoteInfo(list, homeId, cloudCallBeak);
                    }
                    @Override
                    public void onFailure(HDLException e) {
                        if (cloudCallBeak != null) {
                            cloudCallBeak.onFailure(e);
                        }
                        //向云端获取逆变器列表失败
                        //再向云端获取负载中心列表
                        getLoadCentreDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
                            @Override
                            public void onSuccess(List<CloudInverterDeviceBean> loadCentreDeviceList) {
                                //外网进来先【默认】清空本地逆变器列表
                                HDLLinkLocalGateway.getInstance().getGatewayList().clear();
                                //逆变器列表和负载中心列表
                                setDeviceRemoteInfo(loadCentreDeviceList, homeId, cloudCallBeak);
                            }
                            @Override
                            public void onFailure(HDLException e) {
                                if (cloudCallBeak != null) {
                                    cloudCallBeak.onFailure(e);
                                }
                            }
                        });
//                        if (cloudCallBeak != null) {
//                            cloudCallBeak.onFailure(e);
//                        }
                    }
                });
            }
@@ -1600,6 +1646,46 @@
    }
    /**
     * 逆变器密码登录
     *
     * @param mac      逆变器mac
     * @param password 逆变器密码
     */
    public void getPasswordVerification(String mac, String password, LinkCallBack<LocalResponse> callBeak) {
        String requestUrl = TopicApi.DELETING_GATEWAY_password_verifiy;
        JsonObject json = new JsonObject();
        json.addProperty("password", password);
        json.addProperty("mac", mac);
        TcpClient.getInstance().sendDataToLinkGateway(mac, false, requestUrl, json, "", new HDLLinkCallBack() {
            @Override
            public void onSuccess(String msg) {
                try {
                    Gson gson = new Gson();
                    LocalResponse localResponse = gson.fromJson(msg, LocalResponse.class);
                    if (localResponse == null) {
                        localResponse = new LocalResponse();
                    }
                    if (callBeak != null) {
                        callBeak.onSuccess(localResponse);
                    }
                } catch (Exception e) {
                    if (callBeak != null) {
                        callBeak.onSuccess(new LocalResponse());
                    }
                }
            }
            @Override
            public void onError(HDLLinkException e) {
                if (callBeak != null) {
                    callBeak.onError(e);
                }
            }
        });
    }
    /**
     * 刷新逆变器缓存信息(包括设置mqtt秘钥)
     * 注: //目的是为了获取拿到网关ID,mqtt通讯秘钥等信息,缓存本地逆变器列表里面,发送数据数据时自动去缓存列表里面去查找;
     * 1:本地存在,更新信息即可;