Add report PMS5003 and PMS5003T firmware version

This commit is contained in:
Phat Nguyen
2024-08-07 08:50:43 +07:00
parent 01943f594d
commit 040bd28038
8 changed files with 88 additions and 8 deletions

View File

@ -4,6 +4,39 @@
#include "Main/utils.h" #include "Main/utils.h"
#include "Libraries/Arduino_JSON/src/Arduino_JSON.h" #include "Libraries/Arduino_JSON/src/Arduino_JSON.h"
#define json_prop_pmsFirmware "pmsFirmware"
/**
* @brief Get PMS5003 firmware version string
*
* @param fwCode
* @return String
*/
String Measurements::pms5003FirmwareVersion(int fwCode) {
return pms5003FirmwareVersionBase("PMS5003", fwCode);
}
/**
* @brief Get PMS5003T firmware version string
*
* @param fwCode
* @return String
*/
String Measurements::pms5003TFirmwareVersion(int fwCode) {
return pms5003FirmwareVersionBase("PMS5003T", fwCode);
}
/**
* @brief Get firmware version string
*
* @param prefix Prefix firmware string
* @param fwCode Version code
* @return string
*/
String Measurements::pms5003FirmwareVersionBase(String prefix, int fwCode) {
return prefix + String("-") + String(fwCode);
}
String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi, String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
void *_ag, void *_config) { void *_ag, void *_config) {
AirGradient *ag = (AirGradient *)_ag; AirGradient *ag = (AirGradient *)_ag;
@ -33,6 +66,11 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
if (utils::isValidPMS03Count(this->pm03PCount_1)) { if (utils::isValidPMS03Count(this->pm03PCount_1)) {
root["pm003Count"] = this->pm03PCount_1; root["pm003Count"] = this->pm03PCount_1;
} }
if (!localServer) {
root[json_prop_pmsFirmware] =
this->pms5003FirmwareVersion(ag->pms5003.getFirmwareVersion());
}
} }
if (config->hasSensorSHT) { if (config->hasSensorSHT) {
@ -122,7 +160,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
} }
} }
if (!localServer) { if (!localServer) {
root["PMS5003T_FwVer"] = ag->pms5003t_1.getFirmwareVersion(); root[json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_1.getFirmwareVersion());
} }
} }
if (config->hasSensorPMS2) { if (config->hasSensorPMS2) {
@ -161,7 +200,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
} }
} }
if(!localServer) { if(!localServer) {
root["PMS5003T_FwVer"] = ag->pms5003t_1.getFirmwareVersion(); root[json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_1.getFirmwareVersion());
} }
} }
} else { } else {
@ -200,7 +240,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
} }
} }
if(!localServer) { if(!localServer) {
root["PMS5003T_FwVer"] = ag->pms5003t_1.getFirmwareVersion(); root[json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_1.getFirmwareVersion());
} }
} else if (config->hasSensorPMS2) { } else if (config->hasSensorPMS2) {
if(utils::isValidPMS(this->pm01_2)) { if(utils::isValidPMS(this->pm01_2)) {
@ -236,7 +277,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
} }
} }
if(!localServer) { if(!localServer) {
root["PMS5003T_FwVer"] = ag->pms5003t_2.getFirmwareVersion(); root[json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_2.getFirmwareVersion());
} }
} }
} else { } else {
@ -277,7 +319,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
// PMS5003T version // PMS5003T version
if(!localServer) { if(!localServer) {
root["channels"]["1"]["PMS5003T_FwVer"] = ag->pms5003t_1.getFirmwareVersion(); root["channels"]["1"][json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_1.getFirmwareVersion());
} }
} }
if (config->hasSensorPMS2) { if (config->hasSensorPMS2) {
@ -316,7 +359,8 @@ String Measurements::toString(bool localServer, AgFirmwareMode fwMode, int rssi,
} }
// PMS5003T version // PMS5003T version
if(!localServer) { if(!localServer) {
root["channels"]["2"]["PMS5003T_FwVer"] = ag->pms5003t_2.getFirmwareVersion(); root["channels"]["2"][json_prop_pmsFirmware] =
pms5003TFirmwareVersion(ag->pms5003t_2.getFirmwareVersion());
} }
} }
} }

View File

@ -6,6 +6,9 @@
class Measurements { class Measurements {
private: private:
String pms5003FirmwareVersion(int fwCode);
String pms5003TFirmwareVersion(int fwCode);
String pms5003FirmwareVersionBase(String prefix, int fwCode);
public: public:
Measurements() { Measurements() {
pm25_1 = -1; pm25_1 = -1;

View File

@ -246,12 +246,19 @@ uint16_t PMSBase::getTemp(void) { return toValue(&package[24]); }
uint16_t PMSBase::getHum(void) { return toValue(&package[26]); } uint16_t PMSBase::getHum(void) { return toValue(&package[26]); }
/** /**
* @brief Get PMS500T firmware version code * @brief Get firmware version code
* *
* @return uint8_t * @return uint8_t
*/ */
uint8_t PMSBase::getFirmwareVersion(void) { return package[28]; } uint8_t PMSBase::getFirmwareVersion(void) { return package[28]; }
/**
* @brief Ge PMS5003 error code
*
* @return uint8_t
*/
uint8_t PMSBase::getErrorCode(void) { return package[29]; }
/** /**
* @brief Convert PMS2.5 to US AQI unit * @brief Convert PMS2.5 to US AQI unit
* *

View File

@ -27,6 +27,7 @@ public:
uint16_t getTemp(void); uint16_t getTemp(void);
uint16_t getHum(void); uint16_t getHum(void);
uint8_t getFirmwareVersion(void); uint8_t getFirmwareVersion(void);
uint8_t getErrorCode(void);
int pm25ToAQI(int pm02); int pm25ToAQI(int pm02);

View File

@ -78,7 +78,7 @@ bool PMS5003::begin(void) {
return false; return false;
} }
#endif #endif
_ver = pms.getFirmwareVersion();
this->_isBegin = true; this->_isBegin = true;
return true; return true;
} }
@ -121,6 +121,20 @@ int PMS5003::getPm03ParticleCount(void) {
*/ */
int PMS5003::convertPm25ToUsAqi(int pm25) { return pms.pm25ToAQI(pm25); } int PMS5003::convertPm25ToUsAqi(int pm25) { return pms.pm25ToAQI(pm25); }
/**
* @brief Get sensor firmware version
*
* @return int
*/
int PMS5003::getFirmwareVersion(void) { return _ver; }
/**
* @brief Get sensor error code
*
* @return uint8_t
*/
uint8_t PMS5003::getErrorCode(void) { return pms.getErrorCode(); }
/** /**
* @brief Check device initialized or not * @brief Check device initialized or not
* *

View File

@ -24,9 +24,12 @@ public:
int getPm10Ae(void); int getPm10Ae(void);
int getPm03ParticleCount(void); int getPm03ParticleCount(void);
int convertPm25ToUsAqi(int pm25); int convertPm25ToUsAqi(int pm25);
int getFirmwareVersion(void);
uint8_t getErrorCode(void);
private: private:
bool _isBegin = false; bool _isBegin = false;
int _ver;
BoardType _boardDef; BoardType _boardDef;
PMSBase pms; PMSBase pms;
const BoardDef *bsp; const BoardDef *bsp;

View File

@ -171,6 +171,13 @@ float PMS5003T::getRelativeHumidity(void) {
*/ */
int PMS5003T::getFirmwareVersion(void) { return _ver; } int PMS5003T::getFirmwareVersion(void) { return _ver; }
/**
* @brief Get sensor error code
*
* @return uint8_t
*/
uint8_t PMS5003T::getErrorCode(void) { return pms.getErrorCode(); }
/** /**
* @brief Check device initialized or not * @brief Check device initialized or not
* *

View File

@ -30,6 +30,7 @@ public:
float getTemperature(void); float getTemperature(void);
float getRelativeHumidity(void); float getRelativeHumidity(void);
int getFirmwareVersion(void); int getFirmwareVersion(void);
uint8_t getErrorCode(void);
private: private:
bool _isBegin = false; bool _isBegin = false;