Other related class use new AgValue structure

This commit is contained in:
samuelbles07
2024-10-19 01:35:36 +07:00
parent 2e4f4643fa
commit 399b4ca1dc
4 changed files with 69 additions and 54 deletions

View File

@ -64,7 +64,7 @@ void LocalServer::_GET_metrics(void) {
} }
void LocalServer::_GET_measure(void) { void LocalServer::_GET_measure(void) {
String toSend = measure.toStringX(true, fwMode, wifiConnector.RSSI(), *ag, config); String toSend = measure.toString(true, fwMode, wifiConnector.RSSI(), *ag, config);
server.send(200, "application/json", toSend); server.send(200, "application/json", toSend);
} }

View File

@ -74,41 +74,50 @@ String OpenMetrics::getPayload(void) {
int atmpCompensated = utils::getInvalidTemperature(); int atmpCompensated = utils::getInvalidTemperature();
int ahumCompensated = utils::getInvalidHumidity(); int ahumCompensated = utils::getInvalidHumidity();
if (config.hasSensorPMS1 && config.hasSensorPMS2) { if (config.hasSensorPMS1 && config.hasSensorPMS2) {
_temp = (measure.temp_1 + measure.temp_2) / 2.0f; _temp = (measure.getFloat(Measurements::Temperature, false, 1) +
_hum = (measure.hum_1 + measure.hum_2) / 2.0f; measure.getFloat(Measurements::Temperature, false, 2)) /
pm01 = (measure.pm01_1 + measure.pm01_2) / 2; 2.0f;
pm25 = (measure.pm25_1 + measure.pm25_2) / 2; _hum = (measure.getFloat(Measurements::Humidity, false, 1) +
pm10 = (measure.pm10_1 + measure.pm10_2) / 2; measure.getFloat(Measurements::Humidity, false, 2)) /
pm03PCount = (measure.pm03PCount_1 + measure.pm03PCount_2) / 2; 2.0f;
pm01 = (measure.get(Measurements::PM01, false, 1) + measure.get(Measurements::PM01, false, 2)) /
2.0f;
pm25 = (measure.get(Measurements::PM25, false, 1) + measure.get(Measurements::PM25, false, 2)) /
2.0f;
pm10 = (measure.get(Measurements::PM10, false, 1) + measure.get(Measurements::PM10, false, 2)) /
2.0f;
pm03PCount = (measure.get(Measurements::PM03_PC, false, 1) +
measure.get(Measurements::PM03_PC, false, 2)) /
2.0f;
} else { } else {
if (ag->isOne()) { if (ag->isOne()) {
if (config.hasSensorSHT) { if (config.hasSensorSHT) {
_temp = measure.Temperature; _temp = measure.getFloat(Measurements::Temperature, false);
_hum = measure.Humidity; _hum = measure.getFloat(Measurements::Humidity, false);
} }
if (config.hasSensorPMS1) { if (config.hasSensorPMS1) {
pm01 = measure.pm01_1; pm01 = measure.get(Measurements::PM01, false);
pm25 = measure.pm25_1; pm25 = measure.get(Measurements::PM25, false);
pm10 = measure.pm10_1; pm10 = measure.get(Measurements::PM10, false);
pm03PCount = measure.pm03PCount_1; pm03PCount = measure.get(Measurements::PM03_PC, false);
} }
} else { } else {
if (config.hasSensorPMS1) { if (config.hasSensorPMS1) {
_temp = measure.temp_1; _temp = measure.getFloat(Measurements::Temperature, false);
_hum = measure.hum_1; _hum = measure.getFloat(Measurements::Humidity, false);
pm01 = measure.pm01_1; pm01 = measure.get(Measurements::PM01, false);
pm25 = measure.pm25_1; pm25 = measure.get(Measurements::PM25, false);
pm10 = measure.pm10_1; pm10 = measure.get(Measurements::PM10, false);
pm03PCount = measure.pm03PCount_1; pm03PCount = measure.get(Measurements::PM03_PC, false);
} }
if (config.hasSensorPMS2) { if (config.hasSensorPMS2) {
_temp = measure.temp_2; _temp = measure.getFloat(Measurements::Temperature, false, 2);
_hum = measure.hum_2; _hum = measure.getFloat(Measurements::Humidity, false, 2);
pm01 = measure.pm01_2; pm01 = measure.get(Measurements::PM01, false, 2);
pm25 = measure.pm25_2; pm25 = measure.get(Measurements::PM25, false, 2);
pm10 = measure.pm10_2; pm10 = measure.get(Measurements::PM10, false, 2);
pm03PCount = measure.pm03PCount_2; pm03PCount = measure.get(Measurements::PM03_PC, false, 2);
} }
} }
} }

View File

@ -12,12 +12,13 @@
*/ */
void OledDisplay::showTempHum(bool hasStatus, char *buf, int buf_size) { void OledDisplay::showTempHum(bool hasStatus, char *buf, int buf_size) {
/** Temperature */ /** Temperature */
if (utils::isValidTemperature(value.Temperature)) { float temp = value.getFloat(Measurements::Temperature, false);
if (utils::isValidTemperature(temp)) {
float t = 0.0f; float t = 0.0f;
if (config.isTemperatureUnitInF()) { if (config.isTemperatureUnitInF()) {
t = utils::degreeC_To_F(value.Temperature); t = utils::degreeC_To_F(temp);
} else { } else {
t = value.Temperature; t = temp;
} }
if (config.isTemperatureUnitInF()) { if (config.isTemperatureUnitInF()) {
@ -43,13 +44,14 @@ void OledDisplay::showTempHum(bool hasStatus, char *buf, int buf_size) {
DISP()->drawUTF8(1, 10, buf); DISP()->drawUTF8(1, 10, buf);
/** Show humidity */ /** Show humidity */
if (utils::isValidHumidity(value.Humidity)) { int rhum = (int)value.getFloat(Measurements::Humidity, false);
snprintf(buf, buf_size, "%d%%", value.Humidity); if (utils::isValidHumidity(rhum)) {
snprintf(buf, buf_size, "%d%%", rhum);
} else { } else {
snprintf(buf, buf_size, "-%%"); snprintf(buf, buf_size, "-%%");
} }
if (value.Humidity > 99) { if (rhum > 99.0) {
DISP()->drawStr(97, 10, buf); DISP()->drawStr(97, 10, buf);
} else { } else {
DISP()->drawStr(105, 10, buf); DISP()->drawStr(105, 10, buf);
@ -290,8 +292,9 @@ void OledDisplay::showDashboard(const char *status) {
DISP()->drawUTF8(1, 27, "CO2"); DISP()->drawUTF8(1, 27, "CO2");
DISP()->setFont(u8g2_font_t0_22b_tf); DISP()->setFont(u8g2_font_t0_22b_tf);
if (utils::isValidCO2(value.CO2)) { int co2 = value.get(Measurements::CO2, false);
sprintf(strBuf, "%d", value.CO2); if (utils::isValidCO2(co2)) {
sprintf(strBuf, "%d", co2);
} else { } else {
sprintf(strBuf, "%s", "-"); sprintf(strBuf, "%s", "-");
} }
@ -310,12 +313,11 @@ void OledDisplay::showDashboard(const char *status) {
DISP()->drawStr(55, 27, "PM2.5"); DISP()->drawStr(55, 27, "PM2.5");
/** Draw PM2.5 value */ /** Draw PM2.5 value */
if (utils::isValidPm(value.pm25_1)) { int pm25 = value.get(Measurements::PM25, false);
int pm25 = value.pm25_1; if (utils::isValidPm(pm25)) {
/** Compensate PM2.5 value. */ /** Compensate PM2.5 value. */
if (config.hasSensorSHT && config.isMonitorDisplayCompensatedValues()) { if (config.hasSensorSHT && config.isMonitorDisplayCompensatedValues()) {
pm25 = ag->pms5003.compensate(pm25, value.Humidity); pm25 = ag->pms5003.compensate(pm25, value.getFloat(Measurements::Humidity, false));
logInfo("PM2.5 compensate: " + String(pm25)); logInfo("PM2.5 compensate: " + String(pm25));
} }
@ -343,17 +345,19 @@ void OledDisplay::showDashboard(const char *status) {
DISP()->drawStr(100, 27, "VOC:"); DISP()->drawStr(100, 27, "VOC:");
/** Draw tvocIndexvalue */ /** Draw tvocIndexvalue */
if (utils::isValidVOC(value.TVOC)) { int tvoc = value.get(Measurements::TVOC, false);
sprintf(strBuf, "%d", value.TVOC); if (utils::isValidVOC(tvoc)) {
sprintf(strBuf, "%d", tvoc);
} else { } else {
sprintf(strBuf, "%s", "-"); sprintf(strBuf, "%s", "-");
} }
DISP()->drawStr(100, 39, strBuf); DISP()->drawStr(100, 39, strBuf);
/** Draw NOx label */ /** Draw NOx label */
int nox = value.get(Measurements::NOx, false);
DISP()->drawStr(100, 53, "NOx:"); DISP()->drawStr(100, 53, "NOx:");
if (utils::isValidNOx(value.NOx)) { if (utils::isValidNOx(nox)) {
sprintf(strBuf, "%d", value.NOx); sprintf(strBuf, "%d", nox);
} else { } else {
sprintf(strBuf, "%s", "-"); sprintf(strBuf, "%s", "-");
} }
@ -363,8 +367,9 @@ void OledDisplay::showDashboard(const char *status) {
ag->display.clear(); ag->display.clear();
/** Set CO2 */ /** Set CO2 */
if (utils::isValidCO2(value.CO2)) { int co2 = value.get(Measurements::CO2, false);
snprintf(strBuf, sizeof(strBuf), "CO2:%d", value.CO2); if (utils::isValidCO2(co2)) {
snprintf(strBuf, sizeof(strBuf), "CO2:%d", co2);
} else { } else {
snprintf(strBuf, sizeof(strBuf), "CO2:-"); snprintf(strBuf, sizeof(strBuf), "CO2:-");
} }
@ -373,9 +378,9 @@ void OledDisplay::showDashboard(const char *status) {
ag->display.setText(strBuf); ag->display.setText(strBuf);
/** Set PM */ /** Set PM */
int pm25 = value.pm25_1; int pm25 = value.get(Measurements::PM25, false);
if (config.hasSensorSHT && config.isMonitorDisplayCompensatedValues()) { if (config.hasSensorSHT && config.isMonitorDisplayCompensatedValues()) {
pm25 = (int)ag->pms5003.compensate(pm25, value.Humidity); pm25 = (int)ag->pms5003.compensate(pm25, value.getFloat(Measurements::Humidity, false));
} }
ag->display.setCursor(0, 12); ag->display.setCursor(0, 12);
@ -387,12 +392,12 @@ void OledDisplay::showDashboard(const char *status) {
ag->display.setText(strBuf); ag->display.setText(strBuf);
/** Set temperature and humidity */ /** Set temperature and humidity */
if (utils::isValidTemperature(value.Temperature)) { float temp = value.getFloat(Measurements::Temperature, false);
if (utils::isValidTemperature(temp)) {
if (config.isTemperatureUnitInF()) { if (config.isTemperatureUnitInF()) {
snprintf(strBuf, sizeof(strBuf), "T:%0.1f F", snprintf(strBuf, sizeof(strBuf), "T:%0.1f F", utils::degreeC_To_F(temp));
utils::degreeC_To_F(value.Temperature));
} else { } else {
snprintf(strBuf, sizeof(strBuf), "T:%0.f1 C", value.Temperature); snprintf(strBuf, sizeof(strBuf), "T:%0.f1 C", temp);
} }
} else { } else {
if (config.isTemperatureUnitInF()) { if (config.isTemperatureUnitInF()) {
@ -405,8 +410,9 @@ void OledDisplay::showDashboard(const char *status) {
ag->display.setCursor(0, 24); ag->display.setCursor(0, 24);
ag->display.setText(strBuf); ag->display.setText(strBuf);
if (utils::isValidHumidity(value.Humidity)) { int rhum = (int)value.getFloat(Measurements::Humidity, false);
snprintf(strBuf, sizeof(strBuf), "H:%d %%", (int)value.Humidity); if (utils::isValidHumidity(rhum)) {
snprintf(strBuf, sizeof(strBuf), "H:%d %%", rhum);
} else { } else {
snprintf(strBuf, sizeof(strBuf), "H:- %%"); snprintf(strBuf, sizeof(strBuf), "H:- %%");
} }

View File

@ -69,7 +69,7 @@ void StateMachine::sensorhandleLeds(void) {
* *
*/ */
void StateMachine::co2handleLeds(void) { void StateMachine::co2handleLeds(void) {
int co2Value = value.CO2; int co2Value = value.get(Measurements::CO2, false);
if (co2Value <= 600) { if (co2Value <= 600) {
/** G; 1 */ /** G; 1 */
ag->ledBar.setColor(RGB_COLOR_G, ag->ledBar.getNumberOfLeds() - 1); ag->ledBar.setColor(RGB_COLOR_G, ag->ledBar.getNumberOfLeds() - 1);
@ -141,9 +141,9 @@ void StateMachine::co2handleLeds(void) {
* *
*/ */
void StateMachine::pm25handleLeds(void) { void StateMachine::pm25handleLeds(void) {
int pm25Value = value.pm25_1; int pm25Value = value.get(Measurements::PM25, false);
if (config.isMonitorDisplayCompensatedValues() && config.hasSensorSHT) { if (config.isMonitorDisplayCompensatedValues() && config.hasSensorSHT) {
pm25Value = ag->pms5003.compensate(value.pm25_1, value.Humidity); pm25Value = ag->pms5003.compensate(pm25Value, value.getFloat(Measurements::Humidity, false));
} }
if (pm25Value < 5) { if (pm25Value < 5) {