From 63f653d5cddb4fdf649d2aa824b47a6f6fafeb17 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Sun, 25 Aug 2024 20:37:38 +0700 Subject: [PATCH 1/4] fix PM2.5 compensated on display, #221 --- src/AgOledDisplay.cpp | 13 +++++++------ src/PMS/PMS5003.cpp | 2 +- src/PMS/PMS5003T.cpp | 4 ++-- src/PMS/PMS5003T.h | 2 +- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index 8b07adaa..d3393ece 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -307,11 +307,12 @@ void OledDisplay::showDashboard(const char *status) { int pm25 = value.pm25_1; if (config.hasSensorSHT) { pm25 = ag->pms5003.compensated(pm25, value.Humidity); + logInfo("PM2.5:" + String(value.pm25_1) + String("Compensated:") + String(pm25)); } DISP()->setFont(u8g2_font_t0_22b_tf); if (config.isPmStandardInUSAQI()) { - if (utils::isValidPMS(value.pm25_1)) { - sprintf(strBuf, "%d", ag->pms5003.convertPm25ToUsAqi(value.pm25_1)); + if (utils::isValidPMS(pm25)) { + sprintf(strBuf, "%d", ag->pms5003.convertPm25ToUsAqi(pm25)); } else { sprintf(strBuf, "%s", "-"); } @@ -319,8 +320,8 @@ void OledDisplay::showDashboard(const char *status) { DISP()->setFont(u8g2_font_t0_12_tf); DISP()->drawUTF8(55, 61, "AQI"); } else { - if (utils::isValidPMS(value.pm25_1)) { - sprintf(strBuf, "%d", value.pm25_1); + if (utils::isValidPMS(pm25)) { + sprintf(strBuf, "%d", pm25); } else { sprintf(strBuf, "%s", "-"); } @@ -369,8 +370,8 @@ void OledDisplay::showDashboard(const char *status) { pm25 = (int)ag->pms5003.compensated(pm25, value.Humidity); } ag->display.setCursor(0, 12); - if (utils::isValidPMS(value.pm25_1)) { - snprintf(strBuf, sizeof(strBuf), "PM2.5:%d", value.pm25_1); + if (utils::isValidPMS(pm25)) { + snprintf(strBuf, sizeof(strBuf), "PM2.5:%d", pm25); } else { snprintf(strBuf, sizeof(strBuf), "PM2.5:-"); } diff --git a/src/PMS/PMS5003.cpp b/src/PMS/PMS5003.cpp index 8a495500..48c6b071 100644 --- a/src/PMS/PMS5003.cpp +++ b/src/PMS/PMS5003.cpp @@ -126,7 +126,7 @@ int PMS5003::convertPm25ToUsAqi(int pm25) { return pms.pm25ToAQI(pm25); } * * @param pm25 PM2.5 raw value * @param humidity Humidity value - * @return float + * @return int */ int PMS5003::compensated(int pm25, float humidity) { return pms.compensated(pm25, humidity); diff --git a/src/PMS/PMS5003T.cpp b/src/PMS/PMS5003T.cpp index 97cc9c79..b75f4546 100644 --- a/src/PMS/PMS5003T.cpp +++ b/src/PMS/PMS5003T.cpp @@ -169,9 +169,9 @@ float PMS5003T::getRelativeHumidity(void) { * * @param pm25 PM2.5 raw value * @param humidity Humidity value - * @return float + * @return int */ -float PMS5003T::compensated(int pm25, float humidity) { +int PMS5003T::compensated(int pm25, float humidity) { return pms.compensated(pm25, humidity); } diff --git a/src/PMS/PMS5003T.h b/src/PMS/PMS5003T.h index 3d2d567a..f5010fa4 100644 --- a/src/PMS/PMS5003T.h +++ b/src/PMS/PMS5003T.h @@ -29,7 +29,7 @@ class PMS5003T: public PMS5003TBase { int convertPm25ToUsAqi(int pm25); float getTemperature(void); float getRelativeHumidity(void); - float compensated(int pm25, float humidity); + int compensated(int pm25, float humidity); private: bool _isBegin = false; From 7a988ea6c17936dc8a8295ae33ecd8d4682a9f68 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Mon, 26 Aug 2024 11:56:01 +0700 Subject: [PATCH 2/4] rename `compensated` to `compensate` --- src/AgOledDisplay.cpp | 4 ++-- src/AgValue.cpp | 18 +++++++++--------- src/PMS/PMS.cpp | 2 +- src/PMS/PMS.h | 2 +- src/PMS/PMS5003.cpp | 4 ++-- src/PMS/PMS5003.h | 2 +- src/PMS/PMS5003T.cpp | 4 ++-- src/PMS/PMS5003T.h | 2 +- 8 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index d3393ece..f7176281 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -306,7 +306,7 @@ void OledDisplay::showDashboard(const char *status) { /** Draw PM2.5 value */ int pm25 = value.pm25_1; if (config.hasSensorSHT) { - pm25 = ag->pms5003.compensated(pm25, value.Humidity); + pm25 = ag->pms5003.compensate(pm25, value.Humidity); logInfo("PM2.5:" + String(value.pm25_1) + String("Compensated:") + String(pm25)); } DISP()->setFont(u8g2_font_t0_22b_tf); @@ -367,7 +367,7 @@ void OledDisplay::showDashboard(const char *status) { /** Set PM */ int pm25 = value.pm25_1; if(config.hasSensorSHT) { - pm25 = (int)ag->pms5003.compensated(pm25, value.Humidity); + pm25 = (int)ag->pms5003.compensate(pm25, value.Humidity); } ag->display.setCursor(0, 12); if (utils::isValidPMS(pm25)) { diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 015a7887..05615bdb 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -51,7 +51,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } if (config->hasSensorSHT && config->hasSensorPMS1) { - int pm25 = ag->pms5003.compensated(this->pm25_1, this->Humidity); + int pm25 = ag->pms5003.compensate(this->pm25_1, this->Humidity); if (pm25 >= 0) { root["pm02Compensated"] = pm25; } @@ -92,8 +92,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } - int pm25 = (ag->pms5003t_1.compensated(this->pm25_1, this->temp_1) + - ag->pms5003t_2.compensated(this->pm25_2, this->temp_2)) / + int pm25 = (ag->pms5003t_1.compensate(this->pm25_1, this->temp_1) + + ag->pms5003t_2.compensate(this->pm25_2, this->temp_2)) / 2; root["pm02Compensated"] = pm25; } @@ -133,7 +133,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["pm02Compensated"] = ag->pms5003t_1.compensated(this->pm25_1, this->temp_1); + root["pm02Compensated"] = ag->pms5003t_1.compensate(this->pm25_1, this->temp_1); } if (config->hasSensorPMS2) { if(utils::isValidPMS(this->pm01_2)) { @@ -170,7 +170,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["pm02Compensated"] = ag->pms5003t_2.compensated(this->pm25_2, this->temp_2); + root["pm02Compensated"] = ag->pms5003t_2.compensate(this->pm25_2, this->temp_2); } } else { if (fwMode == FW_MODE_O_1P) { @@ -207,7 +207,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["pm02Compensated"] = ag->pms5003t_1.compensated(this->pm25_1, this->temp_1); + root["pm02Compensated"] = ag->pms5003t_1.compensate(this->pm25_1, this->temp_1); } else if (config->hasSensorPMS2) { if(utils::isValidPMS(this->pm01_2)) { root["pm01"] = this->pm01_2; @@ -241,7 +241,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["pm02Compensated"] = ag->pms5003t_1.compensated(this->pm25_1, this->temp_1); + root["pm02Compensated"] = ag->pms5003t_1.compensate(this->pm25_1, this->temp_1); } } else { float val; @@ -278,7 +278,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["channels"]["1"]["pm02Compensated"] = ag->pms5003t_1.compensated(this->pm25_1, this->temp_1); + root["channels"]["1"]["pm02Compensated"] = ag->pms5003t_1.compensate(this->pm25_1, this->temp_1); } if (config->hasSensorPMS2) { float val; @@ -314,7 +314,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } } - root["channels"]["2"]["pm02Compensated"] = ag->pms5003t_2.compensated(this->pm25_2, this->temp_2); + root["channels"]["2"]["pm02Compensated"] = ag->pms5003t_2.compensate(this->pm25_2, this->temp_2); } } } diff --git a/src/PMS/PMS.cpp b/src/PMS/PMS.cpp index 50b3dac6..0fb7551f 100644 --- a/src/PMS/PMS.cpp +++ b/src/PMS/PMS.cpp @@ -277,7 +277,7 @@ int PMSBase::pm25ToAQI(int pm02) { * @param humidity Humidity value (%) * @return int */ -int PMSBase::compensated(int pm25, float humidity) { +int PMSBase::compensate(int pm25, float humidity) { float value; if (humidity < 0) { humidity = 0; diff --git a/src/PMS/PMS.h b/src/PMS/PMS.h index e89693f1..1d6c9a2c 100644 --- a/src/PMS/PMS.h +++ b/src/PMS/PMS.h @@ -28,7 +28,7 @@ class PMSBase { uint16_t getHum(void); int pm25ToAQI(int pm02); - int compensated(int pm25, float humidity); + int compensate(int pm25, float humidity); private: Stream *stream; diff --git a/src/PMS/PMS5003.cpp b/src/PMS/PMS5003.cpp index 48c6b071..46a6b8b5 100644 --- a/src/PMS/PMS5003.cpp +++ b/src/PMS/PMS5003.cpp @@ -128,8 +128,8 @@ int PMS5003::convertPm25ToUsAqi(int pm25) { return pms.pm25ToAQI(pm25); } * @param humidity Humidity value * @return int */ -int PMS5003::compensated(int pm25, float humidity) { - return pms.compensated(pm25, humidity); +int PMS5003::compensate(int pm25, float humidity) { + return pms.compensate(pm25, humidity); } /** diff --git a/src/PMS/PMS5003.h b/src/PMS/PMS5003.h index aa6fcd91..c99f4d82 100644 --- a/src/PMS/PMS5003.h +++ b/src/PMS/PMS5003.h @@ -24,7 +24,7 @@ class PMS5003 { int getPm10Ae(void); int getPm03ParticleCount(void); int convertPm25ToUsAqi(int pm25); - int compensated(int pm25, float humidity); + int compensate(int pm25, float humidity); private: bool _isBegin = false; diff --git a/src/PMS/PMS5003T.cpp b/src/PMS/PMS5003T.cpp index b75f4546..12b3c293 100644 --- a/src/PMS/PMS5003T.cpp +++ b/src/PMS/PMS5003T.cpp @@ -171,8 +171,8 @@ float PMS5003T::getRelativeHumidity(void) { * @param humidity Humidity value * @return int */ -int PMS5003T::compensated(int pm25, float humidity) { - return pms.compensated(pm25, humidity); +int PMS5003T::compensate(int pm25, float humidity) { + return pms.compensate(pm25, humidity); } /** diff --git a/src/PMS/PMS5003T.h b/src/PMS/PMS5003T.h index f5010fa4..057144a7 100644 --- a/src/PMS/PMS5003T.h +++ b/src/PMS/PMS5003T.h @@ -29,7 +29,7 @@ class PMS5003T: public PMS5003TBase { int convertPm25ToUsAqi(int pm25); float getTemperature(void); float getRelativeHumidity(void); - int compensated(int pm25, float humidity); + int compensate(int pm25, float humidity); private: bool _isBegin = false; From 753f22923caa97cf0630c5a8da1ec6c6f44cb47e Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 30 Aug 2024 19:07:31 +0700 Subject: [PATCH 3/4] rename `isValidPMS` to `isValidPm` --- examples/BASIC/OpenMetrics.cpp | 8 +-- examples/DiyProIndoorV3_3/OpenMetrics.cpp | 8 +-- examples/DiyProIndoorV4_2/OpenMetrics.cpp | 8 +-- examples/OneOpenAir/OpenMetrics.cpp | 8 +-- src/AgOledDisplay.cpp | 6 +-- src/AgValue.cpp | 64 +++++++++++------------ src/Main/utils.cpp | 4 +- src/Main/utils.h | 4 +- 8 files changed, 55 insertions(+), 55 deletions(-) diff --git a/examples/BASIC/OpenMetrics.cpp b/examples/BASIC/OpenMetrics.cpp index 5737a10b..cffd2c6f 100644 --- a/examples/BASIC/OpenMetrics.cpp +++ b/examples/BASIC/OpenMetrics.cpp @@ -89,28 +89,28 @@ String OpenMetrics::getPayload(void) { } if (config.hasSensorPMS1) { - if (utils::isValidPMS(pm01)) { + if (utils::isValidPm(pm01)) { add_metric("pm1", "PM1.0 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm01)); } - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { add_metric("pm2d5", "PM2.5 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm25)); } - if (utils::isValidPMS(pm10)) { + if (utils::isValidPm(pm10)) { add_metric("pm10", "PM10 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm10)); } - if (utils::isValidPMS03Count(pm03PCount)) { + if (utils::isValidPm03Count(pm03PCount)) { add_metric("pm0d3", "PM0.3 concentration as measured by the AirGradient PMS " "sensor, in number of particules per 100 milliliters", diff --git a/examples/DiyProIndoorV3_3/OpenMetrics.cpp b/examples/DiyProIndoorV3_3/OpenMetrics.cpp index 5737a10b..cffd2c6f 100644 --- a/examples/DiyProIndoorV3_3/OpenMetrics.cpp +++ b/examples/DiyProIndoorV3_3/OpenMetrics.cpp @@ -89,28 +89,28 @@ String OpenMetrics::getPayload(void) { } if (config.hasSensorPMS1) { - if (utils::isValidPMS(pm01)) { + if (utils::isValidPm(pm01)) { add_metric("pm1", "PM1.0 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm01)); } - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { add_metric("pm2d5", "PM2.5 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm25)); } - if (utils::isValidPMS(pm10)) { + if (utils::isValidPm(pm10)) { add_metric("pm10", "PM10 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm10)); } - if (utils::isValidPMS03Count(pm03PCount)) { + if (utils::isValidPm03Count(pm03PCount)) { add_metric("pm0d3", "PM0.3 concentration as measured by the AirGradient PMS " "sensor, in number of particules per 100 milliliters", diff --git a/examples/DiyProIndoorV4_2/OpenMetrics.cpp b/examples/DiyProIndoorV4_2/OpenMetrics.cpp index 5737a10b..cffd2c6f 100644 --- a/examples/DiyProIndoorV4_2/OpenMetrics.cpp +++ b/examples/DiyProIndoorV4_2/OpenMetrics.cpp @@ -89,28 +89,28 @@ String OpenMetrics::getPayload(void) { } if (config.hasSensorPMS1) { - if (utils::isValidPMS(pm01)) { + if (utils::isValidPm(pm01)) { add_metric("pm1", "PM1.0 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm01)); } - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { add_metric("pm2d5", "PM2.5 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm25)); } - if (utils::isValidPMS(pm10)) { + if (utils::isValidPm(pm10)) { add_metric("pm10", "PM10 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm10)); } - if (utils::isValidPMS03Count(pm03PCount)) { + if (utils::isValidPm03Count(pm03PCount)) { add_metric("pm0d3", "PM0.3 concentration as measured by the AirGradient PMS " "sensor, in number of particules per 100 milliliters", diff --git a/examples/OneOpenAir/OpenMetrics.cpp b/examples/OneOpenAir/OpenMetrics.cpp index ada98713..9abefd86 100644 --- a/examples/OneOpenAir/OpenMetrics.cpp +++ b/examples/OneOpenAir/OpenMetrics.cpp @@ -123,28 +123,28 @@ String OpenMetrics::getPayload(void) { } if (config.hasSensorPMS1 || config.hasSensorPMS2) { - if (utils::isValidPMS(pm01)) { + if (utils::isValidPm(pm01)) { add_metric("pm1", "PM1.0 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm01)); } - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { add_metric("pm2d5", "PM2.5 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm25)); } - if (utils::isValidPMS(pm10)) { + if (utils::isValidPm(pm10)) { add_metric("pm10", "PM10 concentration as measured by the AirGradient PMS " "sensor, in micrograms per cubic meter", "gauge", "ugm3"); add_metric_point("", String(pm10)); } - if (utils::isValidPMS03Count(pm03PCount)) { + if (utils::isValidPm03Count(pm03PCount)) { add_metric("pm0d3", "PM0.3 concentration as measured by the AirGradient PMS " "sensor, in number of particules per 100 milliliters", diff --git a/src/AgOledDisplay.cpp b/src/AgOledDisplay.cpp index f7176281..109be27f 100644 --- a/src/AgOledDisplay.cpp +++ b/src/AgOledDisplay.cpp @@ -311,7 +311,7 @@ void OledDisplay::showDashboard(const char *status) { } DISP()->setFont(u8g2_font_t0_22b_tf); if (config.isPmStandardInUSAQI()) { - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { sprintf(strBuf, "%d", ag->pms5003.convertPm25ToUsAqi(pm25)); } else { sprintf(strBuf, "%s", "-"); @@ -320,7 +320,7 @@ void OledDisplay::showDashboard(const char *status) { DISP()->setFont(u8g2_font_t0_12_tf); DISP()->drawUTF8(55, 61, "AQI"); } else { - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { sprintf(strBuf, "%d", pm25); } else { sprintf(strBuf, "%s", "-"); @@ -370,7 +370,7 @@ void OledDisplay::showDashboard(const char *status) { pm25 = (int)ag->pms5003.compensate(pm25, value.Humidity); } ag->display.setCursor(0, 12); - if (utils::isValidPMS(pm25)) { + if (utils::isValidPm(pm25)) { snprintf(strBuf, sizeof(strBuf), "PM2.5:%d", pm25); } else { snprintf(strBuf, sizeof(strBuf), "PM2.5:-"); diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 3628fbdc..70e339bc 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -54,16 +54,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (ag->isOne() || (ag->isPro4_2()) || ag->isPro3_3() || ag->isBasic()) { if (config->hasSensorPMS1) { - if (utils::isValidPMS(this->pm01_1)) { + if (utils::isValidPm(this->pm01_1)) { root["pm01"] = this->pm01_1; } - if (utils::isValidPMS(this->pm25_1)) { + if (utils::isValidPm(this->pm25_1)) { root["pm02"] = this->pm25_1; } - if (utils::isValidPMS(this->pm10_1)) { + if (utils::isValidPm(this->pm10_1)) { root["pm10"] = this->pm10_1; } - if (utils::isValidPMS03Count(this->pm03PCount_1)) { + if (utils::isValidPm03Count(this->pm03PCount_1)) { root["pm003Count"] = this->pm03PCount_1; } if (!localServer) { @@ -97,16 +97,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } else { if (config->hasSensorPMS1 && config->hasSensorPMS2) { - if (utils::isValidPMS(this->pm01_1) && utils::isValidPMS(this->pm01_2)) { + if (utils::isValidPm(this->pm01_1) && utils::isValidPm(this->pm01_2)) { root["pm01"] = ag->round2((this->pm01_1 + this->pm01_2) / 2.0f); } - if (utils::isValidPMS(this->pm25_1) && utils::isValidPMS(this->pm25_2)) { + if (utils::isValidPm(this->pm25_1) && utils::isValidPm(this->pm25_2)) { root["pm02"] = ag->round2((this->pm25_1 + this->pm25_2) / 2.0f); } - if (utils::isValidPMS(this->pm10_1) && utils::isValidPMS(this->pm10_2)) { + if (utils::isValidPm(this->pm10_1) && utils::isValidPm(this->pm10_2)) { root["pm10"] = ag->round2((this->pm10_1 + this->pm10_2) / 2.0f); } - if (utils::isValidPMS(this->pm03PCount_1) && utils::isValidPMS(this->pm03PCount_2)) { + if (utils::isValidPm(this->pm03PCount_1) && utils::isValidPm(this->pm03PCount_2)) { root["pm003Count"] = ag->round2((this->pm03PCount_1 + this->pm03PCount_2) / 2.0f); } @@ -139,16 +139,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (fwMode == FW_MODE_O_1PS || fwMode == FW_MODE_O_1PST) { float val; if (config->hasSensorPMS1) { - if (utils::isValidPMS(this->pm01_1)) { + if (utils::isValidPm(this->pm01_1)) { root["pm01"] = this->pm01_1; } - if (utils::isValidPMS(this->pm25_1)) { + if (utils::isValidPm(this->pm25_1)) { root["pm02"] = this->pm25_1; } - if (utils::isValidPMS(this->pm10_1)) { + if (utils::isValidPm(this->pm10_1)) { root["pm10"] = this->pm10_1; } - if (utils::isValidPMS03Count(this->pm03PCount_1)) { + if (utils::isValidPm03Count(this->pm03PCount_1)) { root["pm003Count"] = this->pm03PCount_1; } if (utils::isValidTemperature(this->temp_1)) { @@ -178,16 +178,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } } if (config->hasSensorPMS2) { - if(utils::isValidPMS(this->pm01_2)) { + if(utils::isValidPm(this->pm01_2)) { root["pm01"] = this->pm01_2; } - if(utils::isValidPMS(this->pm25_2)) { + if(utils::isValidPm(this->pm25_2)) { root["pm02"] = this->pm25_2; } - if(utils::isValidPMS(this->pm10_2)) { + if(utils::isValidPm(this->pm10_2)) { root["pm10"] = this->pm10_2; } - if(utils::isValidPMS03Count(this->pm03PCount_2)) { + if(utils::isValidPm03Count(this->pm03PCount_2)) { root["pm003Count"] = this->pm03PCount_2; } @@ -222,16 +222,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (fwMode == FW_MODE_O_1P) { float val; if (config->hasSensorPMS1) { - if (utils::isValidPMS(this->pm01_1)) { + if (utils::isValidPm(this->pm01_1)) { root["pm01"] = this->pm01_1; } - if (utils::isValidPMS(this->pm25_1)) { + if (utils::isValidPm(this->pm25_1)) { root["pm02"] = this->pm25_1; } - if (utils::isValidPMS(this->pm10_1)) { + if (utils::isValidPm(this->pm10_1)) { root["pm10"] = this->pm10_1; } - if (utils::isValidPMS03Count(this->pm03PCount_1)) { + if (utils::isValidPm03Count(this->pm03PCount_1)) { root["pm003Count"] = this->pm03PCount_1; } if (utils::isValidTemperature(this->temp_1)) { @@ -259,16 +259,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, pms5003TFirmwareVersion(ag->pms5003t_1.getFirmwareVersion()); } } else if (config->hasSensorPMS2) { - if(utils::isValidPMS(this->pm01_2)) { + if(utils::isValidPm(this->pm01_2)) { root["pm01"] = this->pm01_2; } - if(utils::isValidPMS(this->pm25_2)) { + if(utils::isValidPm(this->pm25_2)) { root["pm02"] = this->pm25_2; } - if(utils::isValidPMS(this->pm10_2)) { + if(utils::isValidPm(this->pm10_2)) { root["pm10"] = this->pm10_2; } - if(utils::isValidPMS03Count(this->pm03PCount_2)) { + if(utils::isValidPm03Count(this->pm03PCount_2)) { root["pm003Count"] = this->pm03PCount_2; } if (utils::isValidTemperature(this->temp_2)) { @@ -300,16 +300,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } else { float val; if (config->hasSensorPMS1) { - if(utils::isValidPMS(this->pm01_1)) { + if(utils::isValidPm(this->pm01_1)) { root["channels"]["1"]["pm01"] = this->pm01_1; } - if(utils::isValidPMS(this->pm25_1)) { + if(utils::isValidPm(this->pm25_1)) { root["channels"]["1"]["pm02"] = this->pm25_1; } - if(utils::isValidPMS(this->pm10_1)) { + if(utils::isValidPm(this->pm10_1)) { root["channels"]["1"]["pm10"] = this->pm10_1; } - if (utils::isValidPMS03Count(this->pm03PCount_1)) { + if (utils::isValidPm03Count(this->pm03PCount_1)) { root["channels"]["1"]["pm003Count"] = this->pm03PCount_1; } if(utils::isValidTemperature(this->temp_1)) { @@ -342,16 +342,16 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, } if (config->hasSensorPMS2) { float val; - if (utils::isValidPMS(this->pm01_2)) { + if (utils::isValidPm(this->pm01_2)) { root["channels"]["2"]["pm01"] = this->pm01_2; } - if (utils::isValidPMS(this->pm25_2)) { + if (utils::isValidPm(this->pm25_2)) { root["channels"]["2"]["pm02"] = this->pm25_2; } - if (utils::isValidPMS(this->pm10_2)) { + if (utils::isValidPm(this->pm10_2)) { root["channels"]["2"]["pm10"] = this->pm10_2; } - if (utils::isValidPMS03Count(this->pm03PCount_2)) { + if (utils::isValidPm03Count(this->pm03PCount_2)) { root["channels"]["2"]["pm003Count"] = this->pm03PCount_2; } if (utils::isValidTemperature(this->temp_2)) { diff --git a/src/Main/utils.cpp b/src/Main/utils.cpp index 6a4d0e14..42b06a54 100644 --- a/src/Main/utils.cpp +++ b/src/Main/utils.cpp @@ -48,14 +48,14 @@ bool utils::isValidCO2(int16_t value) { return false; } -bool utils::isValidPMS(int value) { +bool utils::isValidPm(int value) { if ((value >= VALID_PMS_MIN) && (value <= VALID_PMS_MAX)) { return true; } return false; } -bool utils::isValidPMS03Count(int value) { +bool utils::isValidPm03Count(int value) { if (value >= VALID_PMS03COUNT_MIN) { return true; } diff --git a/src/Main/utils.h b/src/Main/utils.h index a1efa932..b51ac985 100644 --- a/src/Main/utils.h +++ b/src/Main/utils.h @@ -14,8 +14,8 @@ class utils static bool isValidTemperature(float value); static bool isValidHumidity(float value); static bool isValidCO2(int16_t value); - static bool isValidPMS(int value); - static bool isValidPMS03Count(int value); + static bool isValidPm(int value); + static bool isValidPm03Count(int value); static bool isValidNOx(int value); static bool isValidVOC(int value); static float getInvalidTemperature(void); From 2e9ff0d7ddd86e846297aea03f71a451664f7fce Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Fri, 30 Aug 2024 19:21:54 +0700 Subject: [PATCH 4/4] add link to formula document --- src/PMS/PMS5003.cpp | 2 ++ src/PMS/PMS5003T.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/PMS/PMS5003.cpp b/src/PMS/PMS5003.cpp index 47346592..b6326279 100644 --- a/src/PMS/PMS5003.cpp +++ b/src/PMS/PMS5003.cpp @@ -124,6 +124,8 @@ int PMS5003::convertPm25ToUsAqi(int pm25) { return pms.pm25ToAQI(pm25); } /** * @brief Correct PM2.5 * + * Reference formula: https://www.airgradient.com/documentation/correction-algorithms/ + * * @param pm25 PM2.5 raw value * @param humidity Humidity value * @return int diff --git a/src/PMS/PMS5003T.cpp b/src/PMS/PMS5003T.cpp index f659098e..b5e65f3c 100644 --- a/src/PMS/PMS5003T.cpp +++ b/src/PMS/PMS5003T.cpp @@ -167,6 +167,8 @@ float PMS5003T::getRelativeHumidity(void) { /** * @brief Correct PM2.5 * + * Reference formula: https://www.airgradient.com/documentation/correction-algorithms/ + * * @param pm25 PM2.5 raw value * @param humidity Humidity value * @return int