Browse Source

fix some bug

master
zhaohe 2 years ago
parent
commit
8eb5e8c34f
  1. 14
      src/main_control_service.cpp
  2. 31
      src/service/device_io_control_service.cpp
  3. 4
      src/service/device_io_control_service.hpp
  4. 20
      src/service/disinfection_ctl_service.cpp
  5. 1
      src/service/disinfection_ctl_service.hpp
  6. 9
      src/service/disinfection_logs_manager.cpp

14
src/main_control_service.cpp

@ -33,6 +33,13 @@ static T jsonGet(json j) {
void MainControlService::initialize() { void MainControlService::initialize() {
GET_TO_SERVICE(m_zconfig); GET_TO_SERVICE(m_zconfig);
// m_dbService.reset(new DBService());
// m_dbService->initialize();
BUILD_AND_REG_SERRVICE(DBService);
GET_SERVICE(DBService)->initialize();
GET_TO_SERVICE(m_dbService);
/** /**
* @brief * @brief
*/ */
@ -52,7 +59,6 @@ void MainControlService::initialize() {
GET_SERVICE(DeviceIoControlService)->initialize(); GET_SERVICE(DeviceIoControlService)->initialize();
GET_TO_SERVICE(m_deviceIoControlService); GET_TO_SERVICE(m_deviceIoControlService);
m_deviceIoControlService->startScan(); m_deviceIoControlService->startScan();
/** /**
@ -107,9 +113,6 @@ void MainControlService::initialize() {
}); });
m_iflytopwsService->startListen(); m_iflytopwsService->startListen();
m_dbService.reset(new DBService());
m_dbService->initialize();
m_reportThread.reset(new Thread("reportThread", [this]() { m_reportThread.reset(new Thread("reportThread", [this]() {
ThisThread thisThread; ThisThread thisThread;
while (!thisThread.getExitFlag()) { while (!thisThread.getExitFlag()) {
@ -149,6 +152,9 @@ json MainControlService::createSensorDataJson() {
report["temp_1"] = m_deviceIoControlService->getH2O2SenSorData1().temp; report["temp_1"] = m_deviceIoControlService->getH2O2SenSorData1().temp;
report["humid_1"] = m_deviceIoControlService->getH2O2SenSorData1().humid; report["humid_1"] = m_deviceIoControlService->getH2O2SenSorData1().humid;
report["saturation_1"] = m_deviceIoControlService->getH2O2SenSorData1().saturation; report["saturation_1"] = m_deviceIoControlService->getH2O2SenSorData1().saturation;
// logger->info("m_deviceIoControlService->getH2O2SenSorData1().h2o2 {}", m_deviceIoControlService->getH2O2SenSorData1().h2o2);
report["h2o2_2"] = -1; report["h2o2_2"] = -1;
report["temp_2"] = -1; report["temp_2"] = -1;
report["humid_2"] = -1; report["humid_2"] = -1;

31
src/service/device_io_control_service.cpp

@ -112,14 +112,32 @@ void DeviceIoControlService::heartingPlate_setPower(bool val) {
int DeviceIoControlService::getSprinkler_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(2); } int DeviceIoControlService::getSprinkler_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(2); }
int DeviceIoControlService::getChargingPump_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(1); } int DeviceIoControlService::getChargingPump_PumpRPM() { return m_zcanHost->pumpctrl_c1004_get_speed_cache(1); }
void DeviceIoControlService::drainingPump_open() { m_zcanHost->pumpctrl_c1004(1, 100, -300, 1, 20); }
void DeviceIoControlService::drainingPump_close() { m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); }
void DeviceIoControlService::drainingPump_open() {
logger->info("drainingPump_open");
m_zcanHost->pumpctrl_c1004(1, 100, -300, 1, 20);
}
void DeviceIoControlService::drainingPump_close() {
logger->info("drainingPump_close");
m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20);
}
void DeviceIoControlService::replenishingFluidsPump_open() { m_zcanHost->pumpctrl_c1004(1, 100, 300, 1, 20); }
void DeviceIoControlService::replenishingFluidsPump_close() { m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20); }
void DeviceIoControlService::replenishingFluidsPump_open() {
logger->info("replenishingFluidsPump_open");
m_zcanHost->pumpctrl_c1004(1, 100, 300, 1, 20);
}
void DeviceIoControlService::replenishingFluidsPump_close() {
logger->info("replenishingFluidsPump_close");
m_zcanHost->pumpctrl_c1004(1, 100, 0, 1, 20);
}
void DeviceIoControlService::sprayLiquidPump_open() { m_zcanHost->pumpctrl_c1004(2, 100, 200, 1, 15); }
void DeviceIoControlService::sprayLiquidPump_close() { m_zcanHost->pumpctrl_c1004(2, 100, 0, 1, 15); }
void DeviceIoControlService::sprayLiquidPump_open() {
logger->info("sprayLiquidPump_open");
m_zcanHost->pumpctrl_c1004(2, 100, 200, 1, 15);
}
void DeviceIoControlService::sprayLiquidPump_close() {
logger->info("sprayLiquidPump_close");
m_zcanHost->pumpctrl_c1004(2, 100, 0, 1, 15);
}
int DeviceIoControlService::getDisinfectantVolume_g() { int DeviceIoControlService::getDisinfectantVolume_g() {
// kpa; // kpa;
@ -148,6 +166,7 @@ DeviceIoControlService::h2o2sensor_data_t DeviceIoControlService::getH2O2SenSorD
} }
bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data) { bool DeviceIoControlService::getAllSensorData(DeviceIoControlService::all_h2o2sensor_data_t& data) {
data = {0};
data.h2o2sensor_data[0] = getH2O2SenSorData1(); data.h2o2sensor_data[0] = getH2O2SenSorData1();
data.h2o2sensor_status[0] = true; data.h2o2sensor_status[0] = true;

4
src/service/device_io_control_service.hpp

@ -41,8 +41,8 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
shared_ptr<ZCanHost> m_zcanHost; shared_ptr<ZCanHost> m_zcanHost;
// //
ZCanHost::hpp272_data_t m_hpp272_data_1;
ZCanHost::huacheng_pressure_sensor_read_c1005_t m_pressure_sensor_data[5];
ZCanHost::hpp272_data_t m_hpp272_data_1 = {0};
ZCanHost::huacheng_pressure_sensor_read_c1005_t m_pressure_sensor_data[5] = {0};
// //
bool m_waterImmersionSensor1 = false; // 漏液检测 bool m_waterImmersionSensor1 = false; // 漏液检测

20
src/service/disinfection_ctl_service.cpp

@ -23,7 +23,7 @@ using namespace std;
*/ */
#define PRE_HEAT_TIME (2) #define PRE_HEAT_TIME (2)
#define DVALUE_COMPUTEPERIOD_TIME_S (60.0)
#define DVALUE_COMPUTEPERIOD_TIME_S (15.0)
#define MAX_VOLUME (5000) #define MAX_VOLUME (5000)
DisinfectionCtrlService::DisinfectionCtrlService() {} DisinfectionCtrlService::DisinfectionCtrlService() {}
@ -91,6 +91,7 @@ void DisinfectionCtrlService::computeRemainTime(DisinfectionContext& context) {
* @brief Dvalue * @brief Dvalue
*/ */
float dvalue = getDisinfectionDValue(context.h2o2data.min_h2o2); float dvalue = getDisinfectionDValue(context.h2o2data.min_h2o2);
context.dvalue = dvalue;
/** /**
* @brief m_nowLoglevel * @brief m_nowLoglevel
@ -113,6 +114,7 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context, int logl
context.m_nowLoglevel = 0; context.m_nowLoglevel = 0;
context.m_loglevel = loglevel; context.m_loglevel = loglevel;
context.m_roomvol = roomVol; context.m_roomvol = roomVol;
m_context.m_preheatFlag = true;
context.stoped_gs = m_dbService->getSettingVal("stoped_gs"); context.stoped_gs = m_dbService->getSettingVal("stoped_gs");
context.continued_gs = m_dbService->getSettingVal("continued_gs"); context.continued_gs = m_dbService->getSettingVal("continued_gs");
@ -130,7 +132,7 @@ void DisinfectionCtrlService::initContext(DisinfectionContext& context, int logl
m_zcanHost->warning_light_ctrl_c1002(1, 0, 0, 1, 0); m_zcanHost->warning_light_ctrl_c1002(1, 0, 0, 1, 0);
m_deviceIoControlService->heartingPlate_setPower(true); m_deviceIoControlService->heartingPlate_setPower(true);
context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID); context.csvlogger = m_disinfectionLogsManager->createNewLogger(context.m_disinfectionID);
context.csvlogger->write("time,h2o21,temp1,humi1,saturation1,h2o22,temp2,humi2,saturation2,h2o23,temp3,humi3,saturation3,dvalue,nowlog,targetlog,remaintime");
context.csvlogger->write("time,h2o21,temp1,humi1,saturation1,h2o22,temp2,humi2,saturation2,h2o23,temp3,humi3,saturation3,dvalue,nowlog,targetlog,remaintime\n");
} }
void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) { void DisinfectionCtrlService::finishDisinfection(DisinfectionContext& context) {
context.m_remaintime = 0; context.m_remaintime = 0;
@ -167,8 +169,9 @@ void DisinfectionCtrlService::processPreheatState(DisinfectionContext& context)
context.sprayLiquidFlag = true; context.sprayLiquidFlag = true;
} }
} }
void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) {
logger->info("T:{},h2o21:{},t1:{},humi:{},s1:{},h2o22:{},t2:{},humi2:{},s2:{},h2o23:{},t3:{},humi3:{},s3:{},dvalue:{},nowlog:{},targetlog:{},remaintime:{}",
void DisinfectionCtrlService::dumpDisinfectionLogsToCSV(DisinfectionContext& context) {
context.csvlogger->write(fmt::format("{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}\n",
zsteady_clock().elapsedTimeS(m_context.m_starttp), // zsteady_clock().elapsedTimeS(m_context.m_starttp), //
m_context.h2o2data.h2o2sensor_data[0].h2o2, // m_context.h2o2data.h2o2sensor_data[0].h2o2, //
m_context.h2o2data.h2o2sensor_data[0].temp, // m_context.h2o2data.h2o2sensor_data[0].temp, //
@ -186,9 +189,11 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context)
m_context.m_nowLoglevel, // m_context.m_nowLoglevel, //
m_context.m_targetLoglevel, // m_context.m_targetLoglevel, //
m_context.m_remaintime // m_context.m_remaintime //
);
));
}
context.csvlogger->write(fmt::format("{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}",
void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context) {
logger->info("T:{},h2o21:{},t1:{},humi:{},s1:{},h2o22:{},t2:{},humi2:{},s2:{},h2o23:{},t3:{},humi3:{},s3:{},dvalue:{},nowlog:{},targetlog:{},remaintime:{}",
zsteady_clock().elapsedTimeS(m_context.m_starttp), // zsteady_clock().elapsedTimeS(m_context.m_starttp), //
m_context.h2o2data.h2o2sensor_data[0].h2o2, // m_context.h2o2data.h2o2sensor_data[0].h2o2, //
m_context.h2o2data.h2o2sensor_data[0].temp, // m_context.h2o2data.h2o2sensor_data[0].temp, //
@ -206,7 +211,7 @@ void DisinfectionCtrlService::dumpDisinfectionLogs(DisinfectionContext& context)
m_context.m_nowLoglevel, // m_context.m_nowLoglevel, //
m_context.m_targetLoglevel, // m_context.m_targetLoglevel, //
m_context.m_remaintime // m_context.m_remaintime //
));
);
} }
void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& context) { void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& context) {
@ -221,6 +226,7 @@ void DisinfectionCtrlService::processDisinfectionState(DisinfectionContext& cont
* @brief * @brief
*/ */
computeRemainTime(m_context); computeRemainTime(m_context);
dumpDisinfectionLogsToCSV(m_context);
} }
dumpDisinfectionLogs(m_context); dumpDisinfectionLogs(m_context);

1
src/service/disinfection_ctl_service.hpp

@ -125,6 +125,7 @@ class DisinfectionCtrlService : public enable_shared_from_this<DisinfectionCtrlS
void processPreheatState(DisinfectionContext& context); void processPreheatState(DisinfectionContext& context);
void processDisinfectionState(DisinfectionContext& context); void processDisinfectionState(DisinfectionContext& context);
void dumpDisinfectionLogs(DisinfectionContext& context); void dumpDisinfectionLogs(DisinfectionContext& context);
void dumpDisinfectionLogsToCSV(DisinfectionContext& context);
void finishDisinfection(DisinfectionContext& context); void finishDisinfection(DisinfectionContext& context);
}; };
} // namespace iflytop } // namespace iflytop

9
src/service/disinfection_logs_manager.cpp

@ -18,12 +18,19 @@ void DisinfectionLogger::initialize(string log_file_name) { //
logger->error("create loggers:{} failed", log_file_name); logger->error("create loggers:{} failed", log_file_name);
} }
} }
void DisinfectionLogger::write(string log) { m_logfile.write(log.c_str(), log.size()); }
void DisinfectionLogger::write(string log) {
m_logfile.write(log.c_str(), log.size());
if (m_logfile.fail()) {
logger->error("write log failed:{}", strerror(errno));
}
m_logfile.flush();
}
DisinfectionLogsManager::DisinfectionLogsManager(/* args */) {} DisinfectionLogsManager::DisinfectionLogsManager(/* args */) {}
DisinfectionLogsManager::~DisinfectionLogsManager() {} DisinfectionLogsManager::~DisinfectionLogsManager() {}
shared_ptr<DisinfectionLogger> DisinfectionLogsManager::createNewLogger(string log_file_name) { shared_ptr<DisinfectionLogger> DisinfectionLogsManager::createNewLogger(string log_file_name) {
system(fmt::format("mkdir -p {}", LOG_STORGE_PATH).c_str());
shared_ptr<DisinfectionLogger> logger = make_shared<DisinfectionLogger>(); shared_ptr<DisinfectionLogger> logger = make_shared<DisinfectionLogger>();
logger->initialize(fmt::format("{}{}.csv", LOG_STORGE_PATH, log_file_name)); logger->initialize(fmt::format("{}{}.csv", LOG_STORGE_PATH, log_file_name));
return logger; return logger;

Loading…
Cancel
Save