diff --git a/README.md b/README.md index 958f4f7..37cf3db 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,9 @@ 1.添加配置恢复出场设置接口 V5.3 添加加液时排空管路的逻辑 + V6.3 + 修改小消毒机的喷液默认速率为4,上限为8 + 修改其他消毒机的喷液默认速率为15,上限为40 ``` diff --git a/h2o2_computer/zh2o2_computer.c b/h2o2_computer/zh2o2_computer.c index 52e45f8..c267dab 100644 --- a/h2o2_computer/zh2o2_computer.c +++ b/h2o2_computer/zh2o2_computer.c @@ -193,11 +193,11 @@ int zh2o2_computer_self_test() { ZCHECK_EQ(zh2o2_compute_pms(500, t2k(20), 101325), 1063.920083, 0.01); ZCHECK_EQ(zh2o2_compute_rs(500, t2k(20), 42, 101325), 92.345718, 0.01); - float temperatureC = 20; + float temperatureC = 26; float AirPressure = 101325; float rh = 50; printf("T AirPressure RH H2O2(ppm) RS\n"); - for (size_t i = 0; i < 500; i += 50) { + for (size_t i = 0; i < 500; i += 1) { float rs = zh2o2_compute_rs(i, zh2o2_t2k(temperatureC), rh, AirPressure); printf("%d %d %d %d %d\n", (int) temperatureC, (int)AirPressure, (int)rh, (int) i, (int)rs); } diff --git a/src/api/cmds/disinfection_cmd_impl.cpp b/src/api/cmds/disinfection_cmd_impl.cpp index 2a83717..ee34341 100644 --- a/src/api/cmds/disinfection_cmd_impl.cpp +++ b/src/api/cmds/disinfection_cmd_impl.cpp @@ -103,14 +103,24 @@ void DisinfectionCmdImpl::startDisinfection(json& cmd, json& receipt) { receipt["ackDisplayInfo"] = "蒸发仓有积水,请排水后再进行消毒"; return; } +#if 0 int disinfectantVolumeG = m_deviceIoControlService->getDisinfectantVolume_g(); - if (disinfectantVolumeG < MIN_DISINFECTANT_VOLUME) { + if (disinfectantVolumeG < (MIN_DISINFECTANT_VOLUME)) { logger->error("start disinfection failed, disinfectant volume not enough {} < {}", disinfectantVolumeG, MIN_DISINFECTANT_VOLUME); receipt["ackcode"] = err::zecode(err::kce_disinfectant_insufficient); receipt["ackcodeInfo"] = err::zecode2str(err::kce_disinfectant_insufficient); receipt["ackDisplayInfo"] = fmt::format("消毒剂小于{}g,请补充消毒剂", MIN_DISINFECTANT_VOLUME); return; } +#endif + int disinfectantVolumeG = m_deviceIoControlService->getDisinfectantVolume_g(); + if (disinfectantVolumeG <= 0) { + logger->error("start disinfection failed, disinfectant volume not enough {} < {}", disinfectantVolumeG, 0); + receipt["ackcode"] = err::zecode(err::kce_disinfectant_insufficient); + receipt["ackcodeInfo"] = err::zecode2str(err::kce_disinfectant_insufficient); + receipt["ackDisplayInfo"] = fmt::format("没有消毒剂,请添加消毒剂"); + return; + } #endif @@ -164,9 +174,9 @@ void DisinfectionCmdImpl::startFormula(json& cmd, json& receipt) { receipt["ackDisplayInfo"] = "蒸发仓有积水,请排水后再进行消毒"; return; } - +#if 0 int disinfectantVolumeG = m_deviceIoControlService->getDisinfectantVolume_g(); - if (disinfectantVolumeG < (MIN_DISINFECTANT_VOLUME)) { + if (disinfectantVolumeG < (MIN_DISINFECTANT_VOLUME)) { logger->error("start disinfection failed, disinfectant volume not enough {} < {}", disinfectantVolumeG, MIN_DISINFECTANT_VOLUME); receipt["ackcode"] = err::zecode(err::kce_disinfectant_insufficient); receipt["ackcodeInfo"] = err::zecode2str(err::kce_disinfectant_insufficient); @@ -174,6 +184,15 @@ void DisinfectionCmdImpl::startFormula(json& cmd, json& receipt) { return; } #endif + int disinfectantVolumeG = m_deviceIoControlService->getDisinfectantVolume_g(); + if (disinfectantVolumeG <= 0) { + logger->error("start disinfection failed, disinfectant volume not enough {} < {}", disinfectantVolumeG, 0); + receipt["ackcode"] = err::zecode(err::kce_disinfectant_insufficient); + receipt["ackcodeInfo"] = err::zecode2str(err::kce_disinfectant_insufficient); + receipt["ackDisplayInfo"] = fmt::format("没有消毒剂,请添加消毒剂"); + return; + } +#endif auto dfs = m_disinfectionCtrlService->getDisinfectionService(); diff --git a/src/db/db_service.cpp b/src/db/db_service.cpp index 9a0fcbb..004f2b3 100644 --- a/src/db/db_service.cpp +++ b/src/db/db_service.cpp @@ -7,6 +7,7 @@ #include "db_service.hpp" // #include "iflytop/components/sqlite_orm/sqlite_orm.hpp" +#include "configs/project_setting.hpp" using namespace std; using namespace iflytop; @@ -80,6 +81,19 @@ using namespace nlohmann; // {.id = 10, .name = "continued_humi", .name_ch = "消毒继续相对湿度", .val_lower_limit = 0, .val_upper_limit = 100, .permission_level = 0, .val = 70}, // }; +#if (defined PROJECT_TYPE_LARGE_SPACE_DISINFECTION) || (defined PROJECT_TYPE_SMALL_SPACE_DISINFECTION) || (defined PROJECT_TYPE_PIPE_DISINFECTION) + +#define INJECTION_PUMP_SPEED_DEFAULT 15 +#define INJECTION_PUMP_SPEED_LIMIT_VAL 40 +#endif + +#ifdef PROJECT_TYPE_DRAW_BAR_BOX +#define INJECTION_PUMP_SPEED_DEFAULT 4 +#define INJECTION_PUMP_SPEED_LIMIT_VAL 8 +#endif + + + static Setting config_settings_table[] = { SETTING_ITEM(1, "stoped_gs", /*************/ "消毒停止过氧化氢溶度", /**********/ 0, 2000, 300), // SETTING_ITEM(2, "continued_gs", /**********/ "消毒继续过氧化氢溶度", /**********/ 0, 2000, 200), // @@ -87,7 +101,7 @@ static Setting config_settings_table[] = { SETTING_ITEM(4, "continued_satur", /*******/ "消毒继续过氧化氢相对饱和度", /*****/ 0, 100, 60), // SETTING_ITEM(5, "max_humidity", /**********/ "允许消毒最大湿度", /*************/ 0, 100, 90), // SETTING_ITEM(6, "drainage_pump_speed", /***/ "排液蠕动泵最大转速", /************/ 0, 400, 400), // - SETTING_ITEM(7, "injection_pump_speed", /**/ "喷射蠕动泵转速", /***************/ 0, 40, 15), // + SETTING_ITEM(7, "injection_pump_speed", /**/ "喷射蠕动泵转速", /***************/ 0, INJECTION_PUMP_SPEED_LIMIT_VAL, INJECTION_PUMP_SPEED_DEFAULT), // SETTING_ITEM(8, "pre_heat_time_s", /*******/ "预热时间", /*******************/ 0, 1200, 120), // SETTING_ITEM(9, "stoped_humi", /***********/ "消毒停止相对湿度", /************/ 0, 100, 85), // SETTING_ITEM(10, "continued_humi", /*******/ "消毒继续相对湿度", /************/ 0, 100, 60), // diff --git a/src/service/disfection_ctl/add_liquid_service.cpp b/src/service/disfection_ctl/add_liquid_service.cpp index 4916193..f52c981 100644 --- a/src/service/disfection_ctl/add_liquid_service.cpp +++ b/src/service/disfection_ctl/add_liquid_service.cpp @@ -41,7 +41,7 @@ void AddLiquidService::startReplenishingFluids(int stopatg) { int32_t nowvolume = m_deviceIoControlService->getDisinfectantVolume_g(); int maxg = DISINFECTANT_BUCKET_CAPACITY; - stopatg += 30; // 由于加液过程中,测量到的液体要比真实的小,所以这里要比预设值大100 + stopatg += 0; // 由于加液过程中,测量到的液体要比真实的小,所以这里要比预设值大100 if (stopatg > maxg) { logger->warn("start Replenishing fail, stopatg {} > maxg {}", stopatg, maxg); diff --git a/src/service/disfection_ctl/disinfection_service.hpp.bak b/src/service/disfection_ctl/disinfection_service.hpp.bak deleted file mode 100644 index 498eeb3..0000000 --- a/src/service/disfection_ctl/disinfection_service.hpp.bak +++ /dev/null @@ -1,144 +0,0 @@ -// -// Created by zwsd -// - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "db/db_service.hpp" -#include "service/disinfection_logs_manager.hpp" -#include "disinfection_state.hpp" -#include "iflytop/components/zcanreceiver/zcanhost.hpp" -#include "iflytop/core/core.hpp" -#include "service/device_io_control_service.hpp" -#include "service/disinfection_printer_service.hpp" -#include "utils/dvalue_computer.hpp" -#include "zservice_container/zservice_container.hpp" -/** - * @brief - * - * service: DisinfectionService - * - * 监听事件: - * 依赖状态: - * 依赖服务: - * 作用: - * - */ - -namespace iflytop { -using namespace std; -using namespace core; -class DisinfectionService : public enable_shared_from_this { - ENABLE_LOGGER(DisinfectionService); - - private: - recursive_mutex lock_; - - unique_ptr m_disinfectionThread; - shared_ptr m_deviceIoControlService; - shared_ptr m_dbService; - shared_ptr m_disinfectionLogsManager; - shared_ptr m_disinfectionPrinterService; - DValueComputer m_dvalueComputer; - - int m_disinfectionWorkState = 0; - int m_replenishingFluidsWorkState = 0; - int m_drainingWorkState = 0; // 消毒工作状态,0:未工作,1:工作中 - - public: - DisinfectionContext m_context; - - public: - DisinfectionService(); - - public: - void initialize(); - /** - * @brief 开始消毒 - * - * @param loglevel 消毒等级 - */ - - void startDisinfection(int loglevel, // - int injection_pump_speed, // - int stoped_gs, // - int continued_gs, // - int stoped_satur, // - int continued_satur, // - int stoped_humi, // - int continued_humi // - ); - void changeDisinfectionParameter(int injection_pump_speed, // - int stoped_gs, // - int continued_gs, // - int stoped_satur, // - int continued_satur, // - int stoped_humi, // - int continued_humi // - ); - - void stopDisinfection(); - int getDisinfectionWorkState(); - - /******************************************************************************* - * State * - *******************************************************************************/ - bool isDisinfectionRunning(); - int32_t getEstimatedRemainingTimeS(); - string getDisinfectionID(); - bool isPreheatState(); - int32_t getPreHeatRaminTimeS(); - - private: - string createDisinfectionID(); - - private: - float getDisinfectionDValue(float ppm); - - void initContext(DisinfectionContext& context, // - int loglevel, // - float injection_pump_speed, // - float stoped_gs, // - float continued_gs, // - float stoped_satur, // - float continued_satur, // - float stoped_humi, // - float continued_humi // - ); - - void computeRemainTime(DisinfectionContext& context); - float computeNowLogLevel(DisinfectionContext& context); - void processPreheatState(DisinfectionContext& context); - void processDisinfectionState(DisinfectionContext& context); - void finishDisinfection(DisinfectionContext& context); - - void disinfectionLoop(bool& breakflag); - - void processState_Preheat(DisinfectionContext& context); - void processState_Disinfection(DisinfectionContext& context, bool& updatedval); - void processState_Degradation(DisinfectionContext& context); - - private: - shared_ptr createCSVLogger(string log_file_name); - void dumpDisinfectionLogsToCSV(DisinfectionContext& context); - - void pushDisinfectionPrinterTask(DisinfectionContext& context); - - void log(DisinfectionContext& context); - void takeStateSnapshot(DisinfectionContext& context); - void updateH2O2SensorData(DisinfectionContext& context); - - - private: -}; -} // namespace iflytop \ No newline at end of file diff --git a/src/version.hpp b/src/version.hpp index bdbf098..d05748b 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -1,2 +1,2 @@ #pragma once -#define VERSION "6.1" \ No newline at end of file +#define VERSION "6.2" \ No newline at end of file