修改设备显示信息的寄存器地址配置文件,修改服务端界面

This commit is contained in:
lixiaoyuan
2025-09-29 18:31:44 +08:00
parent af625fba49
commit 454310262b
23 changed files with 1000 additions and 334 deletions

View File

@@ -10,6 +10,7 @@
#include "app/Config.h"
#include "common/Snowflake.h"
#include "app/DataStruct.h"
#include "app/Application.h"
Station::Station() : stationId(0)
{
@@ -27,7 +28,7 @@ void Station::setFields(Fields& fields)
this->operationDate = fields.value(DMStation::OPERATION_DATE);
this->launchDate = fields.value("operation_date");
this->policy.setFields(fields);
//this->policy.setFields(fields);
}
void Station::addDevice(int deviceId, std::shared_ptr<Device> device)
@@ -133,17 +134,7 @@ void Station::setWorkMode(int modeId)
}
}
void Station::setPolicy(int policyId)
{
std::string sql = SQL(SQL::TYPE::update).table(DMStation::TABLENAME)
.update(DMStation::POLICY_ID, std::to_string(policyId))
.where(DMStation::STATION_ID + "=" + std::to_string(stationId)).str();
Errcode err = DAO::exec(NULL, sql);
if (err != Errcode::OK)
{
spdlog::error("set station policy failed.");
}
}
void Station::initMqtt()
{
@@ -181,23 +172,30 @@ void Station::setGarewayWorkMode()
{
return;
}
auto policy = Application::data().getPolicyByType(this->workMode);
njson json;
json["ts"] = Utils::time();
json["no"] = 1; // 设备编号
json["40001"] = this->workMode;
if (policy.type == 1)
if (policy)
{
json["40002"] = njson::array(); // 峰谷套利
policy.getGatewayJsonPeriods(json["40002"]);
}
else if (policy.type == 5)
{
json["40021"] = njson::array(); // 自定时段
policy.getGatewayJsonPeriods(json["40021"]);
if (policy->type == 1)
{
json["40002"] = njson::array(); // 峰谷套利
policy->getGatewayJsonPeriods(json["40002"]);
}
else if (policy->type == 5)
{
json["40021"] = njson::array(); // 自定时段
policy->getGatewayJsonPeriods(json["40021"]);
}
}
json["40038"] = {gatewayParam.socMin, gatewayParam.socMax, gatewayParam.capacity, gatewayParam.powerSafe, gatewayParam.powerDischarge, gatewayParam.powerCharge};
json["40058"] = {gatewayParam.backflow, gatewayParam.overload};
std::string text = json.dump();
spdlog::info(text);
mqttCli->publish("Gateway_YT", text);
@@ -229,7 +227,6 @@ string Station::getGatewayParam()
{
stringstream ss;
std::string str1 = "峰谷套利时段:<br>";
std::string str2 = "自定时段:<br>";
{
njson json;
if (JSON::parse(gatewayParam.param1, json))
@@ -249,6 +246,7 @@ string Station::getGatewayParam()
}
}
}
std::string str2 = "自定时段:<br>";
{
njson json;
if (JSON::parse(gatewayParam.param2, json))
@@ -267,7 +265,35 @@ string Station::getGatewayParam()
}
}
}
return str1 + "<br/>" + str2;
std::string str3 = "其它参数:<br>";
{
njson json;
if (JSON::parse(gatewayParam.param3, json))
{
for (int i = 0; i<json.size(); ++i)
{
int val = json[i].get<int>();
if (i==0) { str3 += "&nbsp&nbsp&nbsp&nbsp储能放电下限值SOC: " + std::to_string(val) + "<br>"; } //储能放电下限值 SOC : 40038 (%:0-99 且小于充电上限值)
else if (i==1) { str3 += "&nbsp&nbsp&nbsp&nbsp储能充电上限值SOC: " + std::to_string(val) + "<br>"; }//储能充电上限值 SOC : 40039 (%:1-100 且大于放电下限值)
else if (i==2) { str3 += "&nbsp&nbsp&nbsp&nbsp台区变压器容量: " + std::to_string(val) + "<br>"; }//台区变压器容量 : 40040 (KVVA 160-1600)
else if (i==3) { str3 += "&nbsp&nbsp&nbsp&nbsp安全输入功率: " + std::to_string(val) + "<br>"; }//安全输入功率 : 40041 (KW 0-400)
else if (i==4) { str3 += "&nbsp&nbsp&nbsp&nbsp储能最大放电功率: " + std::to_string(val) + "<br>"; }//储能最大放电功率 : 40042 (1KW0-150)
else if (i==5) { str3 += "&nbsp&nbsp&nbsp&nbsp储能最大充电功率: " + std::to_string(val) + "<br>"; }//储能最大充电功率::40043 (1KW0-150)
else if (i==6) { str3 += "&nbsp&nbsp&nbsp&nbsp运行状态: " + std::to_string(val) + "<br>"; }//运行状态 : 40044 (只读不写0:无 1:高峰放电 2:低谷充电)
else if (i==7) { str3 += "&nbsp&nbsp&nbsp&nbsp台区电表变比: " + std::to_string(val) + "<br>"; }//台区电表变比:40045
//else if (i==8) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(年): " + std::to_string(val) + "<br>"; }//对时(年) : 40051
//else if (i==9) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(月): " + std::to_string(val) + "<br>"; }//对时(月) : 40052
//else if (i==10) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(日): " + std::to_string(val) + "<br>"; }//对时(日) : 40053
//else if (i==11) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(时): " + std::to_string(val) + "<br>"; }//对时(时) : 40054
//else if (i==12) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(分): " + std::to_string(val) + "<br>"; }//对时(分) : 40055
//else if (i==13) { str3 += "&nbsp&nbsp&nbsp&nbsp对时(秒): " + std::to_string(val) + "<br>"; }//对时(秒) : 40056
//else if (i==19) { str3 += "&nbsp&nbsp&nbsp&nbsp时间段月份: " + std::to_string(val) + "<br>"; }//时间段月份 : 40057(1-12 对应1月-12月)
else if (i==20) { str3 += "&nbsp&nbsp&nbsp&nbsp防逆流回差: " + std::to_string(val) + "<br>"; }//防逆流回差 : 40058(1KW 10-300)
else if (i==21) { str3 += "&nbsp&nbsp&nbsp&nbsp防过载回差: " + std::to_string(val) + "<br>"; }//防过载回差 : 40059(1KW 10-300)
}
}
}
return str1 + "<br/>" + str2 + "<br/>" + str3;
}
void Station::checkDevice()
@@ -290,7 +316,7 @@ void Station::readAlert(std::shared_ptr<Device> device, std::string addr, int v,
int64_t ts = Utils::time();
std::string alertId = std::to_string(device->deviceId) + "_" + addr;
int tsCache = mapAlertCache[alertId];
if (ts - tsCache > 60*5)
if (ts - tsCache > 60*30)
{
Fields fields;
fields.set("log_id", Snowflake::instance().getIdStr());
@@ -419,6 +445,14 @@ void Station::readCoolingData(int deviceNo, string addr, int val)
else if (addr == "0x100E") { ; }// 出水压力传感器 R uint16 0正常1告警 0x100E
}
static void JSONReadArrayItem(njson& json, int i, int& v)
{
if (json.is_array() && i < json.size())
{
v = json[i].get<int>();
}
}
void Station::readGatewayMode(int mode, string p1, string p2, string p3)
{
this->gatewayParam.mode = mode;
@@ -429,6 +463,22 @@ void Station::readGatewayMode(int mode, string p1, string p2, string p3)
{
//this->setGarewayWorkMode();
}
njson json;
if (JSON::parse(gatewayParam.param3, json))
{
JSONReadArrayItem(json, 0, gatewayParam.socMin); //储能放电下限值 SOC : 40038 (%:0-99 且小于充电上限值)
JSONReadArrayItem(json, 1, gatewayParam.socMax); //储能充电上限值 SOC : 40039 (%:1-100 且大于放电下限值)
JSONReadArrayItem(json, 2, gatewayParam.capacity); //台区变压器容量 : 40040 (KVVA 160-1600)
JSONReadArrayItem(json, 3, gatewayParam.powerSafe); //安全输入功率 : 40041 (KW 0-400)
JSONReadArrayItem(json, 4, gatewayParam.powerDischarge); //储能最大放电功率 : 40042 (1KW0-150)
JSONReadArrayItem(json, 5, gatewayParam.powerCharge); //储能最大充电功率::40043 (1KW0-150)
JSONReadArrayItem(json, 6, gatewayParam.status); //运行状态 : 40044 (只读不写0:无 1:高峰放电 2:低谷充电)
JSONReadArrayItem(json, 7, gatewayParam.vtRatio); //台区电表变比:40045
JSONReadArrayItem(json, 20, gatewayParam.backflow); //防逆流回差 : 40058(1KW 10-300)
JSONReadArrayItem(json, 21, gatewayParam.overload); //防过载回差 : 40059(1KW 10-300)
}
}
void Station::readGatewayStatus(int cdzStatus, int emuStatus)