mac
2024-07-16 3ec7de773bff5582411c6f1f659d35cf8fb1734a
app/src/main/java/com/hdl/photovoltaic/other/HdlDeviceLogic.java
@@ -137,7 +137,7 @@
     * @param homeId 电站id
     * @param mac    逆变器mac
     */
    public void removeLocalCacheMemoryGateway(String homeId, String mac) {
    public void removeLocalCacheMemoryGatewayToMac(String homeId, String mac) {
        if (TextUtils.isEmpty(mac)) {
            return;
        }
@@ -157,6 +157,55 @@
            list.remove(index);
        }
    }
    /**
     * 移除缓存列表里面逆变器
     *
     * @param homeId   电站id
     * @param deviceId 逆变器deviceId
     */
    public void removeLocalCacheMemoryGatewayToDeviceId(String homeId, String deviceId) {
        if (TextUtils.isEmpty(deviceId)) {
            return;
        }
        List<GatewayBean> list = getCurrentHomeGatewayList(homeId);
        if (list == null || list.size() == 0) {
            return;
        }
        int index = -1;
        for (int i = 0; i < list.size(); i++) {
            GatewayBean gatewayBean = list.get(i);
            if (gatewayBean.getDeviceId().equals(deviceId)) {
                index = i;
                break;
            }
        }
        if (index > 0) {
            list.remove(index);
        }
    }
    /**
     * 添加【设备列表】到本地缓存
     *
     * @param list -设备列表
     */
    public void setListDevice(List<CloudInverterDeviceBean> list) {
        try {
            if (list == null || list.size() == 0) {
                return;
            }
            if (this.mListDevice.size() == 0) {
                this.mListDevice.addAll(list);
                return;
            }
            for (int i = 0; i < list.size(); i++) {
                this.setSingleDevice(list.get(i));
            }
        } catch (Exception ignored) {
        }
    }
    /**
     * 获取设备列表(安装商)
@@ -198,28 +247,6 @@
                }
            }
        });
    }
    /**
     * 添加【设备列表】到本地缓存
     *
     * @param list -设备列表
     */
    public void setListDevice(List<CloudInverterDeviceBean> list) {
        try {
            if (list == null || list.size() == 0) {
                return;
            }
            if (this.mListDevice.size() == 0) {
                this.mListDevice.addAll(list);
                return;
            }
            for (int i = 0; i < list.size(); i++) {
                this.setSingleDevice(list.get(i));
            }
        } catch (Exception ignored) {
        }
    }
    /**
@@ -467,22 +494,7 @@
            @Override
            public void onFailure(HDLException e) {
                //添加逆变器失败后初始化逆变器
                HdlLogLogic.print("添加逆变器失败后开始初始化逆变器-->", true);
                for (int i = 0; i < list.size(); i++) {
                    GatewayBean gatewayBean = list.get(i);
                    HdlDeviceLogic.getInstance().initializeInverter(gatewayBean.getDevice_mac(), new LinkCallBack<Boolean>() {
                        @Override
                        public void onSuccess(Boolean obj) {
                            HdlLogLogic.print("初始化逆变器成功-->mac:" + gatewayBean.getDevice_mac(), true);
                        }
                        @Override
                        public void onError(HDLLinkException e) {
                            HdlLogLogic.print("初始化逆变器失败-->mac:" + gatewayBean.getDevice_mac(), true);
                        }
                    });
                }
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
@@ -704,6 +716,42 @@
                    cloudCallBeak.onFailure(e);
                }
                HdlLogLogic.print("增量添加oid到云端失败---" + e.getMsg() + "(" + e.getCode() + ")", true);
            }
        });
    }
    /**
     * 修改设备名称逆变器BMS电池包
     * 描述:  修改设备名称,支持逆变器,BMS,电池包设备名称修改
     *
     * @param homeId        住宅id
     * @param deviceType    设备类型(INV:逆变器,BMS:BMS控制盒,BATTERY:电池单元)
     * @param deviceId      设备id(deviceType = INV 是逆变器deviceId;deviceType = BMS 是BMS的deviceOidId;deviceType = BATTERY 是电池包的deviceOidId)
     * @param cloudCallBeak 回调update
     */
    public void setRename(String homeId, String deviceType, String deviceId, String name, CloudCallBeak<Boolean> cloudCallBeak) {
        String requestUrl = HttpApi.POST_Device_Rename;
        JsonObject json = new JsonObject();
        json.addProperty("homeId", homeId);
        json.addProperty("name", name);
        json.addProperty("deviceType", deviceType);//设备类型(INV:逆变器,BMS:BMS控制盒,BATTERY:电池单元)
        json.addProperty("deviceId", deviceId);//设备id(deviceType = INV 是逆变器deviceId;deviceType = BMS 是BMS的deviceOidId;deviceType = BATTERY 是电池包的deviceOidId)
        // json.addProperty("zoneType", "password");//区域
        HttpClient.getInstance().requestHttp(requestUrl, json.toString(), new CloudCallBeak<String>() {
            @Override
            public void onSuccess(String str) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onSuccess(true);
                }
            }
            @Override
            public void onFailure(HDLException e) {
                if (cloudCallBeak != null) {
                    cloudCallBeak.onFailure(e);
                }
            }
        });
@@ -993,7 +1041,7 @@
    /**
     * 获取逆变器列表(整合云端和本地列表)
     * 注意:有外网,以云端设备为准,本地存在,云端没有则删除;内网,以本地为主,搜索多少个设备就显示多少个;
     * 注意:有外网,以云端设备为准,本地存在,云端没有则删除;否则,没有外网只有局域网,以本地为主,搜索多少个设备就显示多少个
     *
     * @param homeId        住宅id
     * @param cloudCallBeak 返回逆变器列表
@@ -1006,7 +1054,19 @@
                HdlDeviceLogic.getInstance().getCloudInverterDeviceList(homeId, new CloudCallBeak<List<CloudInverterDeviceBean>>() {
                    @Override
                    public void onSuccess(List<CloudInverterDeviceBean> list) {
                        ///情况1:有局域网,有外网;
                        List<String> removeSidList = new ArrayList<>();
                        for (int j = 0; j < HDLLinkLocalGateway.getInstance().getGatewayList().size(); j++) {
                            GatewayBean gatewayBean = HDLLinkLocalGateway.getInstance().getGatewayList().get(j);
                            if (!querySidInverter(list, gatewayBean.getSid())) {
                                //本地有,云端没有,删除本地;
                                removeSidList.add(gatewayBean.getSid());
                            }
                        }
                        for (int i = 0; i < removeSidList.size(); i++) {
                            //删除本地的逆变器
                            removeLocalInverter(removeSidList.get(i));
                        }
                        //情况1:有局域网,有外网;
                        setDeviceRemoteInfo(list, homeId, cloudCallBeak);
                    }
@@ -1354,6 +1414,7 @@
        gatewayBean.setDeviceType(cloudInverterDeviceBean.getDeviceType());//设备类型(INV:逆变器;BMS:BMS控制盒;BATTERY:电池单元)
        gatewayBean.setAddresses(cloudInverterDeviceBean.getAddresses());//子网号/设备号,逆变器地址
        gatewayBean.setPowerPvNow(cloudInverterDeviceBean.getPowerPvNow());//发电功率
        gatewayBean.setOutputActivePower(cloudInverterDeviceBean.getOutputActivePower());//逆变器输出有功功率
        gatewayBean.setTotalElectricityPvToday(cloudInverterDeviceBean.getTotalElectricityPvToday());//今日发电量
        if (!TextUtils.isEmpty(cloudInverterDeviceBean.getOmodel())) {
            //可能设备没有上报给云端,建议绑定逆变器时候追加一个参数;