package com.hdl.photovoltaic.other;
|
|
import android.os.Build;
|
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.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Set;
|
|
/**
|
* 本地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";
|
|
/**
|
* 拼接符号
|
*/
|
private final String concatenation_symbol = "%";
|
|
|
/**
|
* 获取办版本号
|
*
|
* @return map
|
*/
|
private String getVersion(String fileName) {
|
Map<String, String> map = this.getFeliAndVersion();
|
for (Map.Entry<String, String> entry : map.entrySet()) {
|
if (entry.getKey().equals(fileName)) {
|
return entry.getValue();
|
}
|
}
|
return "";
|
}
|
|
|
/**
|
* 向云端获取Json【所有】脚本
|
*/
|
public void getAllHdlESLocalJson() {
|
for (Map.Entry<String, String> str : this.getFeliAndVersion().entrySet()) {
|
if (TextUtils.isEmpty(str.getKey())) {
|
continue;
|
}
|
String[] ary = str.getKey().split(concatenation_symbol);
|
String fileName = ary[0];
|
String deviceType = ary[1];
|
String deviceMode = ary[2];
|
this.getHdlESLocalJson(fileName, deviceType, deviceMode, true, null);
|
}
|
|
}
|
|
|
/**
|
* 向云端获取Json【单个】脚本
|
*
|
* @param fileName 文件名
|
* @param deviceType 设备类型
|
* @param deviceModel 设备型号
|
* @param isDelPath 是否删除(true表示删除,否则不删除)
|
*/
|
public void getHdlESLocalJson(String fileName, String deviceType, String deviceModel, boolean isDelPath, CloudCallBeak<String> callBeak) {
|
//拼接地址
|
String url = getStrJointNewUrl(fileName, deviceType, deviceModel);
|
HttpClient.getInstance().requestJsonHttpGet(url, new CloudCallBeak<String>() {
|
@Override
|
public void onSuccess(String json) {
|
saveJson(fileName, deviceModel, json, isDelPath);
|
HdlLogLogic.print("获取云端脚本---" + url + "\r\n" + json, false);
|
if (callBeak != null) {
|
callBeak.onSuccess(json);
|
}
|
}
|
|
@Override
|
public void onFailure(HDLException e) {
|
HdlLogLogic.print(e.getMessage(), e.getCode(), false);
|
if (callBeak != null) {
|
callBeak.onFailure(e);
|
}
|
}
|
});
|
}
|
|
/**
|
* 读取本地json数据
|
*
|
* @param fileName 文件名
|
* @param deviceModel 设备型号
|
*/
|
public String readHdlESLocalJson(String fileName, String deviceModel) {
|
return this.readJson(fileName, deviceModel);
|
}
|
|
/**
|
* 保存json数据
|
*
|
* @param fileName 文件名
|
* @param deviceModel 设备型号(逆变器,负载中心,bms,电池包)
|
* @param json json内容
|
* @param isDelPath 是否删除(true表示删除,否则不删除)
|
*/
|
private void saveJson(String fileName, String deviceModel, String json, boolean isDelPath) {
|
try {
|
if (TextUtils.isEmpty(json)) {
|
return;
|
}
|
//英文文件路径
|
String fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonEnFilePath(deviceModel, fileName);
|
if (UserConfigManage.getInstance().isZh()) {
|
//中文文件路径
|
fullPath = HdlFileLogic.getInstance().getHdlESLocalJsonZhFilePath(deviceModel, fileName);
|
}
|
if (isDelPath) {
|
HdlFileLogic.getInstance().deleteFile(fullPath);
|
}
|
HdlFileLogic.getInstance().writeFile(fullPath, json);
|
} catch (Exception ignored) {
|
}
|
}
|
|
/**
|
* 读取json数据
|
*
|
* @param fileName 文件名
|
* @param deviceModel 设备型号(逆变器,负载中心,bms,电池包)
|
*/
|
private String readJson(String fileName, String deviceModel) {
|
try {
|
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 "";
|
}
|
}
|
|
/**
|
* 拼接新地址
|
*
|
* @param fileName json文件名称
|
* @param deviceType 设备类型(inv,lc,bms,battery)
|
* @param deviceModel 设备型号
|
* @return 新地址
|
*/
|
private String getStrJointNewUrl(String fileName, String deviceType, String deviceModel) {
|
String joinFileName = fileName + concatenation_symbol + deviceType + concatenation_symbol + deviceModel;
|
if (joinFileName.equals(FileName.hdl_inv_ecu_info_pv + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_output + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_item + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_signal + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_pv + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_output + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_item + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_signal + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_input_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_pv + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_output + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_item + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_signal + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3)
|
|| joinFileName.equals(FileName.hdl_inv_ecu_info_input_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3)
|
) {
|
return address + "/" + UserConfigManage.getInstance().getCurrentAppLanguage() + "/" + deviceType + "/" + deviceModel + "/info/" + fileName + this.getVersion(joinFileName) + ".json";
|
}
|
return address + "/" + UserConfigManage.getInstance().getCurrentAppLanguage() + "/" + deviceType + "/" + deviceModel + "/" + fileName + this.getVersion(joinFileName) + ".json";
|
}
|
//region ---------改一动五(注意:如果是增加设备型号【要到HdlFileLogic.createHdlESLocalJsonDirectory()方法里面创建文件夹】)-----------
|
|
/**
|
* 文件对应版本号
|
*
|
* @return map
|
*/
|
private Map<String, String> getFeliAndVersion() {
|
Map<String, String> map = new HashMap<>();
|
//拼接规则:文件名_设备类型_设备信号
|
map.put(FileName.hdl_lc_ecu_info_item + concatenation_symbol + DeviceType.LC + concatenation_symbol + DeviceModel.LC, Version.v_1_5_0);//获取负载控制中心
|
map.put(FileName.hdl_lc_ecu_quick + concatenation_symbol + DeviceType.LC + concatenation_symbol + DeviceModel.LC, Version.v_1_5_2);//创建电站-负载控制中心参数配置
|
map.put(FileName.hdl_inv_ecu_quick + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_5_1);//创建电站-逆变器参数配置
|
map.put(FileName.hdl_inv_ecu + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_5_3);//逆变器参数配置//更新到v_1_5_3,目前硬件不支持
|
map.put(FileName.hdl_inv_ecu_info_pv + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_4_2);// 逆变器详情-pv
|
map.put(FileName.hdl_inv_ecu_info_output + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_4_2);//逆变器详情-输出
|
map.put(FileName.hdl_inv_ecu_info_item + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_5_2);//逆变器详情-item项//更新到v_1_5_2,目前硬件不支持¬
|
map.put(FileName.hdl_inv_ecu_info_signal + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.INV, Version.v_1_4_1);//逆变器详情-信号点
|
map.put(FileName.hdl_bms_ecu + concatenation_symbol + DeviceType.BMS + concatenation_symbol + DeviceModel.INV_BMS, Version.v_1_4_2);//获取BMS信息
|
map.put(FileName.hdl_battery_ecu + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.INV_BATTERY, Version.v_1_4_2);//电池包信息
|
map.put(FileName.hdl_battery_ecu_cell + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.INV_BATTERY, Version.v_1_4_2);//电池包-电芯信息
|
//离网逆变器 5kw
|
map.put(FileName.hdl_inv_ecu_quick_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器快速配置
|
map.put(FileName.hdl_inv_master_ecu_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_4);//离网逆变器主机配置
|
map.put(FileName.hdl_inv_slave_ecu_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器从机配置
|
map.put(FileName.hdl_inv_ecu_info_pv_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器详情光伏输入
|
map.put(FileName.hdl_inv_ecu_info_input_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器详情交流输入
|
map.put(FileName.hdl_inv_ecu_info_output_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器详情交流输出
|
map.put(FileName.hdl_inv_ecu_info_item_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_4);//离网逆变器详情基础参数
|
map.put(FileName.hdl_inv_ecu_info_signal_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV, Version.v_1_5_2);//离网逆变器详情统计
|
map.put(FileName.hdl_bms_ecu_off + concatenation_symbol + DeviceType.BMS + concatenation_symbol + DeviceModel.OFF_INV_BMS, Version.v_1_5_2);//离网逆变器BMS详情
|
map.put(FileName.hdl_battery_ecu_off + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.OFF_INV_BATTERY, Version.v_1_5_2);//离网逆变器快速配置
|
map.put(FileName.hdl_battery_ecu_cell_off + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.OFF_INV_BATTERY, Version.v_1_5_2);//离网逆变器快速配置
|
//离网逆变器 3.6kw
|
map.put(FileName.hdl_inv_ecu_quick_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器快速配置
|
map.put(FileName.hdl_inv_master_ecu_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器主机配置
|
map.put(FileName.hdl_inv_slave_ecu_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器从机配置
|
map.put(FileName.hdl_inv_ecu_info_pv_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器详情光伏输入
|
map.put(FileName.hdl_inv_ecu_info_input_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器详情交流输入
|
map.put(FileName.hdl_inv_ecu_info_output_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器详情交流输出
|
map.put(FileName.hdl_inv_ecu_info_item_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器详情基础参数
|
map.put(FileName.hdl_inv_ecu_info_signal_off + concatenation_symbol + DeviceType.INV + concatenation_symbol + DeviceModel.OFF_INV_3, Version.v_1_5_4);//离网逆变器详情统计
|
map.put(FileName.hdl_bms_ecu_off + concatenation_symbol + DeviceType.BMS + concatenation_symbol + DeviceModel.OFF_INV_BMS_3, Version.v_1_5_4);//离网逆变器BMS详情
|
//电池包转换器
|
map.put(FileName.hdl_battery_ecu + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.INV_KE_GLE_B5K_BATTERY, Version.v_1_5_5);//电池包信息
|
map.put(FileName.hdl_battery_ecu_cell + concatenation_symbol + DeviceType.BATTERY + concatenation_symbol + DeviceModel.INV_KE_GLE_B5K_BATTERY, Version.v_1_5_5);//电池包-电芯信息
|
return map;
|
}
|
|
/**
|
* Json数据配置文件名
|
*/
|
public @interface FileName {
|
/**
|
* 创建电站-逆变器参数配置
|
*/
|
String hdl_inv_ecu_quick = "modbus_hdl_inv_ecu_quick_v";
|
|
/**
|
* 逆变器参数配置(config)
|
*/
|
String hdl_inv_ecu = "modbus_hdl_inv_ecu_v";
|
/**
|
* 逆变器详情-pv
|
*/
|
String hdl_inv_ecu_info_pv = "modbus_hdl_inv_ecu_info_pv_v";
|
/**
|
* 逆变器详情-输出
|
*/
|
String hdl_inv_ecu_info_output = "modbus_hdl_inv_ecu_info_output_v";
|
/**
|
* 逆变器详情-item项
|
*/
|
String hdl_inv_ecu_info_item = "modbus_hdl_inv_ecu_info_item_v";
|
/**
|
* 创建电站-负载控制中心参数配置
|
*/
|
String hdl_lc_ecu_quick = "modbus_hdl_lc_ecu_quick_v";
|
/**
|
* 获取负载控制中心
|
*/
|
String hdl_lc_ecu_info_item = "modbus_hdl_lc_ecu_info_item_v";
|
/**
|
* 获取BMS信息
|
*/
|
String hdl_bms_ecu = "modbus_hdl_bms_ecu_v";
|
/**
|
* 电池包信息
|
*/
|
String hdl_battery_ecu = "modbus_hdl_battery_ecu_v";
|
|
/**
|
* 电池包-电芯信息
|
*/
|
String hdl_battery_ecu_cell = "modbus_hdl_battery_ecu_cell_v";
|
|
/**
|
* 逆变器详情-信号点
|
*/
|
String hdl_inv_ecu_info_signal = "modbus_hdl_inv_ecu_info_signal_v";
|
|
|
/**
|
* 离网逆变器快速配置
|
*/
|
String hdl_inv_ecu_quick_off = "modbus_hdl_inv_ecu_quick_v";
|
|
/**
|
* 离网逆变器主机配置
|
*/
|
String hdl_inv_master_ecu_off = "modbus_hdl_inv_master_ecu_v";
|
|
/**
|
* 离网逆变器从机配置
|
*/
|
String hdl_inv_slave_ecu_off = "modbus_hdl_inv_slave_ecu_v";
|
|
/**
|
* 离网逆变器详情光伏输入
|
*/
|
String hdl_inv_ecu_info_pv_off = "modbus_hdl_inv_ecu_info_pv_v";
|
|
/**
|
* 离网逆变器详情交流输入
|
*/
|
String hdl_inv_ecu_info_input_off = "modbus_hdl_inv_ecu_info_input_v";
|
|
/**
|
* 离网逆变器详情交流输出
|
*/
|
String hdl_inv_ecu_info_output_off = "modbus_hdl_inv_ecu_info_output_v";
|
|
/**
|
* 离网逆变器详情基础参数
|
*/
|
String hdl_inv_ecu_info_item_off = "modbus_hdl_inv_ecu_info_item_v";
|
|
/**
|
* 离网逆变器详情统计
|
*/
|
String hdl_inv_ecu_info_signal_off = "modbus_hdl_inv_ecu_info_signal_v";
|
|
/**
|
* 离网逆变器BMS详情
|
*/
|
String hdl_bms_ecu_off = "modbus_hdl_bms_ecu_v";
|
|
/**
|
* 离网逆变器电池详情
|
*/
|
String hdl_battery_ecu_off = "modbus_hdl_battery_ecu_v";
|
|
/**
|
* 离网逆变器电池电芯
|
*/
|
String hdl_battery_ecu_cell_off = "modbus_hdl_battery_ecu_cell_v";
|
|
|
/**
|
* 获取逆变器所有json中文
|
*/
|
String hdl_inv_ecu_all_zh = "/zh/all_v";
|
/**
|
* 获取逆变器所有json英文
|
*/
|
String hdl_inv_ecu_all_en = "/en/all_v";
|
|
}
|
|
|
/**
|
* 版本号
|
*/
|
public @interface Version {
|
String v_1_4_1 = "1.4.1";
|
String v_1_4_2 = "1.4.2";
|
String v_1_5_0 = "1.5.0";
|
String v_1_5_1 = "1.5.1";
|
String v_1_5_2 = "1.5.2";
|
String v_1_5_3 = "1.5.3";
|
String v_1_5_4 = "1.5.4";
|
String v_1_5_5 = "1.5.5";
|
|
}
|
|
/**
|
* 设备型号
|
*/
|
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";
|
|
|
/**
|
* 【离线-逆变器】设备型号 5kw
|
*/
|
String OFF_INV = "ME-GLE-S5K";
|
/**
|
* 【离网-逆变器-虚拟BMS】设备型号
|
*/
|
String OFF_INV_BMS = "ME-GLE-S5K-BMS";
|
/**
|
* 【离网-逆变器-电池包】设备型号
|
*/
|
String OFF_INV_BATTERY = "ME-GLE-B5K";
|
|
/**
|
* 【离线-逆变器】设备型号 3.6kw
|
*/
|
String OFF_INV_3 = "ME-GLE-S3.6K";
|
/**
|
* 【离网-逆变器-虚拟BMS】设备型号 3.6kw
|
*/
|
String OFF_INV_BMS_3 = "ME-GLE-S3.6K-BMS";
|
|
/**
|
* 【电池包转换器】设备型号
|
*/
|
String INV_KE_GLE_B5K_BATTERY = "KE-GLE-B5K";
|
|
|
}
|
|
/**
|
* 设备类型
|
*/
|
public @interface DeviceType {
|
/**
|
* 【逆变器】类型
|
*/
|
String INV = "inv";
|
/**
|
* 【负载控制中心】类型
|
*/
|
String LC = "lc";
|
/**
|
* 【BMS】类型
|
*/
|
String BMS = "bms";
|
/**
|
* 【电池包】类型
|
*/
|
String BATTERY = "battery";
|
|
}
|
//endregion
|
|
}
|