|
|
@ -73,37 +73,56 @@ shared_ptr<H2O2SensorDataCache> H2O2SensorDataMgr::getSensorDataCache(uint8_t se |
|
|
|
return sensor_data; |
|
|
|
} |
|
|
|
|
|
|
|
void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, report_h2o2_data_t* h2o2data) { |
|
|
|
void H2O2SensorDataMgr::convertH2o2Data(report_h2o2_data_t* from, H2O2ReportData* to) { |
|
|
|
to->sensor_error = from->sensor_error; |
|
|
|
to->h2o2 = from->h2o2; |
|
|
|
to->rh = from->rh; |
|
|
|
to->temp = from->temp; |
|
|
|
to->rs = from->rs; |
|
|
|
to->h2o2adc = from->h2o2adc; |
|
|
|
to->df_ptemp = from->df_ptemp; |
|
|
|
to->ah = from->ah; |
|
|
|
to->mr = from->mr; |
|
|
|
to->wet_bulb_temp = from->wet_bulb_temp; |
|
|
|
to->enthalpy = from->enthalpy; |
|
|
|
} |
|
|
|
|
|
|
|
void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, report_h2o2_data_t* _h2o2data) { |
|
|
|
lock_guard<recursive_mutex> lock(m_lock); |
|
|
|
H2O2ReportData h2o2data; |
|
|
|
|
|
|
|
convertH2o2Data(_h2o2data, &h2o2data); |
|
|
|
|
|
|
|
// 打印10次日志,以后的调试通过前端读取获取
|
|
|
|
static int logcnt = 0; |
|
|
|
logcnt++; |
|
|
|
if (logcnt < 10) logger->info("update h2o2 : sensorId = {}, h2o2 = {}, temp = {}, rh = {}, rs = {}", sensorId, h2o2data->h2o2, h2o2data->temp, h2o2data->rh, h2o2data->rs); |
|
|
|
|
|
|
|
if (logcnt < 10 || GET_SERVICE(DeviceStateService)->getDeviceState() == DeviceState::Disinfection) { |
|
|
|
logger->info("update h2o2 : {}", sensorId, json(h2o2data)); |
|
|
|
} |
|
|
|
|
|
|
|
if (zsteady_clock().gets() > SENSOR_PREHEART_TIME_S) { |
|
|
|
float h2o2 = h2o2data->h2o2; |
|
|
|
float temp = h2o2data->temp / 10.0; |
|
|
|
float rh = h2o2data->rh / 10.0; |
|
|
|
float h2o2 = h2o2data.h2o2; |
|
|
|
float temp = h2o2data.temp / 10.0; |
|
|
|
float rh = h2o2data.rh / 10.0; |
|
|
|
float rs = 0; |
|
|
|
if (h2o2data->rs == 0) { |
|
|
|
if (h2o2data.rs == 0) { |
|
|
|
rs = zh2o2_compute_rs(h2o2, zh2o2_t2k(temp), rh, AIR_PRESSURE); |
|
|
|
} |
|
|
|
if (h2o2 < 30) { |
|
|
|
h2o2 = 0; |
|
|
|
} |
|
|
|
updateH2o2SensorData(sensorId, h2o2, rh, temp, rs); |
|
|
|
|
|
|
|
updateH2o2SensorData(sensorId, &h2o2data, h2o2, rh, temp, rs); |
|
|
|
} else { |
|
|
|
float h2o2 = 0; |
|
|
|
float temp = h2o2data->temp / 10.0; |
|
|
|
float temp = h2o2data.temp / 10.0; |
|
|
|
float rh = 0; |
|
|
|
float rs = 0; |
|
|
|
updateH2o2SensorData(sensorId, h2o2, rh, temp, rs); |
|
|
|
updateH2o2SensorData(sensorId, &h2o2data, h2o2, rh, temp, rs); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, float h2o2, float rh, float temp, float rs) { |
|
|
|
void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, H2O2ReportData* reportdata, float h2o2, float rh, float temp, float rs) { |
|
|
|
lock_guard<recursive_mutex> lock(m_lock); |
|
|
|
|
|
|
|
auto dataCache = getSensorDataCache(sensorId); |
|
|
@ -112,6 +131,7 @@ void H2O2SensorDataMgr::updateH2o2SensorData(uint8_t sensorId, float h2o2, float |
|
|
|
dataCache->rh = rh; |
|
|
|
dataCache->rs = rs; |
|
|
|
dataCache->updatetime = zsys_get_ticket(); |
|
|
|
dataCache->reportData = *reportdata; |
|
|
|
statisticsSensorData(); |
|
|
|
} |
|
|
|
|
|
|
|