diff --git a/README.md b/README.md index f32e34c..eb60c72 100644 --- a/README.md +++ b/README.md @@ -6,37 +6,33 @@ 2. ws测试地址: ws://192.168.1.148:19000 ``` -``` -修改点: (OK) - 1. 用户等级分为3级别(后台不限制用户等级,前台限制用户操作)OK - 2. iflytop9973属于admin的超级密码 - 3. 修改用户密码 OK - 4. 登陆时给出提示,用户不存在,或者密码错误 - -消毒前,如果湿度太大,不允许消毒。 +# 编译 -添加预设参数 OK -添加预设参数配置 OK +``` +./build.sh +``` +``` +scp ./build/app/app.out root@192.168.8.176:/app/ +``` -添加审计数据库接口 OK -添加审计 OK -通过getState可以获得到log,小数 OK -数据库操作加锁 OK +# 依赖 +## 部署环境依赖 +``` +sudo apt-get install sqlite3 libsqlite3-dev +``` --------------------------------- -记录用户操作 (TODO) -添加U盘数据导出 -添加审计数据导出 +## 编译环境依赖 -排液自动停止 -水禁传感器测试 -磁盘管理(磁盘容量不足时,弹出提示,且停止记录数据) +``` +sudo apt-get install sqlite3:arm64 libsqlite3-dev:arm64 ``` + + # 测试指令 @@ -52,34 +48,9 @@ https://www.sqlite.org/docs.html ``` -测试指令 - - -``` - - -``` -1. 开始消毒后 - - -``` - - -``` 液位测量压力传感器: 设备地址:01 量程:-1~4kPa 4 kPa=407.888 毫米水柱 传感器测量精度:0.407888 毫米水柱 ``` - -``` -1. 支持调速 -2. 液体容量进行滤波 -3. 打印日志去掉小数点 - -1. 加泵写死,速度不可修改,550g/min -2. 注射泵速率限制在30g/min - - -``` \ No newline at end of file diff --git a/src/main_control_service.cpp b/src/main_control_service.cpp index 1986c12..4379705 100644 --- a/src/main_control_service.cpp +++ b/src/main_control_service.cpp @@ -145,56 +145,7 @@ void MainControlService::initialize() { })); }; -json MainControlService::createSensorDataJson() { - json report; - report["airCompressor"]["io1"] = m_deviceIoControlService->airCompressor_getio1(); - report["airCompressor"]["io2"] = m_deviceIoControlService->airCompressor_getio2(); - report["airCompressor"]["currentVal"] = m_deviceIoControlService->airCompressor_getcurrentValue(); - - report["airBlower"]["io1"] = m_deviceIoControlService->airBlower_getio1(); - report["airBlower"]["io2"] = m_deviceIoControlService->airBlower_getio2(); - report["airBlower"]["currentVal"] = m_deviceIoControlService->airBlower_getcurrentValue(); - - report["heatingStrip"]["io1"] = m_deviceIoControlService->heatingStrip_getio1(); - report["heatingStrip"]["io2"] = m_deviceIoControlService->heatingStrip_getio2(); - report["heatingStrip"]["currentVal"] = m_deviceIoControlService->heatingStrip_getcurrentValue(); - - report["pressure"][0] = m_deviceIoControlService->getPressureSensorData(0); // 液位 - report["pressure"][1] = m_deviceIoControlService->getPressureSensorData(1); // 空压机压力 - report["pressure"][2] = m_deviceIoControlService->getPressureSensorData(2); // 加液泵 - report["pressure"][3] = m_deviceIoControlService->getPressureSensorData(3); // 喷射泵 - - // ds->getPressureSensorData(1); - - report["sprinklerPumpRPM"] = m_deviceIoControlService->sprayLiquidPump_getRPM(); - report["chargingPumpRPM"] = m_deviceIoControlService->getChargingPump_PumpRPM(); - - report["sprinklerPumpGPM"] = m_deviceIoControlService->sprayLiquidPump_getGPM(); - // report["chargingPumpGPM"] = m_deviceIoControlService->getChargingPump_PumpGPM(); - report["waterImmersionSensor1"] = m_deviceIoControlService->getWaterImmersionSensor1(); - report["waterImmersionSensor2"] = m_deviceIoControlService->getWaterImmersionSensor2(); - - // Water immersion sensor - report["disinfectant_volume"] = m_deviceIoControlService->getDisinfectantVolume_g(); - // report["h2o2_1"] = m_deviceIoControlService->getH2O2SenSorData1().h2o2; - report["h2o2_1"] = m_deviceIoControlService->getH2O2SenSorData1().h2o2; - report["temp_1"] = m_deviceIoControlService->getH2O2SenSorData1().temp; - report["humid_1"] = m_deviceIoControlService->getH2O2SenSorData1().humid; - report["saturation_1"] = m_deviceIoControlService->getH2O2SenSorData1().saturation + 1; // 为了让曲线不重叠 - - // logger->info("m_deviceIoControlService->getH2O2SenSorData1().h2o2 {}", m_deviceIoControlService->getH2O2SenSorData1().h2o2); - - report["h2o2_2"] = -1; - report["temp_2"] = -1; - report["humid_2"] = -1; - report["saturation_2"] = -1; - report["h2o2_3"] = -1; - report["temp_3"] = -1; - report["humid_3"] = -1; - report["saturation_3"] = -1; - return report; -} // {"command":"startReplenishingFluids","messageId":"startReplenishingFluids","stopAt":123} void MainControlService::processFrontEndMessage_userOperate(weak_ptr webSocket, json& cmd, json& receipt) { string cmdstr = cmd["command"]; @@ -485,6 +436,7 @@ void MainControlService::processFrontEndMessage_test(weak_ptr webSock } return; } + /******************************************************************************* * 执行测试指令 * *******************************************************************************/ @@ -790,6 +742,78 @@ void MainControlService::processFrontEndMessage(weak_ptr webSocket, j } } +void MainControlService::processFrontEndMessage_DeviceIOControlService(weak_ptr webSocket, json& cmd, json& receipt) { + string cmdstr = cmd["command"]; + if (cmdstr == "DeviceIOControlService.airCompressor_setState") { + m_deviceIoControlService->airCompressor_setState(cmd["params"][0]); + return; + } + if (cmdstr == "DeviceIOControlService.airCompressor_channelCtrl") { + m_deviceIoControlService->airCompressor_channelCtrl(cmd["params"][0]); + return; + } + if (cmdstr == "DeviceIOControlService.AirInletProportionalValve_setState") { + m_deviceIoControlService->AirInletProportionalValve_setState(cmd["params"][0]); + return; + } + if (cmdstr == "DeviceIOControlService.AirOutletProportionalValve_setState") { + m_deviceIoControlService->AirOutletProportionalValve_setState(cmd["params"][0]); + return; + } +} +json MainControlService::createSensorDataJson() { + json report; + + report["AirInletProportionalValve"]["state"] = m_deviceIoControlService->AirInletProportionalValve_getState(); + report["AirOutletProportionalValve"]["state"] = m_deviceIoControlService->AirOutletProportionalValve_getState(); + + report["airCompressor"]["channelState"] = m_deviceIoControlService->airCompressor_getChannelState(); + report["airCompressor"]["io1"] = m_deviceIoControlService->airCompressor_getio1(); + report["airCompressor"]["io2"] = m_deviceIoControlService->airCompressor_getio2(); + report["airCompressor"]["currentVal"] = m_deviceIoControlService->airCompressor_getcurrentValue(); + + report["airBlower"]["io1"] = m_deviceIoControlService->airBlower_getio1(); + report["airBlower"]["io2"] = m_deviceIoControlService->airBlower_getio2(); + report["airBlower"]["currentVal"] = m_deviceIoControlService->airBlower_getcurrentValue(); + + report["heatingStrip"]["io1"] = m_deviceIoControlService->heatingStrip_getio1(); + report["heatingStrip"]["io2"] = m_deviceIoControlService->heatingStrip_getio2(); + report["heatingStrip"]["currentVal"] = m_deviceIoControlService->heatingStrip_getcurrentValue(); + + report["pressure"][0] = m_deviceIoControlService->getPressureSensorData(0); // 液位 + report["pressure"][1] = m_deviceIoControlService->getPressureSensorData(1); // 空压机压力 + report["pressure"][2] = m_deviceIoControlService->getPressureSensorData(2); // 加液泵 + report["pressure"][3] = m_deviceIoControlService->getPressureSensorData(3); // 喷射泵 + + // ds->getPressureSensorData(1); + + report["sprinklerPumpRPM"] = m_deviceIoControlService->sprayLiquidPump_getRPM(); + report["chargingPumpRPM"] = m_deviceIoControlService->getChargingPump_PumpRPM(); + + report["sprinklerPumpGPM"] = m_deviceIoControlService->sprayLiquidPump_getGPM(); + // report["chargingPumpGPM"] = m_deviceIoControlService->getChargingPump_PumpGPM(); + + report["waterImmersionSensor1"] = m_deviceIoControlService->getWaterImmersionSensor1(); + report["waterImmersionSensor2"] = m_deviceIoControlService->getWaterImmersionSensor2(); + + // Water immersion sensor + report["disinfectant_volume"] = m_deviceIoControlService->getDisinfectantVolume_g(); + report["h2o2_1"] = m_deviceIoControlService->getH2O2SenSorData1().h2o2; + report["temp_1"] = m_deviceIoControlService->getH2O2SenSorData1().temp; + report["humid_1"] = m_deviceIoControlService->getH2O2SenSorData1().humid; + report["saturation_1"] = m_deviceIoControlService->getH2O2SenSorData1().saturation + 1; // 为了让曲线不重叠 + + report["h2o2_2"] = -1; + report["temp_2"] = -1; + report["humid_2"] = -1; + report["saturation_2"] = -1; + + report["h2o2_3"] = -1; + report["temp_3"] = -1; + report["humid_3"] = -1; + report["saturation_3"] = -1; + return report; +} 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 51cdf18..e723b96 100644 --- a/src/main_control_service.hpp +++ b/src/main_control_service.hpp @@ -99,6 +99,11 @@ class MainControlService : public enable_shared_from_this { void processFrontEndMessage_processFormulaCmd(weak_ptr webSocket, json& cmd, json& receipt); void processFrontEndMessage_processBehaviorRecordCmd(weak_ptr webSocket, json& cmd, json& receipt); + /******************************************************************************* + * NewApi * + *******************************************************************************/ + void processFrontEndMessage_DeviceIOControlService(weak_ptr webSocket, json& cmd, json& receipt); + void processFrontEndMessage_exportData(weak_ptr webSocket, json& cmd, json& receipt); json createSensorDataJson(); diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 682aa01..161b1b3 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -116,8 +116,23 @@ void DeviceIoControlService::airCompressor_setState(bool val) { int DeviceIoControlService::airCompressor_getio1() { return m_zcanHost->read_writeio_state_cache(0); } int DeviceIoControlService::airCompressor_getio2() { return m_zcanHost->read_writeio_state_cache(1); } int DeviceIoControlService::airCompressor_getcurrentValue() { return m_adc_0 * 0.00167 - 1.25; } -int DeviceIoControlService::airCompressor_getstate() { return m_zcanHost->read_writeio_state_cache(0) && m_zcanHost->read_writeio_state_cache(1); } +int DeviceIoControlService::airCompressor_channelCtrl(bool chOpen) { + m_airCompressor_channelState = chOpen; + if (chOpen) { + m_zcanHost->writeio(20, 1); + } else { + m_zcanHost->writeio(20, 0); + } + return 0; +} +bool DeviceIoControlService::airCompressor_getChannelState() { return m_airCompressor_channelState; } + +void DeviceIoControlService::AirInletProportionalValve_setState(int32_t val) { m_AirInletProportionalValve_state = val; } +void DeviceIoControlService::AirOutletProportionalValve_setState(int32_t val) { m_AirOutletProportionalValve_state = val; } +int32_t DeviceIoControlService::AirInletProportionalValve_getState() { return m_AirInletProportionalValve_state; } +int32_t DeviceIoControlService::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; } +int DeviceIoControlService::airCompressor_getstate() { return m_zcanHost->read_writeio_state_cache(0) && m_zcanHost->read_writeio_state_cache(1); } int DeviceIoControlService::airBlower_setState(bool val) { logger->info("airBlower_setState:{}", val); if (val) { diff --git a/src/service/device_io_control_service.hpp b/src/service/device_io_control_service.hpp index e658ebb..772fcab 100644 --- a/src/service/device_io_control_service.hpp +++ b/src/service/device_io_control_service.hpp @@ -59,6 +59,11 @@ class DeviceIoControlService : public enable_shared_from_thisinfo("airBlower_setState:{}", val); m_airBlower_State = val; @@ -298,3 +303,7 @@ bool DeviceIoControlServiceTest::getAllSensorData(DeviceIoControlServiceTest::al } return true; } +void DeviceIoControlServiceTest::AirInletProportionalValve_setState(int32_t val) { m_AirInletProportionalValve_state = val; } +void DeviceIoControlServiceTest::AirOutletProportionalValve_setState(int32_t val) { m_AirOutletProportionalValve_state = val; } +int32_t DeviceIoControlServiceTest::AirInletProportionalValve_getState() { return m_AirInletProportionalValve_state; } +int32_t DeviceIoControlServiceTest::AirOutletProportionalValve_getState() { return m_AirOutletProportionalValve_state; } \ No newline at end of file diff --git a/src/service/device_io_control_service_test.hpp b/src/service/device_io_control_service_test.hpp index d120a26..bdf4038 100644 --- a/src/service/device_io_control_service_test.hpp +++ b/src/service/device_io_control_service_test.hpp @@ -46,6 +46,10 @@ class DeviceIoControlServiceTest : public DeviceIoControlService { bool m_airBlower_State; bool m_heartingPlate_power; + int32_t m_AirInletProportionalValve_state = 0; + int32_t m_AirOutletProportionalValve_state = 0; + bool m_airCompressor_channelState = false; + public: virtual void initialize(); virtual void startScan(); @@ -77,6 +81,18 @@ class DeviceIoControlServiceTest : public DeviceIoControlService { virtual int airCompressor_getio2(); virtual int airCompressor_getstate(); virtual int airCompressor_getcurrentValue(); + virtual int airCompressor_channelCtrl(bool chOpen); + virtual bool airCompressor_getChannelState(); + + /******************************************************************************* + * 比例阀控制 * + *******************************************************************************/ + + virtual void AirInletProportionalValve_setState(int32_t val); + virtual void AirOutletProportionalValve_setState(int32_t val); + + virtual int32_t AirInletProportionalValve_getState(); + virtual int32_t AirOutletProportionalValve_getState(); // heatingStrip