package com.hdl.photovoltaic.other; import android.text.TextUtils; import com.hdl.linkpm.sdk.core.exception.HDLException; import com.hdl.photovoltaic.config.UserConfigManage; import com.hdl.photovoltaic.internet.HttpClient; import com.hdl.photovoltaic.listener.CloudCallBeak; import java.util.HashMap; import java.util.Map; /** * 本地json缓存逻辑 */ public class HdlESLocalJsonLogic { private static volatile HdlESLocalJsonLogic sHdlESLocalJsonLogic; /** * 获取当前对象 * * @return HdlAccountLogic */ public static synchronized HdlESLocalJsonLogic getInstance() { if (sHdlESLocalJsonLogic == null) { synchronized (HdlESLocalJsonLogic.class) { if (sHdlESLocalJsonLogic == null) { sHdlESLocalJsonLogic = new HdlESLocalJsonLogic(); } } } return sHdlESLocalJsonLogic; } /** * 脚本地址域名 */ private static final String address = "https://hdl-hz-dev.oss-cn-hangzhou.aliyuncs.com/ecu"; /** * 拼接新地址 * * @param fileName json文件名称 * @param deviceType 设备类型(inv,lc,bms,battery) * @param deviceModel 设备型号 * @return 新地址 */ private String getStrJointNewUrl(String fileName, String deviceType, String deviceModel) { return address + "/" + UserConfigManage.getInstance().getCurrentAppLanguage() + "/" + deviceType + "/" + deviceModel + "/" + fileName; } /** * 初始化脚本url * * @return map */ private Map getUrlMap() { //注意(逆变器:ME-GSE-S5K,负载中心:ME-GSE-SPG63A,bms:ME-GSE-BMS15K,电池包:ME-GSE-B5K)设备型号不一样 Map map = new HashMap<>(); map.put(this.getStrJointNewUrl(FileName.hdl_lc_ecu_info_item, DeviceType.LC, DeviceModel.LC), DeviceModel.LC);//获取负载控制中心 map.put(this.getStrJointNewUrl(FileName.hdl_lc_ecu_quick, DeviceType.LC, DeviceModel.LC), DeviceModel.LC); //创建电站-负载控制中心参数配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_quick, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);//创建电站-逆变器参数配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);//逆变器参数配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_pv, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);// 逆变器详情-pv map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_output, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);//逆变器详情-输出 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_item, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);//逆变器详情-item项 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_signal, DeviceType.INV, DeviceModel.INV), DeviceModel.INV);//逆变器详情-信号点 map.put(this.getStrJointNewUrl(FileName.hdl_bms_ecu, DeviceType.BMS, DeviceModel.INV_BMS), DeviceModel.INV_BMS);//获取BMS信息 map.put(this.getStrJointNewUrl(FileName.hdl_battery_ecu, DeviceType.BATTERY, DeviceModel.INV_BATTERY), DeviceModel.INV_BATTERY);//电池包信息 map.put(this.getStrJointNewUrl(FileName.hdl_battery_ecu_cell, DeviceType.BATTERY, DeviceModel.INV_BATTERY), DeviceModel.INV_BATTERY);//电池包-电芯信息 //离网逆变器 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_quick_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器快速配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_master_ecu_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器主机配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_slave_ecu_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器从机配置 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_pv_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器详情光伏输入 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_input_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器详情交流输入 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_output_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器详情交流输出 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_item_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器详情基础参数 map.put(this.getStrJointNewUrl(FileName.hdl_inv_ecu_info_signal_off, DeviceType.INV, DeviceModel.OFF_INV), DeviceModel.OFF_INV);//离网逆变器详情统计 map.put(this.getStrJointNewUrl(FileName.hdl_bms_ecu_off, DeviceType.BMS, DeviceModel.OFF_INV_BMS), DeviceModel.OFF_INV_BMS);//离网逆变器BMS详情 map.put(this.getStrJointNewUrl(FileName.hdl_battery_ecu_off, DeviceType.BATTERY, DeviceModel.OFF_INV_BATTERY), DeviceModel.OFF_INV_BATTERY);//离网逆变器电池详情 map.put(this.getStrJointNewUrl(FileName.hdl_battery_ecu_cell_off, DeviceType.BATTERY, DeviceModel.OFF_INV_BATTERY), DeviceModel.OFF_INV_BATTERY);//离网逆变器电池电芯 return map; } /** * 向云端获取Json【所有】脚本 */ public void getAllHdlESLocalJson() { for (Map.Entry entry : getUrlMap().entrySet()) { this.getHdlESLocalJson(entry.getKey(), entry.getValue(), null); } } /** * 向云端获取Json【单个】脚本 * * @param url 地址 * @param deviceModel 设备型号 */ public void getHdlESLocalJson(String url, String deviceModel, CloudCallBeak callBeak) { HttpClient.getInstance().requestJsonHttpGet(url, new CloudCallBeak() { @Override public void onSuccess(String str) { saveJson(url, deviceModel, str); HdlLogLogic.print("获取云端脚本---" + url + "\r\n" + str, false); if (callBeak != null) { callBeak.onSuccess(str); } } @Override public void onFailure(HDLException e) { HdlLogLogic.print(e.getMessage(), e.getCode(), false); if (callBeak != null) { callBeak.onFailure(e); } } }); } /** * 读取本地json数据 * * @param url 地址 * @param deviceModel 设备型号 */ public String readHdlESLocalJson(String url, String deviceModel) { return this.readJson(url, deviceModel); } /** * 保存json数据 * * @param fileUrlOrFileName 地址或者文件名 * @param deviceModel 设备型号(逆变器,负载中心,bms,电池包) * @param json 内容 */ private void saveJson(String fileUrlOrFileName, String deviceModel, String json) { try { if (TextUtils.isEmpty(json)) { return; } String fileName = fileUrlOrFileName; if (fileUrlOrFileName.contains("/")) { //表示链接,截取最后一个索引表示文件名 fileName = fileUrlOrFileName.split("/")[fileUrlOrFileName.split("/").length - 1]; } if (TextUtils.isEmpty(fileName)) { return; } //英文文件路径 String fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonEnFilePath(deviceModel, fileName); if (UserConfigManage.getInstance().isZh()) { //中文文件路径 fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonZhFilePath(deviceModel, fileName); } HdlFileLogic.getInstance().writeFile(fullPath, json); } catch (Exception ignored) { } } /** * 读取json数据 * * @param fileUrlOrFileName 地址或者文件名 * @param deviceModel 设备型号(逆变器,负载中心,bms,电池包) */ private String readJson(String fileUrlOrFileName, String deviceModel) { try { String fileName = fileUrlOrFileName; if (fileUrlOrFileName.contains("/")) { //表示链接,截取最后一个索引表示文件名 fileName = fileUrlOrFileName.split("/")[fileUrlOrFileName.split("/").length - 1]; } if (TextUtils.isEmpty(fileName)) { return ""; } //英文文件路径 String fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonEnFilePath(deviceModel, fileName); if (UserConfigManage.getInstance().isZh()) { //中文文件路径 fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonZhFilePath(deviceModel, fileName); } return HdlFileLogic.getInstance().readFile(fullPath); } catch (Exception ignored) { return ""; } } /** * Json数据配置文件名 */ public @interface FileName { /** * 创建电站-逆变器参数配置 */ String hdl_inv_ecu_quick = "modbus_hdl_inv_ecu_quick_v1.5.1.json"; /** * 创建电站-负载控制中心参数配置 */ String hdl_lc_ecu_quick = "modbus_hdl_lc_ecu_quick_v1.5.0.json"; /** * 逆变器参数配置(config) */ String hdl_inv_ecu = "modbus_hdl_inv_ecu_v1.5.2.json"; /** * 逆变器详情-pv */ String hdl_inv_ecu_info_pv = "info/modbus_hdl_inv_ecu_info_pv_v1.4.2.json"; /** * 逆变器详情-输出 */ String hdl_inv_ecu_info_output = "info/modbus_hdl_inv_ecu_info_output_v1.4.2.json"; /** * 逆变器详情-item项 */ String hdl_inv_ecu_info_item = "info/modbus_hdl_inv_ecu_info_item_v1.5.2.json"; /** * 获取负载控制中心 */ String hdl_lc_ecu_info_item = "modbus_hdl_lc_ecu_info_item_v1.5.0.json"; /** * 获取BMS信息 */ String hdl_bms_ecu = "modbus_hdl_bms_ecu_v1.4.2.json"; /** * 电池包信息 */ String hdl_battery_ecu = "modbus_hdl_battery_ecu_v1.4.2.json"; /** * 电池包-电芯信息 */ String hdl_battery_ecu_cell = "modbus_hdl_battery_ecu_cell_v1.4.2.json"; /** * 逆变器详情-信号点 */ String hdl_inv_ecu_info_signal = "info/modbus_hdl_inv_ecu_info_signal_v1.4.1.json"; /** * 离网逆变器快速配置 */ String hdl_inv_ecu_quick_off = "modbus_hdl_inv_ecu_quick_v1.5.2.json"; /** * 离网逆变器主机配置 */ String hdl_inv_master_ecu_off = "modbus_hdl_inv_master_ecu_v1.5.2.json"; /** * 离网逆变器从机配置 */ String hdl_inv_slave_ecu_off = "modbus_hdl_inv_slave_ecu_v1.5.2.json"; /** * 离网逆变器详情光伏输入 */ String hdl_inv_ecu_info_pv_off = "modbus_hdl_inv_ecu_info_pv_v1.5.2.json"; /** * 离网逆变器详情交流输入 */ String hdl_inv_ecu_info_input_off = "modbus_hdl_inv_ecu_info_input_v1.5.2.json"; /** * 离网逆变器详情交流输出 */ String hdl_inv_ecu_info_output_off = "modbus_hdl_inv_ecu_info_output_v1.5.2.json"; /** * 离网逆变器详情基础参数 */ String hdl_inv_ecu_info_item_off = "modbus_hdl_inv_ecu_info_item_v1.5.2.json"; /** * 离网逆变器详情统计 */ String hdl_inv_ecu_info_signal_off = "modbus_hdl_inv_ecu_info_signal_v1.5.2.json"; /** * 离网逆变器BMS详情 */ String hdl_bms_ecu_off = "modbus_hdl_bms_ecu_v1.5.2.json"; /** * 离网逆变器电池详情 */ String hdl_battery_ecu_off = "modbus_hdl_battery_ecu_v1.5.2.json"; /** * 离网逆变器电池电芯 */ String hdl_battery_ecu_cell_off = "modbus_hdl_battery_ecu_cell_v1.5.2.json"; /** * 获取逆变器所有json中文 */ String hdl_inv_ecu_all_zh = "/zh/all_v1.5.1.json"; /** * 获取逆变器所有json英文 */ String hdl_inv_ecu_all_en = "/en/all_v1.5.1.json"; } /** * 设备型号 */ public @interface DeviceModel { /** * 【逆变器】设备型号 */ String INV = "ME-GSE-S5K"; /** * 【负载控制中心】设备型号 */ String LC = "ME-GSE-SPG63A"; /** * 【BMS】设备型号 */ String INV_BMS = "ME-GSE-BMS15K"; /** * 【电池包】设备型号 */ String INV_BATTERY = "ME-GSE-B5K"; /** * 【离线逆变器】设备型号 */ String OFF_INV = "ME-GLE-S5K"; /** * 【离网逆变器虚拟BMS】设备型号 */ String OFF_INV_BMS = "ME-GLE-S5K-BMS"; /** * 【离网逆变器电池包】设备型号 */ String OFF_INV_BATTERY = "ME-GLE-B5K"; } /** * 设备类型 */ public @interface DeviceType { /** * 【逆变器】类型 */ String INV = "inv"; /** * 【负载控制中心】类型 */ String LC = "lc"; /** * 【BMS】类型 */ String BMS = "bms"; /** * 【电池包】类型 */ String BATTERY = "battery"; } }