diff --git a/CMakeLists.txt b/CMakeLists.txt index 599d191..c344cbe 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,6 +77,8 @@ zadd_executable( ./app/ SRC ${VAR_APP_SOURCE} + h2o2_computer/zh2o2_computer.c + LINK_DIRECTORIES libs/libixwebsocket/lib LINK_LIBRARIES diff --git a/README.md b/README.md index d621a09..09eb8c9 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ # README ``` + V2.2 + 1.添加H2O2-RS计算算法 + +``` + +``` 1. 输入rootiflytop9973可以进入超级用户 2. ws测试地址: ws://192.168.8.10:19000 ``` diff --git a/h2o2_computer/zh2o2_computer.c b/h2o2_computer/zh2o2_computer.c index 4571629..52e45f8 100644 --- a/h2o2_computer/zh2o2_computer.c +++ b/h2o2_computer/zh2o2_computer.c @@ -193,6 +193,15 @@ 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 AirPressure = 101325; + float rh = 50; + printf("T AirPressure RH H2O2(ppm) RS\n"); + for (size_t i = 0; i < 500; i += 50) { + 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); + } + printf("Test passed\n"); return 0; } \ No newline at end of file diff --git a/h2o2_computer/zh2o2_computer.h b/h2o2_computer/zh2o2_computer.h index 0b74636..22b1375 100644 --- a/h2o2_computer/zh2o2_computer.h +++ b/h2o2_computer/zh2o2_computer.h @@ -1,8 +1,16 @@ #pragma once + +#ifdef __cplusplus +extern "C" { +#endif + #include #include #include +//https://iflytop1.feishu.cn/wiki/QvXow7g6aiI1kskUVwQcRL1BnXd + +#define AIR_PRESSURE 101325.0 /** * @brief 计算 water vapor saturation pressure in an H2O2 vapor environment @@ -31,5 +39,8 @@ double zh2o2_compute_rs(double ppm, double Tk, double rh100, double AirPressure) */ double zh2o2_t2k(double temperatureC); +int zh2o2_computer_self_test(); -int zh2o2_computer_self_test(); \ No newline at end of file +#ifdef __cplusplus +} +#endif \ No newline at end of file diff --git a/src/service/device_io_control_service.cpp b/src/service/device_io_control_service.cpp index 4aa78e7..f1207e3 100644 --- a/src/service/device_io_control_service.cpp +++ b/src/service/device_io_control_service.cpp @@ -5,6 +5,7 @@ #include #include +#include "h2o2_computer/zh2o2_computer.h" #include "iflytop/components/uart_printer/uart_printer.hpp" #include "iflytoplinuxsdk/src/iflytop/components/ziconv.hpp" @@ -280,7 +281,7 @@ void DeviceIoControlService::H2O2Sensor_updateSensorData(int32_t sensorid, repor sensor_data->humid = data->humid / 10; sensor_data->saturation = data->saturation / 10; if (sensor_data->saturation == 0) { - sensor_data->saturation = sensor_data->humid - 3; + sensor_data->saturation = zh2o2_compute_rs(data->h2o2, zh2o2_t2k(data->temp), data->humid, AIR_PRESSURE); } sensor_data->sensorId = data->sensorid; sensor_data->updatetime = zsys_get_ticket(); diff --git a/src/version.hpp b/src/version.hpp index 18d1017..c681d56 100644 --- a/src/version.hpp +++ b/src/version.hpp @@ -1,2 +1,2 @@ #pragma once -#define VERSION "2.1" \ No newline at end of file +#define VERSION "2.2" \ No newline at end of file