Browse Source

V2.2

master
zhaohe 1 year ago
parent
commit
dcd585dfc0
  1. 2
      CMakeLists.txt
  2. 6
      README.md
  3. 9
      h2o2_computer/zh2o2_computer.c
  4. 13
      h2o2_computer/zh2o2_computer.h
  5. 3
      src/service/device_io_control_service.cpp
  6. 2
      src/version.hpp

2
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

6
README.md

@ -2,6 +2,12 @@
# README
```
V2.2
1.添加H2O2-RS计算算法
```
```
1. 输入rootiflytop9973可以进入超级用户
2. ws测试地址: ws://192.168.8.10:19000
```

9
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;
}

13
h2o2_computer/zh2o2_computer.h

@ -1,8 +1,16 @@
#pragma once
#ifdef __cplusplus
extern "C" {
#endif
#include <math.h>
#include <stdbool.h>
#include <stdint.h>
//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();
#ifdef __cplusplus
}
#endif

3
src/service/device_io_control_service.cpp

@ -5,6 +5,7 @@
#include <stdlib.h>
#include <string.h>
#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();

2
src/version.hpp

@ -1,2 +1,2 @@
#pragma once
#define VERSION "2.1"
#define VERSION "2.2"
Loading…
Cancel
Save