update message log and fix some bug

This commit is contained in:
Phat Nguyen
2024-04-22 16:31:40 +07:00
parent 21d984c95a
commit 9feac035eb

View File

@ -78,7 +78,8 @@ static AirGradient *ag;
static OledDisplay oledDisplay(configuration, measurements, Serial); static OledDisplay oledDisplay(configuration, measurements, Serial);
static StateMachine stateMachine(oledDisplay, Serial, measurements, static StateMachine stateMachine(oledDisplay, Serial, measurements,
configuration); configuration);
static WifiConnector wifiConnector(oledDisplay, Serial, stateMachine, configuration); static WifiConnector wifiConnector(oledDisplay, Serial, stateMachine,
configuration);
static OpenMetrics openMetrics(measurements, configuration, wifiConnector, static OpenMetrics openMetrics(measurements, configuration, wifiConnector,
apiClient); apiClient);
static LocalServer localServer(Serial, openMetrics, measurements, configuration, static LocalServer localServer(Serial, openMetrics, measurements, configuration,
@ -109,6 +110,7 @@ static void initMqtt(void);
static void factoryConfigReset(void); static void factoryConfigReset(void);
static void wdgFeedUpdate(void); static void wdgFeedUpdate(void);
static void ledBarEnabledUpdate(void); static void ledBarEnabledUpdate(void);
static bool sgp41Init(void);
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, oledDisplayLedBarSchedule); AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, oledDisplayLedBarSchedule);
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL, AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL,
@ -409,6 +411,20 @@ static void ledBarEnabledUpdate(void) {
} }
} }
static bool sgp41Init(void) {
ag->sgp41.setNoxLearningOffset(configuration.getNoxLearningOffset());
ag->sgp41.setTvocLearningOffset(configuration.getTvocLearningOffset());
if (ag->sgp41.begin(Wire)) {
Serial.println("Init SGP41 success");
configuration.hasSensorSGP = true;
return true;
} else {
Serial.println("Init SGP41 failuire");
configuration.hasSensorSGP = false;
}
return false;
}
static void sendDataToAg() { static void sendDataToAg() {
/** Change oledDisplay and led state */ /** Change oledDisplay and led state */
if (ag->isOne()) { if (ag->isOne()) {
@ -476,11 +492,7 @@ static void oneIndoorInit(void) {
ag->watchdog.begin(); ag->watchdog.begin();
/** Init sensor SGP41 */ /** Init sensor SGP41 */
ag->sgp41.setNoxLearningOffset(configuration.getNoxLearningOffset()); if (sgp41Init() == false) {
ag->sgp41.setTvocLearningOffset(configuration.getTvocLearningOffset());
if (ag->sgp41.begin(Wire) == false) {
Serial.println("SGP41 sensor not found");
configuration.hasSensorSGP = false;
dispSensorNotFound("SGP41"); dispSensorNotFound("SGP41");
} }
@ -562,10 +574,7 @@ static void openAirInit(void) {
serial1Available = false; serial1Available = false;
} }
ag->sgp41.setNoxLearningOffset(configuration.getNoxLearningOffset()); if (sgp41Init() == false) {
ag->sgp41.setTvocLearningOffset(configuration.getTvocLearningOffset());
if (ag->sgp41.begin(Wire) == false) {
configuration.hasSensorSGP = false;
Serial.println("SGP sensor not found"); Serial.println("SGP sensor not found");
if (configuration.hasSensorS8 == false) { if (configuration.hasSensorS8 == false) {
@ -640,6 +649,16 @@ static void boardInit(void) {
} else { } else {
openAirInit(); openAirInit();
} }
/** Set S8 CO2 abc days period */
if (configuration.hasSensorS8) {
if (ag->s8.setAbcPeriod(configuration.getCO2CalibrationAbcDays() * 24)) {
Serial.println("Set S8 AbcDays successful");
} else {
Serial.println("Set S8 AbcDays failure");
}
}
localServer.setFwMode(fwMode); localServer.setFwMode(fwMode);
} }
@ -674,17 +693,23 @@ static void configUpdateHandle() {
if (configuration.noxLearnOffsetChanged() || if (configuration.noxLearnOffsetChanged() ||
configuration.tvocLearnOffsetChanged()) { configuration.tvocLearnOffsetChanged()) {
ag->sgp41.end(); ag->sgp41.end();
Serial.println("nox/tvoc learning offset changed");
Serial.println("noxLearningOffset: " + String(configuration.getNoxLearningOffset())); int oldTvocOffset = ag->sgp41.getTvocLearningOffset();
Serial.println("tvocLearningOffset: " + String(configuration.getTvocLearningOffset())); int oldNoxOffset = ag->sgp41.getNoxLearningOffset();
ag->sgp41.setNoxLearningOffset(configuration.getNoxLearningOffset()); bool result = sgp41Init();
ag->sgp41.setTvocLearningOffset(configuration.getTvocLearningOffset()); const char *resultStr = "successful";
if (ag->sgp41.begin(Wire)) { if (!result) {
Serial.println("Init SGP41 success"); resultStr = "failure";
configuration.hasSensorSGP = true; }
} else { if (oldTvocOffset != configuration.getTvocLearningOffset()) {
Serial.println("Init SGP41 failuire"); Serial.printf("Setting tvocLearningOffset from %d to %d hours %s\r\n",
configuration.hasSensorSGP = false; oldTvocOffset, configuration.getTvocLearningOffset(),
resultStr);
}
if (oldNoxOffset != configuration.getNoxLearningOffset()) {
Serial.printf("Setting noxLearningOffset from %d to %d hours %s\r\n",
oldNoxOffset, configuration.getNoxLearningOffset(),
resultStr);
} }
} }
@ -817,7 +842,7 @@ static void updatePm(void) {
Serial.printf("[2] PM3.0 Count: %d\r\n", measurements.pm03PCount_2); Serial.printf("[2] PM3.0 Count: %d\r\n", measurements.pm03PCount_2);
Serial.printf("[2] Temperature in C: %0.2f\r\n", measurements.temp_2); 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] Relative Humidity: %d\r\n", measurements.hum_2);
Serial.printf("[2] Temperature compensated in C: %0.2f\r\n", Serial.printf("[2] Temperature compensated in C: %0.2f\r\n",
ag->pms5003t_1.temperatureCompensated(measurements.temp_2)); ag->pms5003t_1.temperatureCompensated(measurements.temp_2));
Serial.printf("[2] Relative Humidity compensated: %d\r\n", Serial.printf("[2] Relative Humidity compensated: %d\r\n",
ag->pms5003t_1.humidityCompensated(measurements.hum_2)); ag->pms5003t_1.humidityCompensated(measurements.hum_2));
@ -948,9 +973,9 @@ static void tempHumUpdate(void) {
Serial.printf("Temperature in C: %0.2f\r\n", measurements.Temperature); Serial.printf("Temperature in C: %0.2f\r\n", measurements.Temperature);
Serial.printf("Relative Humidity: %d\r\n", measurements.Humidity); Serial.printf("Relative Humidity: %d\r\n", measurements.Humidity);
Serial.printf("Temperature compensated in C: %0.2f\r\n", Serial.printf("Temperature compensated in C: %0.2f\r\n",
ag->pms5003t_1.temperatureCompensated(measurements.Temperature)); measurements.Temperature);
Serial.printf("Relative Humidity compensated: %d\r\n", Serial.printf("Relative Humidity compensated: %d\r\n",
ag->pms5003t_1.humidityCompensated(measurements.Temperature)); measurements.Humidity);
// Update compensation temperature and humidity for SGP41 // Update compensation temperature and humidity for SGP41
if (configuration.hasSensorSGP) { if (configuration.hasSensorSGP) {