Browse Source

HMP110上报所有过氧化氢传感器信息

master
zhaohe 11 months ago
parent
commit
4df745d83b
  1. 2
      app_protocols/transmit_disfection_protocol
  2. 22
      ucomponents/hmp110/hmp110.cpp
  3. 22
      ucomponents/hmp110/hmp110.hpp
  4. 15
      usrc/module/h2o2_sensor.cpp

2
app_protocols/transmit_disfection_protocol

@ -1 +1 @@
Subproject commit 0edd82d824736ca1d4d2f113a382204e702709bc
Subproject commit c1c23f522c5daa18dc89587ff25310d526aa2ca3

22
ucomponents/hmp110/hmp110.cpp

@ -20,7 +20,6 @@ bool HMP110::readReg03(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal, in
bool ret = m_modbusBlockHost->readReg03(slaveAddr, regAddr, regVal, overtimems);
// ZLOGI(TAG, "=============== END%d", ret);
return ret;
}
bool HMP110::readReg03Muti(uint8_t slaveAddr, uint16_t regAddr, uint16_t* regVal, int regNum, int overtimems) { //
@ -72,19 +71,22 @@ bool HMP110::read_reg(int32_t add, uint16_t* val, size_t len) {
}
bool HMP110::read_sensor_data(hmp110_sensordata_t* sensordata) {
uint16_t buf[7];
bool suc = readReg03Muti(m_id, 0x0100, buf, 7, 300);
static_assert(sizeof(hmp110_sensordata_t) == 14 * 2, "sizeof(hmp110_sensordata_t) != 14*2");
uint16_t buf[14];
bool suc = readReg03Muti(m_id, 0x0100, buf, 14, 300);
if (!suc) {
return false;
}
sensordata->rh = buf[0];
sensordata->temp = buf[1];
sensordata->df_ptemp = buf[2];
sensordata->ah = buf[3];
sensordata->mr = buf[4];
sensordata->wet_bulb_temp = buf[5];
sensordata->enthalpy = buf[6];
memset(sensordata, 0, sizeof(hmp110_sensordata_t));
memcpy(sensordata, buf, sizeof(hmp110_sensordata_t));
// sensordata->rh = buf[0];
// sensordata->temp = buf[1];
// sensordata->df_ptemp = buf[2];
// sensordata->ah = buf[3];
// sensordata->mr = buf[4];
// sensordata->wet_bulb_temp = buf[5];
// sensordata->enthalpy = buf[6];
return true;
}

22
ucomponents/hmp110/hmp110.hpp

@ -14,14 +14,22 @@ class HMP110 {
#pragma pack(1)
typedef struct {
int16_t rh; // Relative humidity %RH * 10
int16_t temp; // Temperature °C * 10
int16_t df_ptemp; // Dew/frost point temperature °C * 10
int16_t ah; // Absolute humidity g/m3 * 10
int16_t mr; // Mixing ratio g/kg * 10
int16_t wet_bulb_temp; // Wet-bulb temperature °C * 10
int16_t enthalpy; // Enthalpy kJ/kg * 10
int16_t rh; // 257 Relative humidity %RH * 10
int16_t temp; // 258 Temperature °C * 10
int16_t placeholder0; // 259
int16_t placeholder1; // 260
int16_t df_ptemp; // 261 Dew/frost point temperature °C * 10
int16_t placeholder2; // 262
int16_t placeholder3; // 263
int16_t ah; // 264 Absolute humidity g/m3 * 10
int16_t mr; // 265 Mixing ratio g/kg * 10
int16_t wet_bulb_temp; // 266 Wet-bulb temperature °C * 10
int16_t placeholder4; // 267
int16_t placeholder5; // 268
int16_t placeholder6; // 269
int16_t enthalpy; // 270 Enthalpy kJ/kg * 10
} hmp110_sensordata_t;
#pragma pack()
private:

15
usrc/module/h2o2_sensor.cpp

@ -77,11 +77,16 @@ int32_t H2O2Sensor::h2o2_sensor_data(report_h2o2_data_t* readdata) {
} else {
readdata->sensor_error = 1;
}
readdata->h2o2 = h2o2adcToPPM(h2o2adcData);
readdata->h2o2adc = h2o2adcData;
readdata->rh = sensordata.rh;
readdata->temp = sensordata.temp;
readdata->rs = 0;
readdata->h2o2 = h2o2adcToPPM(h2o2adcData);
readdata->h2o2adc = h2o2adcData;
readdata->rh = sensordata.rh;
readdata->temp = sensordata.temp;
readdata->df_ptemp = sensordata.df_ptemp;
readdata->ah = sensordata.ah;
readdata->mr = sensordata.mr;
readdata->wet_bulb_temp = sensordata.wet_bulb_temp;
readdata->enthalpy = sensordata.enthalpy;
readdata->rs = 0;
ZLOGI(TAG, "ppm:%d(adc:%d), rh:%d, temp:%d, df_ptemp:%d, ah:%d, mr:%d, wbt:%d, eh:%d", //
readdata->h2o2, //
h2o2adcData, //

Loading…
Cancel
Save