diff --git a/examples/OneOpenAir/LocalServer.cpp b/examples/OneOpenAir/LocalServer.cpp index b9989a1..e0b5c98 100644 --- a/examples/OneOpenAir/LocalServer.cpp +++ b/examples/OneOpenAir/LocalServer.cpp @@ -64,7 +64,7 @@ void LocalServer::_GET_metrics(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); } diff --git a/examples/OneOpenAir/OpenMetrics.cpp b/examples/OneOpenAir/OpenMetrics.cpp index a7dfe70..b1bfcc5 100644 --- a/examples/OneOpenAir/OpenMetrics.cpp +++ b/examples/OneOpenAir/OpenMetrics.cpp @@ -74,41 +74,50 @@ String OpenMetrics::getPayload(void) { int atmpCompensated = utils::getInvalidTemperature(); int ahumCompensated = utils::getInvalidHumidity(); if (config.hasSensorPMS1 && config.hasSensorPMS2) { - _temp = (measure.temp_1 + measure.temp_2) / 2.0f; - _hum = (measure.hum_1 + measure.hum_2) / 2.0f; - pm01 = (measure.pm01_1 + measure.pm01_2) / 2; - pm25 = (measure.pm25_1 + measure.pm25_2) / 2; - pm10 = (measure.pm10_1 + measure.pm10_2) / 2; - pm03PCount = (measure.pm03PCount_1 + measure.pm03PCount_2) / 2; + _temp = (measure.getFloat(Measurements::Temperature, false, 1) + + measure.getFloat(Measurements::Temperature, false, 2)) / + 2.0f; + _hum = (measure.getFloat(Measurements::Humidity, false, 1) + + measure.getFloat(Measurements::Humidity, false, 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 { if (ag->isOne()) { if (config.hasSensorSHT) { - _temp = measure.Temperature; - _hum = measure.Humidity; + _temp = measure.getFloat(Measurements::Temperature, false); + _hum = measure.getFloat(Measurements::Humidity, false); } if (config.hasSensorPMS1) { - pm01 = measure.pm01_1; - pm25 = measure.pm25_1; - pm10 = measure.pm10_1; - pm03PCount = measure.pm03PCount_1; + pm01 = measure.get(Measurements::PM01, false); + pm25 = measure.get(Measurements::PM25, false); + pm10 = measure.get(Measurements::PM10, false); + pm03PCount = measure.get(Measurements::PM03_PC, false); } } else { if (config.hasSensorPMS1) { - _temp = measure.temp_1; - _hum = measure.hum_1; - pm01 = measure.pm01_1; - pm25 = measure.pm25_1; - pm10 = measure.pm10_1; - pm03PCount = measure.pm03PCount_1; + _temp = measure.getFloat(Measurements::Temperature, false); + _hum = measure.getFloat(Measurements::Humidity, false); + pm01 = measure.get(Measurements::PM01, false); + pm25 = measure.get(Measurements::PM25, false); + pm10 = measure.get(Measurements::PM10, false); + pm03PCount = measure.get(Measurements::PM03_PC, false); } if (config.hasSensorPMS2) { - _temp = measure.temp_2; - _hum = measure.hum_2; - pm01 = measure.pm01_2; - pm25 = measure.pm25_2; - pm10 = measure.pm10_2; - pm03PCount = measure.pm03PCount_2; + _temp = measure.getFloat(Measurements::Temperature, false, 2); + _hum = measure.getFloat(Measurements::Humidity, false, 2); + pm01 = measure.get(Measurements::PM01, false, 2); + pm25 = measure.get(Measurements::PM25, false, 2); + pm10 = measure.get(Measurements::PM10, false, 2); + pm03PCount = measure.get(Measurements::PM03_PC, false, 2); } } } diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index 050782a..1228a66 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -12,12 +12,13 @@ */ void OledDisplay::showTempHum(bool hasStatus, char *buf, int buf_size) { /** Temperature */ - if (utils::isValidTemperature(value.Temperature)) { + float temp = value.getFloat(Measurements::Temperature, false); + if (utils::isValidTemperature(temp)) { float t = 0.0f; if (config.isTemperatureUnitInF()) { - t = utils::degreeC_To_F(value.Temperature); + t = utils::degreeC_To_F(temp); } else { - t = value.Temperature; + t = temp; } if (config.isTemperatureUnitInF()) { @@ -43,13 +44,14 @@ void OledDisplay::showTempHum(bool hasStatus, char *buf, int buf_size) { DISP()->drawUTF8(1, 10, buf); /** Show humidity */ - if (utils::isValidHumidity(value.Humidity)) { - snprintf(buf, buf_size, "%d%%", value.Humidity); + int rhum = (int)value.getFloat(Measurements::Humidity, false); + if (utils::isValidHumidity(rhum)) { + snprintf(buf, buf_size, "%d%%", rhum); } else { snprintf(buf, buf_size, "-%%"); } - if (value.Humidity > 99) { + if (rhum > 99.0) { DISP()->drawStr(97, 10, buf); } else { DISP()->drawStr(105, 10, buf); @@ -290,8 +292,9 @@ void OledDisplay::showDashboard(const char *status) { DISP()->drawUTF8(1, 27, "CO2"); DISP()->setFont(u8g2_font_t0_22b_tf); - if (utils::isValidCO2(value.CO2)) { - sprintf(strBuf, "%d", value.CO2); + int co2 = value.get(Measurements::CO2, false); + if (utils::isValidCO2(co2)) { + sprintf(strBuf, "%d", co2); } else { sprintf(strBuf, "%s", "-"); } @@ -310,12 +313,11 @@ void OledDisplay::showDashboard(const char *status) { DISP()->drawStr(55, 27, "PM2.5"); /** Draw PM2.5 value */ - if (utils::isValidPm(value.pm25_1)) { - int pm25 = value.pm25_1; - + int pm25 = value.get(Measurements::PM25, false); + if (utils::isValidPm(pm25)) { /** Compensate PM2.5 value. */ 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)); } @@ -343,17 +345,19 @@ void OledDisplay::showDashboard(const char *status) { DISP()->drawStr(100, 27, "VOC:"); /** Draw tvocIndexvalue */ - if (utils::isValidVOC(value.TVOC)) { - sprintf(strBuf, "%d", value.TVOC); + int tvoc = value.get(Measurements::TVOC, false); + if (utils::isValidVOC(tvoc)) { + sprintf(strBuf, "%d", tvoc); } else { sprintf(strBuf, "%s", "-"); } DISP()->drawStr(100, 39, strBuf); /** Draw NOx label */ + int nox = value.get(Measurements::NOx, false); DISP()->drawStr(100, 53, "NOx:"); - if (utils::isValidNOx(value.NOx)) { - sprintf(strBuf, "%d", value.NOx); + if (utils::isValidNOx(nox)) { + sprintf(strBuf, "%d", nox); } else { sprintf(strBuf, "%s", "-"); } @@ -363,8 +367,9 @@ void OledDisplay::showDashboard(const char *status) { ag->display.clear(); /** Set CO2 */ - if (utils::isValidCO2(value.CO2)) { - snprintf(strBuf, sizeof(strBuf), "CO2:%d", value.CO2); + int co2 = value.get(Measurements::CO2, false); + if (utils::isValidCO2(co2)) { + snprintf(strBuf, sizeof(strBuf), "CO2:%d", co2); } else { snprintf(strBuf, sizeof(strBuf), "CO2:-"); } @@ -373,9 +378,9 @@ void OledDisplay::showDashboard(const char *status) { ag->display.setText(strBuf); /** Set PM */ - int pm25 = value.pm25_1; + int pm25 = value.get(Measurements::PM25, false); 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); @@ -387,12 +392,12 @@ void OledDisplay::showDashboard(const char *status) { ag->display.setText(strBuf); /** Set temperature and humidity */ - if (utils::isValidTemperature(value.Temperature)) { + float temp = value.getFloat(Measurements::Temperature, false); + if (utils::isValidTemperature(temp)) { if (config.isTemperatureUnitInF()) { - snprintf(strBuf, sizeof(strBuf), "T:%0.1f F", - utils::degreeC_To_F(value.Temperature)); + snprintf(strBuf, sizeof(strBuf), "T:%0.1f F", utils::degreeC_To_F(temp)); } else { - snprintf(strBuf, sizeof(strBuf), "T:%0.f1 C", value.Temperature); + snprintf(strBuf, sizeof(strBuf), "T:%0.f1 C", temp); } } else { if (config.isTemperatureUnitInF()) { @@ -405,8 +410,9 @@ void OledDisplay::showDashboard(const char *status) { ag->display.setCursor(0, 24); ag->display.setText(strBuf); - if (utils::isValidHumidity(value.Humidity)) { - snprintf(strBuf, sizeof(strBuf), "H:%d %%", (int)value.Humidity); + int rhum = (int)value.getFloat(Measurements::Humidity, false); + if (utils::isValidHumidity(rhum)) { + snprintf(strBuf, sizeof(strBuf), "H:%d %%", rhum); } else { snprintf(strBuf, sizeof(strBuf), "H:- %%"); } diff --git a/src/AgStateMachine.cpp b/src/AgStateMachine.cpp index 85f87d5..85dd76b 100644 --- a/src/AgStateMachine.cpp +++ b/src/AgStateMachine.cpp @@ -69,7 +69,7 @@ void StateMachine::sensorhandleLeds(void) { * */ void StateMachine::co2handleLeds(void) { - int co2Value = value.CO2; + int co2Value = value.get(Measurements::CO2, false); if (co2Value <= 600) { /** G; 1 */ ag->ledBar.setColor(RGB_COLOR_G, ag->ledBar.getNumberOfLeds() - 1); @@ -141,9 +141,9 @@ void StateMachine::co2handleLeds(void) { * */ void StateMachine::pm25handleLeds(void) { - int pm25Value = value.pm25_1; + int pm25Value = value.get(Measurements::PM25, false); 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) {