完成了网页控制断路器

This commit is contained in:
zjk
2025-05-17 22:39:08 +08:00
parent fb23554408
commit ab803d8d7e
8 changed files with 640 additions and 41 deletions
+103 -13
View File
@@ -71,13 +71,103 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
char *device_id = mg_json_get_str(hm->body, "$.device_id");
char *action = mg_json_get_str(hm->body, "$.action");
bool success = true;
std::string device_type_str = device_type? std::string(device_type) : "";
std::string device_id_str = device_id ? std::string(device_id) : "";
std::string action_str = action ? std::string(action) : "";
if (device_type && device_id && action) {
//TODO: 处理断路器控制逻辑
LOG_F(INFO, "Received control request: device_type=%s, device_id=%s, action=%s ,from Net DashBoard id=%lu fd=%d",
device_type, device_id, action, c->id, c->fd);
device_type, device_id, action, c->id, c->fd);
char opt = (action_str == "open") ? 0 : 1;
if(device_type_str == "meter_bus")
{
if (device_id_str == "battery_meter")
{
success = m_lowerCommManager->operate_LV_lithiumBatteryGroupInstrumentCircuit_Breaker(opt);
} else if (device_id_str == "bow_low_dist")
{
success = m_lowerCommManager->operate_LV_bowLowVoltageDistributionBoxCircuit_Breaker(opt);
} else if (device_id_str == "unit4_dc48v"){
success = m_lowerCommManager->operate_LV_unit4Dc48V_Breaker(opt);
} else if (device_id_str == "dc_c1"){
success = m_lowerCommManager->operate_LV_dcC1Panel_Breaker(opt);
} else if(device_id_str == "reserve1"){
success = m_lowerCommManager->operate_LV_reservedCircuit1_Breaker(opt);
} else if(device_id_str == "reserve2"){
success = m_lowerCommManager->operate_LV_reservedCircuit2_Breaker(opt);
} else if(device_id_str == "emergency_battery2"){
success = m_lowerCommManager->operate_LV_mergencyLithiumBatteryGroup2Circuit_Breaker(opt);
}
}
else if (device_type_str == "bow_high_vol")
{
if (device_id_str == "bow_ft1_3") {
success = m_lowerCommManager->operate_HVA_bowFTDevice123Circuit_Breaker(opt);
} else if (device_id_str == "opening_mechanism") {
success = m_lowerCommManager->operate_HVA_actuatorCircuit_Breaker(opt);
} else if (device_id_str == "mast_steering") {
success = m_lowerCommManager->operate_HVA_mastSteeringGearControlBoxCircuit_Breaker(opt);
} else if (device_id_str == "xcz") {
success = m_lowerCommManager->operate_HVA_xczCircuit_Breaker(opt);
} else if (device_id_str == "bow_rudder") {
success = m_lowerCommManager->operate_HVA_bowRudderControlBoxCircuit_Breaker(opt);
} else if (device_id_str == "water_cover") {
success = m_lowerCommManager->operate_HVA_openWaterCoverStartCylinderCircuit_Breaker(opt);
}
} else if (device_type_str == "high_vol_bus")
{
if (device_id_str == "fuel_cell") {
success = m_lowerCommManager->operate_HV_fuelCellCircuit_Breaker(opt);
} else if (device_id_str == "power_battery") {
success = m_lowerCommManager->operate_HV_powerLithiumBattery_Breaker(opt);
} else if (device_id_str == "propulsion_motor") {
success = m_lowerCommManager->operate_HV_propulsionMotor_Breaker(opt);
} else if (device_id_str == "battery_meter") {
success = m_lowerCommManager->operate_HV_lithiumBatteryMeter_Breaker(opt);
} else if (device_id_str == "dcdc5") {
success = m_lowerCommManager->operate_HV_dcDc5Module_Breaker(opt);
} else if (device_id_str == "bow_distribution") {
success = m_lowerCommManager->operate_HV_bowHighVoltageBox_Breaker(opt);
} else if (device_id_str == "stern_ft45") {
success = m_lowerCommManager->operate_HV_sternFt45_Breaker(opt);
} else if (device_id_str == "stern_rudder1") {
success = m_lowerCommManager->operate_HV_sternRudder1_Breaker(opt);
} else if (device_id_str == "stern_rudder2") {
success = m_lowerCommManager->operate_HV_sternRudder2_Breaker(opt);
} else if (device_id_str == "fb_reserve") {
success = m_lowerCommManager->operate_HV_fbReserved_Breaker(opt);
} else if (device_id_str == "tyz_reserve") {
success = m_lowerCommManager->operate_HV_tyzReserved_Breaker(opt);
} else if (device_id_str == "reserve") {
success = m_lowerCommManager->operate_HV_reserved_Breaker(opt);
} else if (device_id_str == "dcdc5_start") {
success = m_lowerCommManager->operate_HV_dcDc5_Breaker(opt);
} else if (device_id_str == "cooling_system") {
success = m_lowerCommManager->operate_HV_coolingSystem_Breaker(opt);
}
} else if (device_type_str == "bow_low_vol")
{
if (device_id_str == "unit1") {
success = m_lowerCommManager->operate_LVA_unit1Circuit_Breaker(opt);
} else if (device_id_str == "unit2") {
success = m_lowerCommManager->operate_LVA_unit2Circuit_Breaker(opt);
} else if (device_id_str == "unit3") {
success = m_lowerCommManager->operate_LVA_unit3Circuit_Breaker(opt);
} else if (device_id_str == "unit5") {
success = m_lowerCommManager->operate_LVA_unit5Circuit_Breaker(opt);
} else if (device_id_str == "bow_pz") {
success = m_lowerCommManager->operate_LVA_bowPZDeviceCircuit_Breaker(opt);
} else if (device_id_str == "reserve1") {
success = m_lowerCommManager->operate_LVA_reservedCircuit1_Breaker(opt);
} else if (device_id_str == "reserve2") {
success = m_lowerCommManager->operate_LVA_reservedCircuit2_Breaker(opt);
} else if (device_id_str == "emergency_battery1") {
success = m_lowerCommManager->operate_LVA_mergencyLithiumBatteryGroup1Circuit_Breaker(opt);
}
}
// 模拟随机成功或失败 (70%成功率)
bool success = (rand() % 10) < 7;
const char *message = success ? "操作成功" : "操作失败";
// 返回JSON响应
@@ -260,17 +350,17 @@ void HttpServer::pushSystemData() {
j["dyn_power_limit2"] = Json::Value(m_systemData->dyn_power_limit2); // 动力电池2功率限制值
//设备在线状态
j["device_onile"]["device_online_flag1"] = Json::Value(m_systemData->device_online_flag1);
j["device_onile"]["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
j["device_online"]["device_online_flag1"] = Json::Value(m_systemData->device_online_flag1);
j["device_online"]["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
j["device_onile"]["ins_online_state"] = Json::Value(m_systemData->device_online_status.ins_online_state); // 仪表锂电在线标志位
j["device_onile"]["dyn_online_state"] = Json::Value(m_systemData->device_online_status.dyn_online_state); // 动力锂电在线标志位
j["device_onile"]["fuel_online_state"] = Json::Value(m_systemData->device_online_status.fuel_online_state); // 燃电锂电在线标志位
j["device_onile"]["high_voltage_online_state"] = Json::Value(m_systemData->device_online_status.high_voltage_online_state); // 高压配电板在线标志位
j["device_onile"]["low_voltage_online_state"] = Json::Value(m_systemData->device_online_status.low_voltage_online_state); // 低压配电板在线标志位
j["device_onile"]["composite_online_state"] = Json::Value(m_systemData->device_online_status.composite_online_state); // 复合管控主机在线标志位
j["device_onile"]["composite_backup_online_state"] = Json::Value(m_systemData->device_online_status.composite_backup_online_state); // 复合管控备机在线标志位
j["device_online_status"]["ins_online_state"] = Json::Value(m_systemData->device_online_status.ins_online_state); // 仪表锂电在线标志位
j["device_online_status"]["dyn_online_state"] = Json::Value(m_systemData->device_online_status.dyn_online_state); // 动力锂电在线标志位
j["device_online_status"]["fuel_online_state"] = Json::Value(m_systemData->device_online_status.fuel_online_state); // 燃电锂电在线标志位
j["device_online_status"]["high_voltage_online_state"] = Json::Value(m_systemData->device_online_status.high_voltage_online_state); // 高压配电板在线标志位
j["device_online_status"]["low_voltage_online_state"] = Json::Value(m_systemData->device_online_status.low_voltage_online_state); // 低压配电板在线标志位
j["device_online_status"]["composite_online_state"] = Json::Value(m_systemData->device_online_status.composite_online_state); // 复合管控主机在线标志位
j["device_online_status"]["composite_backup_online_state"] = Json::Value(m_systemData->device_online_status.composite_backup_online_state); // 复合管控备机在线标志位
// cout << j << endl;
//通信状态
//ccu状态
j["comm_state"]["ccu_status"]["isTimeout"] = Json::Value(m_systemData->device_common_status.ccu_status.isTimeout);