diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index 5c80112..4845733 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -1057,9 +1057,9 @@ static void updatePm(void) { Serial.printf("[1] Temperature in C: %0.2f\r\n", measurements.temp_1); Serial.printf("[1] Relative Humidity: %d\r\n", measurements.hum_1); Serial.printf("[1] Temperature compensated in C: %0.2f\r\n", - 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.compensateTemp(measurements.temp_1)); + Serial.printf("[1] Relative Humidity compensated: %0.2f\r\n", + ag->pms5003t_1.compensateHum(measurements.hum_1)); ag->pms5003t_1.resetFailCount(); } else { @@ -1100,9 +1100,9 @@ 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_2.temperatureCompensated(measurements.temp_2)); - Serial.printf("[2] Relative Humidity compensated: %d\r\n", - ag->pms5003t_2.humidityCompensated(measurements.hum_2)); + ag->pms5003t_1.compensateTemp(measurements.temp_2)); + Serial.printf("[2] Relative Humidity compensated: %0.2f\r\n", + ag->pms5003t_1.compensateHum(measurements.hum_2)); ag->pms5003t_2.resetFailCount(); } else { diff --git a/examples/OneOpenAir/OpenMetrics.cpp b/examples/OneOpenAir/OpenMetrics.cpp index 9abefd8..a7dfe70 100644 --- a/examples/OneOpenAir/OpenMetrics.cpp +++ b/examples/OneOpenAir/OpenMetrics.cpp @@ -118,8 +118,8 @@ String OpenMetrics::getPayload(void) { atmpCompensated = _temp; ahumCompensated = _hum; } else { - atmpCompensated = ag->pms5003t_1.temperatureCompensated(_temp); - ahumCompensated = ag->pms5003t_1.humidityCompensated(_hum); + atmpCompensated = ag->pms5003t_1.compensateTemp(_temp); + ahumCompensated = ag->pms5003t_1.compensateHum(_hum); } if (config.hasSensorPMS1 || config.hasSensorPMS2) { diff --git a/src/AgValue.cpp b/src/AgValue.cpp index 70e339b..c7ec1a2 100644 --- a/src/AgValue.cpp +++ b/src/AgValue.cpp @@ -114,7 +114,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (utils::isValidTemperature(this->temp_1) && utils::isValidTemperature(this->temp_1)) { root["atmp"] = ag->round2((this->temp_1 + this->temp_2) / 2.0f); if (localServer) { - val = ag->pms5003t_2.temperatureCompensated((this->temp_1 + this->temp_2) / 2.0f); + val = ag->pms5003t_2.compensateTemp((this->temp_1 + this->temp_2) / 2.0f); if (utils::isValidTemperature(val)) { root["atmpCompensated"] = ag->round2(val); } @@ -123,7 +123,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (utils::isValidHumidity(this->hum_1) && utils::isValidHumidity(this->hum_1)) { root["rhum"] = ag->round2((this->hum_1 + this->hum_2) / 2.0f); if (localServer) { - val = ag->pms5003t_2.humidityCompensated((this->hum_1 + this->hum_2) / 2.0f); + val = ag->pms5003t_2.compensateHum((this->hum_1 + this->hum_2) / 2.0f); if (utils::isValidHumidity(val)) { root["rhumCompensated"] = (int)val; } @@ -155,7 +155,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["atmp"] = ag->round2(this->temp_1); if (localServer) { - val = ag->pms5003t_1.temperatureCompensated(this->temp_1); + val = ag->pms5003t_1.compensateTemp(this->temp_1); if (utils::isValidTemperature(val)) { root["atmpCompensated"] = ag->round2(val); } @@ -165,7 +165,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["rhum"] = this->hum_1; if (localServer) { - val = ag->pms5003t_1.humidityCompensated(this->hum_1); + val = ag->pms5003t_1.compensateHum(this->hum_1); if (utils::isValidHumidity(val)) { root["rhumCompensated"] = (int)val; } @@ -196,7 +196,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["atmp"] = ag->round2(this->temp_2); if (localServer) { - val = ag->pms5003t_2.temperatureCompensated(this->temp_2); + val = ag->pms5003t_2.compensateTemp(this->temp_2); if (utils::isValidTemperature(val)) { root["atmpCompensated"] = ag->round2(val); } @@ -206,7 +206,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["rhum"] = this->hum_2; if (localServer) { - val = ag->pms5003t_2.humidityCompensated(this->hum_2); + val = ag->pms5003t_2.compensateHum(this->hum_2); if (utils::isValidHumidity(val)) { root["rhumCompensated"] = (int)val; } @@ -238,7 +238,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["atmp"] = ag->round2(this->temp_1); if (localServer) { - val = ag->pms5003t_1.temperatureCompensated(this->temp_1); + val = ag->pms5003t_1.compensateTemp(this->temp_1); if (utils::isValidTemperature(val)) { root["atmpCompensated"] = ag->round2(val); } @@ -247,7 +247,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, if (utils::isValidHumidity(this->hum_1)) { root["rhum"] = this->hum_1; if(localServer) { - val = ag->pms5003t_1.humidityCompensated(this->hum_1); + val = ag->pms5003t_1.compensateHum(this->hum_1); if(utils::isValidHumidity(val)) { root["rhumCompensated"] = (int)val; } @@ -275,7 +275,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["atmp"] = ag->round2(this->temp_2); if (localServer) { - val = ag->pms5003t_1.temperatureCompensated(this->temp_2); + val = ag->pms5003t_1.compensateTemp(this->temp_2); if (utils::isValidTemperature(val)) { root["atmpCompensated"] = ag->round2(val); } @@ -285,7 +285,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["rhum"] = this->hum_2; if(localServer) { - val = ag->pms5003t_1.humidityCompensated(this->hum_2); + val = ag->pms5003t_1.compensateHum(this->hum_2); if(utils::isValidHumidity(val)) { root["rhumCompensated"] = (int)val; } @@ -316,7 +316,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["channels"]["1"]["atmp"] = ag->round2(this->temp_1); if (localServer) { - val = ag->pms5003t_1.temperatureCompensated(this->temp_1); + val = ag->pms5003t_1.compensateTemp(this->temp_1); if (utils::isValidTemperature(val)) { root["channels"]["1"]["atmpCompensated"] = ag->round2(val); } @@ -326,7 +326,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["channels"]["1"]["rhum"] = this->hum_1; if (localServer) { - val = ag->pms5003t_1.humidityCompensated(this->hum_1); + val = ag->pms5003t_1.compensateHum(this->hum_1); if (utils::isValidHumidity(val)) { root["channels"]["1"]["rhumCompensated"] = (int)val; } @@ -358,7 +358,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["channels"]["2"]["atmp"] = ag->round2(this->temp_2); if (localServer) { - val = ag->pms5003t_1.temperatureCompensated(this->temp_2); + val = ag->pms5003t_1.compensateTemp(this->temp_2); if (utils::isValidTemperature(val)) { root["channels"]["2"]["atmpCompensated"] = ag->round2(val); } @@ -368,7 +368,7 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, root["channels"]["2"]["rhum"] = this->hum_2; if (localServer) { - val = ag->pms5003t_1.humidityCompensated(this->hum_2); + val = ag->pms5003t_1.compensateHum(this->hum_2); if (utils::isValidHumidity(val)) { root["channels"]["2"]["rhumCompensated"] = (int)val; } diff --git a/src/PMS/PMS5003TBase.cpp b/src/PMS/PMS5003TBase.cpp index 7d7fdbe..ae9fbd0 100644 --- a/src/PMS/PMS5003TBase.cpp +++ b/src/PMS/PMS5003TBase.cpp @@ -4,14 +4,30 @@ PMS5003TBase::PMS5003TBase() {} PMS5003TBase::~PMS5003TBase() {} -float PMS5003TBase::temperatureCompensated(float temp) { +/** + * @brief Compensate the temperature + * + * Reference formula: https://www.airgradient.com/documentation/correction-algorithms/ + * + * @param temp + * @return * float + */ +float PMS5003TBase::compensateTemp(float temp) { if (temp < 10.0f) { return temp * 1.327f - 6.738f; } return temp * 1.181f - 5.113f; } -float PMS5003TBase::humidityCompensated(float hum) { +/** + * @brief Compensate the humidity + * + * Reference formula: https://www.airgradient.com/documentation/correction-algorithms/ + * + * @param temp + * @return * float + */ +float PMS5003TBase::compensateHum(float hum) { hum = hum * 1.259f + 7.34f; if (hum > 100.0f) { diff --git a/src/PMS/PMS5003TBase.h b/src/PMS/PMS5003TBase.h index 0b50449..f5ce142 100644 --- a/src/PMS/PMS5003TBase.h +++ b/src/PMS/PMS5003TBase.h @@ -8,8 +8,8 @@ private: public: PMS5003TBase(); ~PMS5003TBase(); - float temperatureCompensated(float temp); - float humidityCompensated(float hum); + float compensateTemp(float temp); + float compensateHum(float hum); }; #endif