diff --git a/README.md b/README.md index 0f8ed87..ec7c2e1 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,26 @@ "newpasswd":"1234" } + + +{ + "command":"addFormula", + "messageId":"123", + "formula_id":"1234abcd", + "stoped_gs":"100", + "continued_gs":"110", + "stoped_satur":"200", + "continued_satur":"300", + "stoped_humi":"100", + "continued_humi":"102", + "injection_pump_speed":"300" +} + +{ + "command":"getAllFormula", + "messageId":"123" +} + ``` diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 8ebe6c9..c1ac7f6 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -324,25 +324,7 @@ void MainControlService::processFrontEndMessage_Disinfection(weak_ptr * 消毒相关指令 * *******************************************************************************/ string cmdstr = cmd["command"]; - if (cmdstr == "startFormula") { - int id = jsonGet(cmd["id"]); - auto formul = m_dbService->getFormula(id); - if (!formul) { - logger->error("formula id {} not exist", id); - receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kdb_operate_error); - receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kdb_operate_error, ""); - return; - } - m_disinfectionCtrlService->startDisinfection(atoi(formul->loglevel.c_str()), // - atoi(formul->injection_pump_speed.c_str()), // - atoi(formul->stoped_gs.c_str()), // - atoi(formul->continued_gs.c_str()), // - atoi(formul->stoped_satur.c_str()), // - atoi(formul->continued_satur.c_str()), // - atoi(formul->stoped_humi.c_str()), // - atoi(formul->continued_humi.c_str())); // - return; - } + if (cmdstr == "startDisinfection") { m_disinfectionCtrlService->startDisinfection(jsonGet(cmd["loglevel"]), // m_dbService->getSettingVal("injection_pump_speed"), // @@ -462,67 +444,30 @@ void MainControlService::processFrontEndMessage_setting(weak_ptr webS } } -void MainControlService::processFrontEndMessage(weak_ptr webSocket, json& cmd, json& receipt) { - string cmdstr = cmd["command"]; - processFrontEndMessage_userOperate(webSocket, cmd, receipt); - processFrontEndMessage_systemOperate(webSocket, cmd, receipt); - processFrontEndMessage_Disinfection(webSocket, cmd, receipt); - processFrontEndMessage_test(webSocket, cmd, receipt); - processFrontEndMessage_setting(webSocket, cmd, receipt); - /******************************************************************************* - * getState * - *******************************************************************************/ - if (cmdstr == "getState") { - receipt["state"]["isLogin"] = m_deviceStateService->isLogin(); - receipt["state"]["loginuser"] = m_deviceStateService->getLoginUid(); - receipt["state"]["permissionLevel"] = m_deviceStateService->getLoginPermissionLevel(); - // receipt["state"]["workState"] = m_disinfectionCtrlService->isDisinfectionRunning(); - - /******************************************************************************* - * disinfectionState * - *******************************************************************************/ - - receipt["state"]["replenishingFluidsWorkState"] = m_disinfectionCtrlService->getReplenishingFluidsWorkState(); - receipt["state"]["drainingWorkState"] = m_disinfectionCtrlService->getDrainingWorkState(); - - /** - * @brief 历史接口 - */ - receipt["state"]["preHeat"] = m_disinfectionCtrlService->isPreheatState(); - receipt["state"]["preHeatRaminTimeS"] = m_disinfectionCtrlService->getPreHeatRaminTimeS(); // 预热剩余时间 - receipt["state"]["estimatedRemainingTimeS"] = m_disinfectionCtrlService->getEstimatedRemainingTimeS(); - receipt["state"]["disinfection_id"] = m_disinfectionCtrlService->getDisinfectionID(); - - // 消毒状态 - receipt["state"]["disinfectionWorkState"] = m_disinfectionCtrlService->getDisinfectionWorkState(); - receipt["state"]["disinfectionState"]["id"] = m_disinfectionCtrlService->getDisinfectionID(); - receipt["state"]["disinfectionState"]["estimatedRemainingTimeS"] = m_disinfectionCtrlService->getEstimatedRemainingTimeS(); - receipt["state"]["disinfectionState"]["workState"] = m_disinfectionCtrlService->getDisinfectionWorkState(); - receipt["state"]["disinfectionState"]["preHeat"] = m_disinfectionCtrlService->isPreheatState(); - receipt["state"]["disinfectionState"]["preHeatRaminTimeS"] = m_disinfectionCtrlService->getPreHeatRaminTimeS(); // 预热剩余时间 - - /******************************************************************************* - * sensor * - *******************************************************************************/ - receipt["state"]["sensor_data"] = createSensorDataJson(); - /******************************************************************************* - * disinfectionConfig * - *******************************************************************************/ - receipt["disinfectionConfig"]["loglevel"] = m_disinfectionCtrlService->m_context.m_targetLoglevel; - receipt["disinfectionConfig"]["injection_pump_speed"] = m_disinfectionCtrlService->m_context.injection_pump_speed; - receipt["disinfectionConfig"]["stoped_gs"] = m_disinfectionCtrlService->m_context.stoped_gs; - receipt["disinfectionConfig"]["continued_gs"] = m_disinfectionCtrlService->m_context.continued_gs; - receipt["disinfectionConfig"]["stoped_satur"] = m_disinfectionCtrlService->m_context.stoped_satur; - receipt["disinfectionConfig"]["continued_satur"] = m_disinfectionCtrlService->m_context.continued_satur; - receipt["disinfectionConfig"]["stoped_humi"] = m_disinfectionCtrlService->m_context.stoped_humi; - receipt["disinfectionConfig"]["continued_humi"] = m_disinfectionCtrlService->m_context.continued_humi; - return; - } - +void MainControlService::processFrontEndMessage_processFormulaCmd(weak_ptr webSocket, json& cmd, json& receipt) { /** * @brief 配方操作 */ - + string cmdstr = cmd["command"]; + if (cmdstr == "startFormula") { + int id = jsonGet(cmd["id"]); + auto formul = m_dbService->getFormula(id); + if (!formul) { + logger->error("formula id {} not exist", id); + receipt["ackcode"] = err::error_code_get_get_ecode(err::kce, err::kdb_operate_error); + receipt["ackcodeInfo"] = err::error_code_get_desc(err::kce, err::kdb_operate_error, ""); + return; + } + m_disinfectionCtrlService->startDisinfection(atoi(formul->loglevel.c_str()), // + atoi(formul->injection_pump_speed.c_str()), // + atoi(formul->stoped_gs.c_str()), // + atoi(formul->continued_gs.c_str()), // + atoi(formul->stoped_satur.c_str()), // + atoi(formul->continued_satur.c_str()), // + atoi(formul->stoped_humi.c_str()), // + atoi(formul->continued_humi.c_str())); // + return; + } if (cmdstr == "getAllFormula") { receipt["formula"] = m_dbService->getAllFormulaJson(); return; @@ -588,6 +533,66 @@ void MainControlService::processFrontEndMessage(weak_ptr webSocket, j } } +void MainControlService::processFrontEndMessage(weak_ptr webSocket, json& cmd, json& receipt) { + string cmdstr = cmd["command"]; + processFrontEndMessage_userOperate(webSocket, cmd, receipt); + processFrontEndMessage_systemOperate(webSocket, cmd, receipt); + processFrontEndMessage_Disinfection(webSocket, cmd, receipt); + processFrontEndMessage_test(webSocket, cmd, receipt); + processFrontEndMessage_setting(webSocket, cmd, receipt); + processFrontEndMessage_processFormulaCmd(webSocket, cmd, receipt); + /******************************************************************************* + * getState * + *******************************************************************************/ + if (cmdstr == "getState") { + receipt["state"]["isLogin"] = m_deviceStateService->isLogin(); + receipt["state"]["loginuser"] = m_deviceStateService->getLoginUid(); + receipt["state"]["permissionLevel"] = m_deviceStateService->getLoginPermissionLevel(); + // receipt["state"]["workState"] = m_disinfectionCtrlService->isDisinfectionRunning(); + + /******************************************************************************* + * disinfectionState * + *******************************************************************************/ + + receipt["state"]["replenishingFluidsWorkState"] = m_disinfectionCtrlService->getReplenishingFluidsWorkState(); + receipt["state"]["drainingWorkState"] = m_disinfectionCtrlService->getDrainingWorkState(); + + /** + * @brief 历史接口 + */ + receipt["state"]["preHeat"] = m_disinfectionCtrlService->isPreheatState(); + receipt["state"]["preHeatRaminTimeS"] = m_disinfectionCtrlService->getPreHeatRaminTimeS(); // 预热剩余时间 + receipt["state"]["estimatedRemainingTimeS"] = m_disinfectionCtrlService->getEstimatedRemainingTimeS(); + receipt["state"]["disinfection_id"] = m_disinfectionCtrlService->getDisinfectionID(); + + // 消毒状态 + receipt["state"]["disinfectionWorkState"] = m_disinfectionCtrlService->getDisinfectionWorkState(); + receipt["state"]["disinfectionState"]["id"] = m_disinfectionCtrlService->getDisinfectionID(); + receipt["state"]["disinfectionState"]["estimatedRemainingTimeS"] = m_disinfectionCtrlService->getEstimatedRemainingTimeS(); + receipt["state"]["disinfectionState"]["workState"] = m_disinfectionCtrlService->getDisinfectionWorkState(); + receipt["state"]["disinfectionState"]["preHeat"] = m_disinfectionCtrlService->isPreheatState(); + receipt["state"]["disinfectionState"]["preHeatRaminTimeS"] = m_disinfectionCtrlService->getPreHeatRaminTimeS(); // 预热剩余时间 + receipt["state"]["disinfectionState"]["logval"] = m_disinfectionCtrlService->m_context.m_nowLoglevel; + + /******************************************************************************* + * sensor * + *******************************************************************************/ + receipt["state"]["sensor_data"] = createSensorDataJson(); + /******************************************************************************* + * disinfectionConfig * + *******************************************************************************/ + receipt["disinfectionConfig"]["loglevel"] = m_disinfectionCtrlService->m_context.m_targetLoglevel; + receipt["disinfectionConfig"]["injection_pump_speed"] = m_disinfectionCtrlService->m_context.injection_pump_speed; + receipt["disinfectionConfig"]["stoped_gs"] = m_disinfectionCtrlService->m_context.stoped_gs; + receipt["disinfectionConfig"]["continued_gs"] = m_disinfectionCtrlService->m_context.continued_gs; + receipt["disinfectionConfig"]["stoped_satur"] = m_disinfectionCtrlService->m_context.stoped_satur; + receipt["disinfectionConfig"]["continued_satur"] = m_disinfectionCtrlService->m_context.continued_satur; + receipt["disinfectionConfig"]["stoped_humi"] = m_disinfectionCtrlService->m_context.stoped_humi; + receipt["disinfectionConfig"]["continued_humi"] = m_disinfectionCtrlService->m_context.continued_humi; + return; + } +} + HttpResponsePtr MainControlService::hello_world( // HttpRequestPtr request, shared_ptr context, std::shared_ptr) { return std::make_shared(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), "hello_world"); diff --git a/src/main_control_service.hpp b/src/main_control_service.hpp index 0a1e7ad..73c8510 100644 --- a/src/main_control_service.hpp +++ b/src/main_control_service.hpp @@ -94,9 +94,10 @@ class MainControlService : public enable_shared_from_this { void processFrontEndMessage_Disinfection(weak_ptr webSocket, json& cmd, json& receipt); void processFrontEndMessage_test(weak_ptr webSocket, json& cmd, json& receipt); void processFrontEndMessage_setting(weak_ptr webSocket, json& cmd, json& receipt); + void processFrontEndMessage_processFormulaCmd(weak_ptr webSocket, json& cmd, json& receipt); json createSensorDataJson(); - void dosystem(string order) ; + void dosystem(string order); }; } // namespace iflytop \ No newline at end of file