增加控制功能
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
#include "httpserver.h"
|
||||
#include "index.h"
|
||||
#include "dashboard.h"
|
||||
#include "../PowerManger.h"
|
||||
#include "mongoose.h"
|
||||
#include <iostream>
|
||||
@@ -59,6 +60,40 @@ void HttpServer::handleWebSocketEvent(struct mg_connection* c, int ev, void* ev_
|
||||
LOG_F(INFO, "Upgrading to WebSocket: id=%lu fd=%d", c->id, c->fd);
|
||||
mg_ws_upgrade(c, hm, nullptr);
|
||||
LOG_F(INFO, "WebSocket upgrade completed: id=%lu fd=%d", c->id, c->fd);
|
||||
} else if (mg_match(hm->uri, mg_str("/dashboard"), NULL)) {
|
||||
// 返回仪表盘HTML
|
||||
mg_http_reply(c, 200, "Content-Type: text/html; charset=utf-8\r\n", DASHBOARD_HTML.c_str());
|
||||
} else if (mg_match(hm->uri, mg_str("/control"), NULL)) {
|
||||
// 处理断路器控制请求
|
||||
if (mg_strcmp(hm->method, mg_str("POST")) == 0) {
|
||||
// 解析JSON请求
|
||||
char *device_type = mg_json_get_str(hm->body, "$.device_type");
|
||||
char *device_id = mg_json_get_str(hm->body, "$.device_id");
|
||||
char *action = mg_json_get_str(hm->body, "$.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);
|
||||
|
||||
// 模拟随机成功或失败 (70%成功率)
|
||||
bool success = (rand() % 10) < 7;
|
||||
const char *message = success ? "操作成功" : "操作失败";
|
||||
|
||||
// 返回JSON响应
|
||||
mg_http_reply(c, 200, "Content-Type: application/json\r\n",
|
||||
"{\"success\": %s, \"message\": \"%s\"}",
|
||||
success ? "true" : "false", message);
|
||||
} else {
|
||||
mg_http_reply(c, 400, "Content-Type: text/plain\r\n", "Invalid request");
|
||||
}
|
||||
// 释放分配的内存
|
||||
if (device_type) free(device_type);
|
||||
if (device_id) free(device_id);
|
||||
if (action) free(action);
|
||||
} else {
|
||||
mg_http_reply(c, 405, "Content-Type: text/plain\r\n", "Method Not Allowed");
|
||||
}
|
||||
} else {
|
||||
// 返回主页HTML
|
||||
mg_http_reply(c, 200, "Content-Type: text/html; charset=utf-8\r\n", INDEX_HTML.c_str());
|
||||
@@ -225,8 +260,33 @@ void HttpServer::pushSystemData() {
|
||||
j["dyn_power_limit2"] = Json::Value(m_systemData->dyn_power_limit2); // 动力电池2功率限制值
|
||||
|
||||
//设备在线状态
|
||||
j["device_online_flag1"] = Json::Value(m_systemData->device_online_flag1);
|
||||
j["device_online_flag2"] = Json::Value(m_systemData->device_online_flag2);
|
||||
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_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); // 复合管控备机在线标志位
|
||||
|
||||
//通信状态
|
||||
//ccu状态
|
||||
j["comm_state"]["ccu_status"]["isTimeout"] = Json::Value(m_systemData->device_common_status.ccu_status.isTimeout);
|
||||
j["comm_state"]["ccu_status"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.ccu_status.lastUpdateTime);
|
||||
|
||||
//高压配电状态
|
||||
j["comm_state"]["dis_hv_c1"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_hv_c1.isTimeout);
|
||||
j["comm_state"]["dis_hv_c1"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_hv_c1.lastUpdateTime);
|
||||
j["comm_state"]["dis_hv_c2"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_hv_c2.isTimeout);
|
||||
j["comm_state"]["dis_hv_c2"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_hv_c2.lastUpdateTime);
|
||||
|
||||
//低压配电状态
|
||||
j["comm_state"]["dis_lv_c1"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c1.isTimeout);
|
||||
j["comm_state"]["dis_lv_c1"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c1.lastUpdateTime);
|
||||
j["comm_state"]["dis_lv_c2"]["isTimeout"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.isTimeout);
|
||||
j["comm_state"]["dis_lv_c2"]["lastUpdateTime"] = Json::Value(m_systemData->device_common_status.dis_lv_c2.lastUpdateTime);
|
||||
|
||||
//复合管控器心跳计算器
|
||||
j["heartbeat"] = Json::Value(m_systemData->heartbeat);
|
||||
|
||||
Reference in New Issue
Block a user