Browse Source

update

master
zhaohe 2 years ago
parent
commit
f1029519c9
  1. 63
      README.md
  2. 122
      src/main_control_service.cpp
  3. 5
      src/main_control_service.hpp
  4. 17
      src/service/device_io_control_service.cpp
  5. 18
      src/service/device_io_control_service.hpp
  6. 9
      src/service/device_io_control_service_test.cpp
  7. 16
      src/service/device_io_control_service_test.hpp

63
README.md

@ -6,37 +6,33 @@
2. ws测试地址: ws://192.168.1.148:19000 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 设备地址:01
量程:-1~4kPa 量程:-1~4kPa
4 kPa=407.888 毫米水柱 4 kPa=407.888 毫米水柱
传感器测量精度:0.407888 毫米水柱 传感器测量精度:0.407888 毫米水柱
``` ```
```
1. 支持调速
2. 液体容量进行滤波
3. 打印日志去掉小数点
1. 加泵写死,速度不可修改,550g/min
2. 注射泵速率限制在30g/min
```

122
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} // {"command":"startReplenishingFluids","messageId":"startReplenishingFluids","stopAt":123}
void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt) { void MainControlService::processFrontEndMessage_userOperate(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt) {
string cmdstr = cmd["command"]; string cmdstr = cmd["command"];
@ -485,6 +436,7 @@ void MainControlService::processFrontEndMessage_test(weak_ptr<WebSocket> webSock
} }
return; return;
} }
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/
@ -790,6 +742,78 @@ void MainControlService::processFrontEndMessage(weak_ptr<WebSocket> webSocket, j
} }
} }
void MainControlService::processFrontEndMessage_DeviceIOControlService(weak_ptr<WebSocket> 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( // HttpResponsePtr MainControlService::hello_world( //
HttpRequestPtr request, shared_ptr<RestfulServer::Context> context, std::shared_ptr<ConnectionState>) { HttpRequestPtr request, shared_ptr<RestfulServer::Context> context, std::shared_ptr<ConnectionState>) {
return std::make_shared<HttpResponse>(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), "hello_world"); return std::make_shared<HttpResponse>(200, "OK", HttpErrorCode::Ok, WebSocketHttpHeaders(), "hello_world");

5
src/main_control_service.hpp

@ -99,6 +99,11 @@ class MainControlService : public enable_shared_from_this<MainControlService> {
void processFrontEndMessage_processFormulaCmd(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt); void processFrontEndMessage_processFormulaCmd(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt);
void processFrontEndMessage_processBehaviorRecordCmd(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt); void processFrontEndMessage_processBehaviorRecordCmd(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt);
/*******************************************************************************
* NewApi *
*******************************************************************************/
void processFrontEndMessage_DeviceIOControlService(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt);
void processFrontEndMessage_exportData(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt); void processFrontEndMessage_exportData(weak_ptr<WebSocket> webSocket, json& cmd, json& receipt);
json createSensorDataJson(); json createSensorDataJson();

17
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_getio1() { return m_zcanHost->read_writeio_state_cache(0); }
int DeviceIoControlService::airCompressor_getio2() { return m_zcanHost->read_writeio_state_cache(1); } 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_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) { int DeviceIoControlService::airBlower_setState(bool val) {
logger->info("airBlower_setState:{}", val); logger->info("airBlower_setState:{}", val);
if (val) { if (val) {

18
src/service/device_io_control_service.hpp

@ -59,6 +59,11 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
int m_adc_1 = 0; // int m_adc_1 = 0; //
int m_adc_2 = 0; int m_adc_2 = 0;
int32_t m_AirInletProportionalValve_state = 0;
int32_t m_AirOutletProportionalValve_state = 0;
bool m_airCompressor_channelState = false;
public: public:
DeviceIoControlService(); DeviceIoControlService();
virtual void initialize(); virtual void initialize();
@ -87,13 +92,24 @@ class DeviceIoControlService : public enable_shared_from_this<DeviceIoControlSer
* * * *
*******************************************************************************/ *******************************************************************************/
virtual void airCompressor_setState(bool val); virtual void airCompressor_setState(bool val);
virtual int airCompressor_channelCtrl(bool chOpen);
virtual bool airCompressor_getChannelState();
virtual int airCompressor_getio1(); virtual int airCompressor_getio1();
virtual int airCompressor_getio2(); virtual int airCompressor_getio2();
virtual int airCompressor_getstate(); virtual int airCompressor_getstate();
virtual int airCompressor_getcurrentValue(); virtual int airCompressor_getcurrentValue();
// heatingStrip
/*******************************************************************************
* *
*******************************************************************************/
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
/******************************************************************************* /*******************************************************************************
* * * *
*******************************************************************************/ *******************************************************************************/

9
src/service/device_io_control_service_test.cpp

@ -42,6 +42,11 @@ int DeviceIoControlServiceTest::airCompressor_getstate() {
return 0; return 0;
} }
int DeviceIoControlServiceTest::airCompressor_channelCtrl(bool chOpen) {
m_airCompressor_channelState = chOpen;
return 0;
}
bool DeviceIoControlServiceTest::airCompressor_getChannelState() { return m_airCompressor_channelState; }
int DeviceIoControlServiceTest::airBlower_setState(bool val) { int DeviceIoControlServiceTest::airBlower_setState(bool val) {
logger->info("airBlower_setState:{}", val); logger->info("airBlower_setState:{}", val);
m_airBlower_State = val; m_airBlower_State = val;
@ -298,3 +303,7 @@ bool DeviceIoControlServiceTest::getAllSensorData(DeviceIoControlServiceTest::al
} }
return true; 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; }

16
src/service/device_io_control_service_test.hpp

@ -46,6 +46,10 @@ class DeviceIoControlServiceTest : public DeviceIoControlService {
bool m_airBlower_State; bool m_airBlower_State;
bool m_heartingPlate_power; bool m_heartingPlate_power;
int32_t m_AirInletProportionalValve_state = 0;
int32_t m_AirOutletProportionalValve_state = 0;
bool m_airCompressor_channelState = false;
public: public:
virtual void initialize(); virtual void initialize();
virtual void startScan(); virtual void startScan();
@ -77,6 +81,18 @@ class DeviceIoControlServiceTest : public DeviceIoControlService {
virtual int airCompressor_getio2(); virtual int airCompressor_getio2();
virtual int airCompressor_getstate(); virtual int airCompressor_getstate();
virtual int airCompressor_getcurrentValue(); 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 // heatingStrip

Loading…
Cancel
Save