From b049a23657cd12dbada9a2c6862a2e0e29cfeac5 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Sun, 25 Aug 2024 20:21:26 +0700 Subject: [PATCH 1/5] Restart device after PMS sensor read failed 10 times --- examples/BASIC/BASIC.ino | 14 ++-- .../DiyProIndoorV3_3/DiyProIndoorV3_3.ino | 14 ++-- .../DiyProIndoorV4_2/DiyProIndoorV4_2.ino | 12 ++- examples/OneOpenAir/OneOpenAir.ino | 73 ++++++++++++++----- src/PMS/PMS.cpp | 31 ++++++++ src/PMS/PMS.h | 8 ++ src/PMS/PMS5003.cpp | 30 ++++++++ src/PMS/PMS5003.h | 4 + src/PMS/PMS5003T.cpp | 29 ++++++++ src/PMS/PMS5003T.h | 4 + 10 files changed, 186 insertions(+), 33 deletions(-) diff --git a/examples/BASIC/BASIC.ino b/examples/BASIC/BASIC.ino index 4099b71..4323b13 100644 --- a/examples/BASIC/BASIC.ino +++ b/examples/BASIC/BASIC.ino @@ -68,7 +68,6 @@ static LocalServer localServer(Serial, openMetrics, measurements, configuration, wifiConnector); static MqttClient mqttClient(Serial); -static int pmFailCount = 0; static int getCO2FailCount = 0; static AgFirmwareMode fwMode = FW_MODE_I_BASIC_40PS; @@ -514,16 +513,21 @@ static void updatePm(void) { Serial.printf("PM2.5 ug/m3: %d\r\n", measurements.pm25_1); Serial.printf("PM10 ug/m3: %d\r\n", measurements.pm10_1); Serial.printf("PM0.3 Count: %d\r\n", measurements.pm03PCount_1); - pmFailCount = 0; + ag.pms5003.resetFailCount(); } else { - pmFailCount++; - Serial.printf("PMS read failed: %d\r\n", pmFailCount); - if (pmFailCount >= 3) { + ag.pms5003.updateFailCount(); + Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); + if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { measurements.pm01_1 = utils::getInvalidPMS(); measurements.pm25_1 = utils::getInvalidPMS(); measurements.pm10_1 = utils::getInvalidPMS(); measurements.pm03PCount_1 = utils::getInvalidPMS(); } + + if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { + Serial.printf("Restarting..."); + ESP.restart(); + } } } diff --git a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino index df059b7..2f4d663 100644 --- a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino +++ b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino @@ -68,7 +68,6 @@ static LocalServer localServer(Serial, openMetrics, measurements, configuration, wifiConnector); static MqttClient mqttClient(Serial); -static int pmFailCount = 0; static int getCO2FailCount = 0; static AgFirmwareMode fwMode = FW_MODE_I_33PS; @@ -566,16 +565,21 @@ static void updatePm(void) { Serial.printf("PM2.5 ug/m3: %d\r\n", measurements.pm25_1); Serial.printf("PM10 ug/m3: %d\r\n", measurements.pm10_1); Serial.printf("PM0.3 Count: %d\r\n", measurements.pm03PCount_1); - pmFailCount = 0; + ag.pms5003.resetFailCount(); } else { - pmFailCount++; - Serial.printf("PMS read failed: %d\r\n", pmFailCount); - if (pmFailCount >= 3) { + ag.pms5003.updateFailCount(); + Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); + if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { measurements.pm01_1 = utils::getInvalidPMS(); measurements.pm25_1 = utils::getInvalidPMS(); measurements.pm10_1 = utils::getInvalidPMS(); measurements.pm03PCount_1 = utils::getInvalidPMS(); } + + if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { + Serial.printf("Restarting..."); + ESP.restart(); + } } } diff --git a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino index 20be418..b29f621 100644 --- a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino +++ b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino @@ -68,7 +68,6 @@ static LocalServer localServer(Serial, openMetrics, measurements, configuration, wifiConnector); static MqttClient mqttClient(Serial); -static int pmFailCount = 0; static uint32_t factoryBtnPressTime = 0; static int getCO2FailCount = 0; static AgFirmwareMode fwMode = FW_MODE_I_42PS; @@ -609,16 +608,21 @@ static void updatePm(void) { Serial.printf("PM2.5 ug/m3: %d\r\n", measurements.pm25_1); Serial.printf("PM10 ug/m3: %d\r\n", measurements.pm10_1); Serial.printf("PM0.3 Count: %d\r\n", measurements.pm03PCount_1); - pmFailCount = 0; + ag.pms5003.resetFailCount(); } else { - pmFailCount++; + ag.pms5003.updateFailCount(); Serial.printf("PMS read failed: %d\r\n", pmFailCount); - if (pmFailCount >= 3) { + if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { measurements.pm01_1 = utils::getInvalidPMS(); measurements.pm25_1 = utils::getInvalidPMS(); measurements.pm10_1 = utils::getInvalidPMS(); measurements.pm03PCount_1 = utils::getInvalidPMS(); } + + if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { + Serial.printf("Restarting..."); + ESP.restart(); + } } } diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 978c345..a6bf7c3 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -88,7 +88,6 @@ static OtaHandler otaHandler; static LocalServer localServer(Serial, openMetrics, measurements, configuration, wifiConnector); -static int pmFailCount = 0; static uint32_t factoryBtnPressTime = 0; static int getCO2FailCount = 0; static AgFirmwareMode fwMode = FW_MODE_I_9PSL; @@ -1006,6 +1005,7 @@ static void updateTvoc(void) { } static void updatePm(void) { + bool failToRestart = false; if (ag->isOne()) { if (ag->pms5003.isFailed() == false) { measurements.pm01_1 = ag->pms5003.getPm01Ae(); @@ -1018,16 +1018,20 @@ static void updatePm(void) { Serial.printf("PM2.5 ug/m3: %d\r\n", measurements.pm25_1); Serial.printf("PM10 ug/m3: %d\r\n", measurements.pm10_1); Serial.printf("PM0.3 Count: %d\r\n", measurements.pm03PCount_1); - pmFailCount = 0; + ag->pms5003.resetFailCount(); } else { - pmFailCount++; - Serial.printf("PMS read failed: %d\r\n", pmFailCount); - if (pmFailCount >= 3) { + ag->pms5003.updateFailCount(); + Serial.printf("PMS read failed: %d\r\n", ag->pms5003.getFailCount()); + if (ag->pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { measurements.pm01_1 = utils::getInvalidPMS(); measurements.pm25_1 = utils::getInvalidPMS(); measurements.pm10_1 = utils::getInvalidPMS(); measurements.pm03PCount_1 = utils::getInvalidPMS(); } + + if (ag->pms5003.getFailCount() >= ag->pms5003.getFailCountMax()) { + failToRestart = true; + } } } else { bool pmsResult_1 = false; @@ -1053,13 +1057,26 @@ static void updatePm(void) { ag->pms5003t_1.temperatureCompensated(measurements.temp_1)); Serial.printf("[1] Relative Humidity compensated: %f\r\n", ag->pms5003t_1.humidityCompensated(measurements.hum_1)); + + ag->pms5003t_1.resetFailCount(); } else { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); - measurements.temp_1 = utils::getInvalidTemperature(); - measurements.hum_1 = utils::getInvalidHumidity(); + if (configuration.hasSensorPMS1) { + ag->pms5003t_1.updateFailCount(); + Serial.printf("[1] PMS read failed: %d\r\n", ag->pms5003t_1.getFailCount()); + + if (ag->pms5003t_1.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { + measurements.pm01_1 = utils::getInvalidPMS(); + measurements.pm25_1 = utils::getInvalidPMS(); + measurements.pm10_1 = utils::getInvalidPMS(); + measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.temp_1 = utils::getInvalidTemperature(); + measurements.hum_1 = utils::getInvalidHumidity(); + } + + if (ag->pms5003t_1.getFailCount() >= ag->pms5003t_1.getFailCountMax()) { + failToRestart = true; + } + } } if (configuration.hasSensorPMS2 && (ag->pms5003t_2.isFailed() == false)) { @@ -1080,16 +1097,29 @@ static void updatePm(void) { Serial.printf("[2] Temperature in C: %0.2f\r\n", measurements.temp_2); Serial.printf("[2] Relative Humidity: %d\r\n", measurements.hum_2); Serial.printf("[2] Temperature compensated in C: %0.2f\r\n", - ag->pms5003t_1.temperatureCompensated(measurements.temp_2)); + ag->pms5003t_2.temperatureCompensated(measurements.temp_2)); Serial.printf("[2] Relative Humidity compensated: %d\r\n", - ag->pms5003t_1.humidityCompensated(measurements.hum_2)); + ag->pms5003t_2.humidityCompensated(measurements.hum_2)); + + ag->pms5003t_2.resetFailCount(); } else { - measurements.pm01_2 = utils::getInvalidPMS(); - measurements.pm25_2 = utils::getInvalidPMS(); - measurements.pm10_2 = utils::getInvalidPMS(); - measurements.pm03PCount_2 = utils::getInvalidPMS(); - measurements.temp_2 = utils::getInvalidTemperature(); - measurements.hum_2 = utils::getInvalidHumidity(); + if (configuration.hasSensorPMS2) { + ag->pms5003t_2.updateFailCount(); + Serial.printf("[2] PMS read failed: %d\r\n", ag->pms5003t_2.getFailCount()); + + if (ag->pms5003t_2.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { + measurements.pm01_2 = utils::getInvalidPMS(); + measurements.pm25_2 = utils::getInvalidPMS(); + measurements.pm10_2 = utils::getInvalidPMS(); + measurements.pm03PCount_2 = utils::getInvalidPMS(); + measurements.temp_2 = utils::getInvalidTemperature(); + measurements.hum_2 = utils::getInvalidHumidity(); + } + + if (ag->pms5003t_2.getFailCount() >= ag->pms5003t_2.getFailCountMax()) { + failToRestart = true; + } + } } if (configuration.hasSensorPMS1 && configuration.hasSensorPMS2 && @@ -1189,6 +1219,11 @@ static void updatePm(void) { ag->sgp41.setCompensationTemperatureHumidity(temp, hum); } } + + if (failToRestart) { + Serial.printf("Restarting..."); + ESP.restart(); + } } static void sendDataToServer(void) { diff --git a/src/PMS/PMS.cpp b/src/PMS/PMS.cpp index 50b3dac..0629d05 100644 --- a/src/PMS/PMS.cpp +++ b/src/PMS/PMS.cpp @@ -12,6 +12,7 @@ bool PMSBase::begin(Stream *stream) { this->stream = stream; failed = true; + failCount = 0; lastRead = 0; // To read buffer on handle without wait after 1.5sec this->stream->flush(); @@ -147,6 +148,36 @@ void PMSBase::handle() { */ bool PMSBase::isFailed(void) { return failed; } +/** + * @brief Increate number of fail + * + */ +void PMSBase::updateFailCount(void) { + if (failCount < failCountMax) { + failCount++; + } +} + +/** + * @brief Reset number of fail + * + */ +void PMSBase::resetFailCount(void) {failCount = 0;} + +/** + * @brief Get number of fail + * + * @return int + */ +int PMSBase::getFailCount(void) { return failCount; } + +/** + * @brief Get maximum of fail count max + * + * @return int + */ +int PMSBase::getFailCountMax(void) { return failCountMax; } + /** * @brief Read PMS 0.1 ug/m3 with CF = 1 PM estimates * diff --git a/src/PMS/PMS.h b/src/PMS/PMS.h index e89693f..96057d5 100644 --- a/src/PMS/PMS.h +++ b/src/PMS/PMS.h @@ -3,11 +3,17 @@ #include +#define PMS_FAIL_COUNT_SET_INVALID 3 + class PMSBase { public: bool begin(Stream *stream); void handle(); bool isFailed(void); + void updateFailCount(void); + void resetFailCount(void); + int getFailCount(void); + int getFailCountMax(void); uint16_t getRaw0_1(void); uint16_t getRaw2_5(void); uint16_t getRaw10(void); @@ -36,6 +42,8 @@ private: int packageIndex; bool failed = false; uint32_t lastRead; + const int failCountMax = 10; + int failCount = 0; int16_t toI16(char *buf); uint16_t toU16(char* buf); diff --git a/src/PMS/PMS5003.cpp b/src/PMS/PMS5003.cpp index 8a49550..8bed516 100644 --- a/src/PMS/PMS5003.cpp +++ b/src/PMS/PMS5003.cpp @@ -175,3 +175,33 @@ void PMS5003::handle(void) { pms.handle(); } * @return false Communication timeout or sensor has removed */ bool PMS5003::isFailed(void) { return pms.isFailed(); } + +/** + * @brief Increate number of fail + * + */ +void PMS5003::updateFailCount(void) { + pms.updateFailCount(); +} + +/** + * @brief Reset fail count + * + */ +void PMS5003::resetFailCount(void) { + pms.resetFailCount(); +} + +/** + * @brief Get number of fail count + * + * @return int + */ +int PMS5003::getFailCount(void) { return pms.getFailCount(); } + +/** + * @brief Get number of fail count max + * + * @return int + */ +int PMS5003::getFailCountMax(void) { return pms.getFailCountMax(); } diff --git a/src/PMS/PMS5003.h b/src/PMS/PMS5003.h index aa6fcd9..8be8e8f 100644 --- a/src/PMS/PMS5003.h +++ b/src/PMS/PMS5003.h @@ -19,6 +19,10 @@ public: void end(void); void handle(void); bool isFailed(void); + void updateFailCount(void); + void resetFailCount(void); + int getFailCount(void); + int getFailCountMax(void); int getPm01Ae(void); int getPm25Ae(void); int getPm10Ae(void); diff --git a/src/PMS/PMS5003T.cpp b/src/PMS/PMS5003T.cpp index 97cc9c7..b3ad9fc 100644 --- a/src/PMS/PMS5003T.cpp +++ b/src/PMS/PMS5003T.cpp @@ -216,3 +216,32 @@ void PMS5003T::handle(void) { pms.handle(); } */ bool PMS5003T::isFailed(void) { return pms.isFailed(); } +/** + * @brief Increate number of fail + * + */ +void PMS5003T::updateFailCount(void) { + pms.updateFailCount(); +} + +/** + * @brief Reset fail count + * + */ +void PMS5003T::resetFailCount(void) { + pms.resetFailCount(); +} + +/** + * @brief Get fail count + * + * @return int + */ +int PMS5003T::getFailCount(void) { return pms.getFailCount(); } + +/** + * @brief Get fail count max + * + * @return int + */ +int PMS5003T::getFailCountMax(void) { return pms.getFailCountMax(); } diff --git a/src/PMS/PMS5003T.h b/src/PMS/PMS5003T.h index 3d2d567..f3d58e7 100644 --- a/src/PMS/PMS5003T.h +++ b/src/PMS/PMS5003T.h @@ -22,6 +22,10 @@ public: void handle(void); bool isFailed(void); + void updateFailCount(void); + void resetFailCount(void); + int getFailCount(void); + int getFailCountMax(void); int getPm01Ae(void); int getPm25Ae(void); int getPm10Ae(void); From e461b92c9fe6457e07bbb1bff83048eab74c5bd8 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Sun, 25 Aug 2024 20:51:07 +0700 Subject: [PATCH 2/5] Fix build failed --- examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino index b29f621..a0a42df 100644 --- a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino +++ b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino @@ -611,7 +611,7 @@ static void updatePm(void) { ag.pms5003.resetFailCount(); } else { ag.pms5003.updateFailCount(); - Serial.printf("PMS read failed: %d\r\n", pmFailCount); + Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { measurements.pm01_1 = utils::getInvalidPMS(); measurements.pm25_1 = utils::getInvalidPMS(); From 104d58a8c0b4e0fdf6de5a4ed1e2b6e39a24e55a Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Mon, 26 Aug 2024 14:14:42 +0700 Subject: [PATCH 3/5] resolve review #222 --- examples/BASIC/BASIC.ino | 12 +++--- examples/BASIC/OpenMetrics.cpp | 8 ++-- .../DiyProIndoorV3_3/DiyProIndoorV3_3.ino | 12 +++--- examples/DiyProIndoorV3_3/OpenMetrics.cpp | 8 ++-- .../DiyProIndoorV4_2/DiyProIndoorV4_2.ino | 12 +++--- examples/DiyProIndoorV4_2/OpenMetrics.cpp | 8 ++-- examples/OneOpenAir/OneOpenAir.ino | 42 +++++++++---------- examples/OneOpenAir/OpenMetrics.cpp | 8 ++-- src/Main/utils.cpp | 2 +- src/Main/utils.h | 2 +- src/PMS/PMS.cpp | 11 +---- src/PMS/PMS5003.cpp | 8 ---- src/PMS/PMS5003T.cpp | 8 ---- 13 files changed, 58 insertions(+), 83 deletions(-) diff --git a/examples/BASIC/BASIC.ino b/examples/BASIC/BASIC.ino index 4323b13..85ffd45 100644 --- a/examples/BASIC/BASIC.ino +++ b/examples/BASIC/BASIC.ino @@ -516,16 +516,16 @@ static void updatePm(void) { ag.pms5003.resetFailCount(); } else { ag.pms5003.updateFailCount(); - Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); + Serial.printf("PMS read failed %d times\r\n", ag.pms5003.getFailCount()); if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.pm01_1 = utils::getInvalidPmValue(); + measurements.pm25_1 = utils::getInvalidPmValue(); + measurements.pm10_1 = utils::getInvalidPmValue(); + measurements.pm03PCount_1 = utils::getInvalidPmValue(); } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("Restarting..."); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); ESP.restart(); } } diff --git a/examples/BASIC/OpenMetrics.cpp b/examples/BASIC/OpenMetrics.cpp index 3392d97..5737a10 100644 --- a/examples/BASIC/OpenMetrics.cpp +++ b/examples/BASIC/OpenMetrics.cpp @@ -67,10 +67,10 @@ String OpenMetrics::getPayload(void) { float _temp = utils::getInvalidTemperature(); float _hum = utils::getInvalidHumidity(); - int pm01 = utils::getInvalidPMS(); - int pm25 = utils::getInvalidPMS(); - int pm10 = utils::getInvalidPMS(); - int pm03PCount = utils::getInvalidPMS(); + int pm01 = utils::getInvalidPmValue(); + int pm25 = utils::getInvalidPmValue(); + int pm10 = utils::getInvalidPmValue(); + int pm03PCount = utils::getInvalidPmValue(); int atmpCompensated = utils::getInvalidTemperature(); int ahumCompensated = utils::getInvalidHumidity(); diff --git a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino index 2f4d663..7ecc082 100644 --- a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino +++ b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino @@ -568,16 +568,16 @@ static void updatePm(void) { ag.pms5003.resetFailCount(); } else { ag.pms5003.updateFailCount(); - Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); + Serial.printf("PMS read failed %d times\r\n", ag.pms5003.getFailCount()); if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.pm01_1 = utils::getInvalidPmValue(); + measurements.pm25_1 = utils::getInvalidPmValue(); + measurements.pm10_1 = utils::getInvalidPmValue(); + measurements.pm03PCount_1 = utils::getInvalidPmValue(); } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("Restarting..."); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); ESP.restart(); } } diff --git a/examples/DiyProIndoorV3_3/OpenMetrics.cpp b/examples/DiyProIndoorV3_3/OpenMetrics.cpp index 3392d97..5737a10 100644 --- a/examples/DiyProIndoorV3_3/OpenMetrics.cpp +++ b/examples/DiyProIndoorV3_3/OpenMetrics.cpp @@ -67,10 +67,10 @@ String OpenMetrics::getPayload(void) { float _temp = utils::getInvalidTemperature(); float _hum = utils::getInvalidHumidity(); - int pm01 = utils::getInvalidPMS(); - int pm25 = utils::getInvalidPMS(); - int pm10 = utils::getInvalidPMS(); - int pm03PCount = utils::getInvalidPMS(); + int pm01 = utils::getInvalidPmValue(); + int pm25 = utils::getInvalidPmValue(); + int pm10 = utils::getInvalidPmValue(); + int pm03PCount = utils::getInvalidPmValue(); int atmpCompensated = utils::getInvalidTemperature(); int ahumCompensated = utils::getInvalidHumidity(); diff --git a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino index a0a42df..ac78467 100644 --- a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino +++ b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino @@ -611,16 +611,16 @@ static void updatePm(void) { ag.pms5003.resetFailCount(); } else { ag.pms5003.updateFailCount(); - Serial.printf("PMS read failed: %d\r\n", ag.pms5003.getFailCount()); + Serial.printf("PMS read failed %d times\r\n", ag.pms5003.getFailCount()); if (ag.pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.pm01_1 = utils::getInvalidPmValue(); + measurements.pm25_1 = utils::getInvalidPmValue(); + measurements.pm10_1 = utils::getInvalidPmValue(); + measurements.pm03PCount_1 = utils::getInvalidPmValue(); } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("Restarting..."); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); ESP.restart(); } } diff --git a/examples/DiyProIndoorV4_2/OpenMetrics.cpp b/examples/DiyProIndoorV4_2/OpenMetrics.cpp index 3392d97..5737a10 100644 --- a/examples/DiyProIndoorV4_2/OpenMetrics.cpp +++ b/examples/DiyProIndoorV4_2/OpenMetrics.cpp @@ -67,10 +67,10 @@ String OpenMetrics::getPayload(void) { float _temp = utils::getInvalidTemperature(); float _hum = utils::getInvalidHumidity(); - int pm01 = utils::getInvalidPMS(); - int pm25 = utils::getInvalidPMS(); - int pm10 = utils::getInvalidPMS(); - int pm03PCount = utils::getInvalidPMS(); + int pm01 = utils::getInvalidPmValue(); + int pm25 = utils::getInvalidPmValue(); + int pm10 = utils::getInvalidPmValue(); + int pm03PCount = utils::getInvalidPmValue(); int atmpCompensated = utils::getInvalidTemperature(); int ahumCompensated = utils::getInvalidHumidity(); diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index a6bf7c3..5f9e0fe 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -1005,7 +1005,7 @@ static void updateTvoc(void) { } static void updatePm(void) { - bool failToRestart = false; + bool restart = false; if (ag->isOne()) { if (ag->pms5003.isFailed() == false) { measurements.pm01_1 = ag->pms5003.getPm01Ae(); @@ -1021,16 +1021,16 @@ static void updatePm(void) { ag->pms5003.resetFailCount(); } else { ag->pms5003.updateFailCount(); - Serial.printf("PMS read failed: %d\r\n", ag->pms5003.getFailCount()); + Serial.printf("PMS read faile %d times\r\n", ag->pms5003.getFailCount()); if (ag->pms5003.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.pm01_1 = utils::getInvalidPmValue(); + measurements.pm25_1 = utils::getInvalidPmValue(); + measurements.pm10_1 = utils::getInvalidPmValue(); + measurements.pm03PCount_1 = utils::getInvalidPmValue(); } if (ag->pms5003.getFailCount() >= ag->pms5003.getFailCountMax()) { - failToRestart = true; + restart = true; } } } else { @@ -1062,19 +1062,19 @@ static void updatePm(void) { } else { if (configuration.hasSensorPMS1) { ag->pms5003t_1.updateFailCount(); - Serial.printf("[1] PMS read failed: %d\r\n", ag->pms5003t_1.getFailCount()); + Serial.printf("[1] PMS read failed %d times\r\n", ag->pms5003t_1.getFailCount()); if (ag->pms5003t_1.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_1 = utils::getInvalidPMS(); - measurements.pm25_1 = utils::getInvalidPMS(); - measurements.pm10_1 = utils::getInvalidPMS(); - measurements.pm03PCount_1 = utils::getInvalidPMS(); + measurements.pm01_1 = utils::getInvalidPmValue(); + measurements.pm25_1 = utils::getInvalidPmValue(); + measurements.pm10_1 = utils::getInvalidPmValue(); + measurements.pm03PCount_1 = utils::getInvalidPmValue(); measurements.temp_1 = utils::getInvalidTemperature(); measurements.hum_1 = utils::getInvalidHumidity(); } if (ag->pms5003t_1.getFailCount() >= ag->pms5003t_1.getFailCountMax()) { - failToRestart = true; + restart = true; } } } @@ -1105,19 +1105,19 @@ static void updatePm(void) { } else { if (configuration.hasSensorPMS2) { ag->pms5003t_2.updateFailCount(); - Serial.printf("[2] PMS read failed: %d\r\n", ag->pms5003t_2.getFailCount()); + Serial.printf("[2] PMS read failed %d times\r\n", ag->pms5003t_2.getFailCount()); if (ag->pms5003t_2.getFailCount() >= PMS_FAIL_COUNT_SET_INVALID) { - measurements.pm01_2 = utils::getInvalidPMS(); - measurements.pm25_2 = utils::getInvalidPMS(); - measurements.pm10_2 = utils::getInvalidPMS(); - measurements.pm03PCount_2 = utils::getInvalidPMS(); + measurements.pm01_2 = utils::getInvalidPmValue(); + measurements.pm25_2 = utils::getInvalidPmValue(); + measurements.pm10_2 = utils::getInvalidPmValue(); + measurements.pm03PCount_2 = utils::getInvalidPmValue(); measurements.temp_2 = utils::getInvalidTemperature(); measurements.hum_2 = utils::getInvalidHumidity(); } if (ag->pms5003t_2.getFailCount() >= ag->pms5003t_2.getFailCountMax()) { - failToRestart = true; + restart = true; } } } @@ -1220,8 +1220,8 @@ static void updatePm(void) { } } - if (failToRestart) { - Serial.printf("Restarting..."); + if (restart) { + Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); ESP.restart(); } } diff --git a/examples/OneOpenAir/OpenMetrics.cpp b/examples/OneOpenAir/OpenMetrics.cpp index c458a8c..ada9871 100644 --- a/examples/OneOpenAir/OpenMetrics.cpp +++ b/examples/OneOpenAir/OpenMetrics.cpp @@ -67,10 +67,10 @@ String OpenMetrics::getPayload(void) { float _temp = utils::getInvalidTemperature(); float _hum = utils::getInvalidHumidity(); - int pm01 = utils::getInvalidPMS(); - int pm25 = utils::getInvalidPMS(); - int pm10 = utils::getInvalidPMS(); - int pm03PCount = utils::getInvalidPMS(); + int pm01 = utils::getInvalidPmValue(); + int pm25 = utils::getInvalidPmValue(); + int pm10 = utils::getInvalidPmValue(); + int pm03PCount = utils::getInvalidPmValue(); int atmpCompensated = utils::getInvalidTemperature(); int ahumCompensated = utils::getInvalidHumidity(); if (config.hasSensorPMS1 && config.hasSensorPMS2) { diff --git a/src/Main/utils.cpp b/src/Main/utils.cpp index 1c8175d..6a4d0e1 100644 --- a/src/Main/utils.cpp +++ b/src/Main/utils.cpp @@ -82,7 +82,7 @@ float utils::getInvalidHumidity(void) { return INVALID_HUMIDITY; } int utils::getInvalidCO2(void) { return INVALID_CO2; } -int utils::getInvalidPMS(void) { return INVALID_PMS; } +int utils::getInvalidPmValue(void) { return INVALID_PMS; } int utils::getInvalidNOx(void) { return INVALID_NOX; } diff --git a/src/Main/utils.h b/src/Main/utils.h index 841d5ec..a1efa93 100644 --- a/src/Main/utils.h +++ b/src/Main/utils.h @@ -21,7 +21,7 @@ public: static float getInvalidTemperature(void); static float getInvalidHumidity(void); static int getInvalidCO2(void); - static int getInvalidPMS(void); + static int getInvalidPmValue(void); static int getInvalidNOx(void); static int getInvalidVOC(void); }; diff --git a/src/PMS/PMS.cpp b/src/PMS/PMS.cpp index 0629d05..1d1ad1c 100644 --- a/src/PMS/PMS.cpp +++ b/src/PMS/PMS.cpp @@ -158,11 +158,7 @@ void PMSBase::updateFailCount(void) { } } -/** - * @brief Reset number of fail - * - */ -void PMSBase::resetFailCount(void) {failCount = 0;} +void PMSBase::resetFailCount(void) { failCount = 0; } /** * @brief Get number of fail @@ -171,11 +167,6 @@ void PMSBase::resetFailCount(void) {failCount = 0;} */ int PMSBase::getFailCount(void) { return failCount; } -/** - * @brief Get maximum of fail count max - * - * @return int - */ int PMSBase::getFailCountMax(void) { return failCountMax; } /** diff --git a/src/PMS/PMS5003.cpp b/src/PMS/PMS5003.cpp index 8bed516..73dd569 100644 --- a/src/PMS/PMS5003.cpp +++ b/src/PMS/PMS5003.cpp @@ -176,18 +176,10 @@ void PMS5003::handle(void) { pms.handle(); } */ bool PMS5003::isFailed(void) { return pms.isFailed(); } -/** - * @brief Increate number of fail - * - */ void PMS5003::updateFailCount(void) { pms.updateFailCount(); } -/** - * @brief Reset fail count - * - */ void PMS5003::resetFailCount(void) { pms.resetFailCount(); } diff --git a/src/PMS/PMS5003T.cpp b/src/PMS/PMS5003T.cpp index b3ad9fc..8493504 100644 --- a/src/PMS/PMS5003T.cpp +++ b/src/PMS/PMS5003T.cpp @@ -216,18 +216,10 @@ void PMS5003T::handle(void) { pms.handle(); } */ bool PMS5003T::isFailed(void) { return pms.isFailed(); } -/** - * @brief Increate number of fail - * - */ void PMS5003T::updateFailCount(void) { pms.updateFailCount(); } -/** - * @brief Reset fail count - * - */ void PMS5003T::resetFailCount(void) { pms.resetFailCount(); } From 17238cff86bba28017bcaa73f671326721df0af6 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Mon, 26 Aug 2024 15:52:31 +0700 Subject: [PATCH 4/5] fix compile failed. --- examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino | 2 +- examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino index 7ecc082..d842fff 100644 --- a/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino +++ b/examples/DiyProIndoorV3_3/DiyProIndoorV3_3.ino @@ -577,7 +577,7 @@ static void updatePm(void) { } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag.pms5003.getFailCountMax()); ESP.restart(); } } diff --git a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino index ac78467..eec919e 100644 --- a/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino +++ b/examples/DiyProIndoorV4_2/DiyProIndoorV4_2.ino @@ -620,7 +620,7 @@ static void updatePm(void) { } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag.pms5003.getFailCountMax()); ESP.restart(); } } From 1afcca25a1280b55028579bebd04749d84c7b635 Mon Sep 17 00:00:00 2001 From: Phat Nguyen Date: Mon, 26 Aug 2024 15:54:41 +0700 Subject: [PATCH 5/5] Fix compile failed. --- examples/BASIC/BASIC.ino | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/BASIC/BASIC.ino b/examples/BASIC/BASIC.ino index 85ffd45..7419f13 100644 --- a/examples/BASIC/BASIC.ino +++ b/examples/BASIC/BASIC.ino @@ -525,7 +525,7 @@ static void updatePm(void) { } if(ag.pms5003.getFailCount() >= ag.pms5003.getFailCountMax()) { - Serial.printf("PMS failure count reach to max set %d, restarting...", ag->pms5003.getFailCountMax()); + Serial.printf("PMS failure count reach to max set %d, restarting...", ag.pms5003.getFailCountMax()); ESP.restart(); } }