mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-06-27 08:41:33 +02:00
Compare commits
6 Commits
fix/resizi
...
3.3.8
Author | SHA1 | Date | |
---|---|---|---|
7049d21a41 | |||
d5cdeaa9f3 | |||
09207c6923 | |||
5b38ca222b | |||
9ee35341a5 | |||
cec0514444 |
@ -143,6 +143,7 @@ static void updatePm(void);
|
|||||||
static void sendDataToServer(void);
|
static void sendDataToServer(void);
|
||||||
static void tempHumUpdate(void);
|
static void tempHumUpdate(void);
|
||||||
static void co2Update(void);
|
static void co2Update(void);
|
||||||
|
static void printMeasurements();
|
||||||
static void mdnsInit(void);
|
static void mdnsInit(void);
|
||||||
static void createMqttTask(void);
|
static void createMqttTask(void);
|
||||||
static void initMqtt(void);
|
static void initMqtt(void);
|
||||||
@ -172,6 +173,7 @@ AgSchedule tvocSchedule(SENSOR_TVOC_UPDATE_INTERVAL, updateTvoc);
|
|||||||
AgSchedule watchdogFeedSchedule(60000, wdgFeedUpdate);
|
AgSchedule watchdogFeedSchedule(60000, wdgFeedUpdate);
|
||||||
AgSchedule checkForUpdateSchedule(FIRMWARE_CHECK_FOR_UPDATE_MS, checkForFirmwareUpdate);
|
AgSchedule checkForUpdateSchedule(FIRMWARE_CHECK_FOR_UPDATE_MS, checkForFirmwareUpdate);
|
||||||
AgSchedule networkSignalCheckSchedule(10000, networkSignalCheck);
|
AgSchedule networkSignalCheckSchedule(10000, networkSignalCheck);
|
||||||
|
AgSchedule printMeasurementsSchedule(6000, printMeasurements);
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
/** Serial for print debug message */
|
/** Serial for print debug message */
|
||||||
@ -218,9 +220,6 @@ void setup() {
|
|||||||
boardInit();
|
boardInit();
|
||||||
setMeasurementMaxPeriod();
|
setMeasurementMaxPeriod();
|
||||||
|
|
||||||
// Comment below line to disable debug measurement readings
|
|
||||||
measurements.setDebug(true);
|
|
||||||
|
|
||||||
bool connectToNetwork = true;
|
bool connectToNetwork = true;
|
||||||
if (ag->isOne()) { // Offline mode only available for indoor monitor
|
if (ag->isOne()) { // Offline mode only available for indoor monitor
|
||||||
/** Show message confirm offline mode, should me perform if LED bar button
|
/** Show message confirm offline mode, should me perform if LED bar button
|
||||||
@ -365,6 +364,9 @@ void loop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Run measurement schedule */
|
||||||
|
printMeasurementsSchedule.run();
|
||||||
|
|
||||||
/** factory reset handle */
|
/** factory reset handle */
|
||||||
factoryConfigReset();
|
factoryConfigReset();
|
||||||
|
|
||||||
@ -386,6 +388,10 @@ static void co2Update(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void printMeasurements() {
|
||||||
|
measurements.printCurrentAverage();
|
||||||
|
}
|
||||||
|
|
||||||
static void mdnsInit(void) {
|
static void mdnsInit(void) {
|
||||||
if (!MDNS.begin(localServer.getHostname().c_str())) {
|
if (!MDNS.begin(localServer.getHostname().c_str())) {
|
||||||
Serial.println("Init mDNS failed");
|
Serial.println("Init mDNS failed");
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=AirGradient Air Quality Sensor
|
name=AirGradient Air Quality Sensor
|
||||||
version=3.3.6
|
version=3.3.8
|
||||||
author=AirGradient <support@airgradient.com>
|
author=AirGradient <support@airgradient.com>
|
||||||
maintainer=AirGradient <support@airgradient.com>
|
maintainer=AirGradient <support@airgradient.com>
|
||||||
sentence=ESP32-C3 / ESP8266 library for air quality monitor measuring PM, CO2, Temperature, TVOC and Humidity with OLED display.
|
sentence=ESP32-C3 / ESP8266 library for air quality monitor measuring PM, CO2, Temperature, TVOC and Humidity with OLED display.
|
||||||
|
151
src/AgValue.cpp
151
src/AgValue.cpp
@ -76,6 +76,86 @@ Measurements::Measurements(Configuration &config) : config(config) {
|
|||||||
|
|
||||||
void Measurements::setAirGradient(AirGradient *ag) { this->ag = ag; }
|
void Measurements::setAirGradient(AirGradient *ag) { this->ag = ag; }
|
||||||
|
|
||||||
|
void Measurements::printCurrentAverage() {
|
||||||
|
Serial.println();
|
||||||
|
if (config.hasSensorS8) {
|
||||||
|
if (utils::isValidCO2(_co2.update.avg)) {
|
||||||
|
Serial.printf("CO2 = %.2f ppm\n", _co2.update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("CO2 = -\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.hasSensorSHT) {
|
||||||
|
if (utils::isValidTemperature(_temperature[0].update.avg)) {
|
||||||
|
Serial.printf("Temperature = %.2f C\n", _temperature[0].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("Temperature = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidHumidity(_humidity[0].update.avg)) {
|
||||||
|
Serial.printf("Relative Humidity = %.2f\n", _humidity[0].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("Relative Humidity = -\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.hasSensorSGP) {
|
||||||
|
if (utils::isValidVOC(_tvoc.update.avg)) {
|
||||||
|
Serial.printf("TVOC Index = %.1f\n", _tvoc.update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("TVOC Index = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidVOC(_tvoc_raw.update.avg)) {
|
||||||
|
Serial.printf("TVOC Raw = %.1f\n", _tvoc_raw.update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("TVOC Raw = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidNOx(_nox.update.avg)) {
|
||||||
|
Serial.printf("NOx Index = %.1f\n", _nox.update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("NOx Index = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidNOx(_nox_raw.update.avg)) {
|
||||||
|
Serial.printf("NOx Raw = %.1f\n", _nox_raw.update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("NOx Raw = -\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.hasSensorPMS1) {
|
||||||
|
printCurrentPMAverage(1);
|
||||||
|
if (!config.hasSensorSHT) {
|
||||||
|
if (utils::isValidTemperature(_temperature[0].update.avg)) {
|
||||||
|
Serial.printf("[1] Temperature = %.2f C\n", _temperature[0].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[1] Temperature = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidHumidity(_humidity[0].update.avg)) {
|
||||||
|
Serial.printf("[1] Relative Humidity = %.2f\n", _humidity[0].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[1] Relative Humidity = -\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config.hasSensorPMS2) {
|
||||||
|
printCurrentPMAverage(2);
|
||||||
|
if (!config.hasSensorSHT) {
|
||||||
|
if (utils::isValidTemperature(_temperature[1].update.avg)) {
|
||||||
|
Serial.printf("[2] Temperature = %.2f C\n", _temperature[1].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[2] Temperature = -\n");
|
||||||
|
}
|
||||||
|
if (utils::isValidHumidity(_humidity[1].update.avg)) {
|
||||||
|
Serial.printf("[2] Relative Humidity = %.2f\n", _humidity[1].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[2] Relative Humidity = -\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.println();
|
||||||
|
}
|
||||||
|
|
||||||
void Measurements::maxPeriod(MeasurementType type, int max) {
|
void Measurements::maxPeriod(MeasurementType type, int max) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case Temperature:
|
case Temperature:
|
||||||
@ -570,6 +650,77 @@ String Measurements::measurementTypeStr(MeasurementType type) {
|
|||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Measurements::printCurrentPMAverage(int ch) {
|
||||||
|
int idx = ch - 1;
|
||||||
|
|
||||||
|
if (utils::isValidPm(_pm_01[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 1.0 = %.2f ug/m3\n", ch, _pm_01[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 1.0 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm(_pm_25[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 2.5 = %.2f ug/m3\n", ch, _pm_25[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 2.5 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm(_pm_10[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 10 = %.2f ug/m3\n", ch, _pm_10[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Atmospheric PM 10 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm(_pm_01_sp[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 1.0 = %.2f ug/m3\n", ch, _pm_01_sp[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 1.0 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm(_pm_25_sp[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 2.5 = %.2f ug/m3\n", ch, _pm_25_sp[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 2.5 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm(_pm_10_sp[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 10 = %.2f ug/m3\n", ch, _pm_10_sp[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Standard Particle PM 10 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm03Count(_pm_03_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 0.3 = %.1f\n", ch, _pm_03_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 0.3 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm03Count(_pm_05_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 0.5 = %.1f\n", ch, _pm_05_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 0.5 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm03Count(_pm_01_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 1.0 = %.1f\n", ch, _pm_01_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 1.0 = -\n", ch);
|
||||||
|
}
|
||||||
|
if (utils::isValidPm03Count(_pm_25_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 2.5 = %.1f\n", ch, _pm_25_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 2.5 = -\n", ch);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_pm_5_pc[idx].listValues.empty() == false) {
|
||||||
|
if (utils::isValidPm03Count(_pm_5_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 5.0 = %.1f\n", ch, _pm_5_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 5.0 = -\n", ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (_pm_10_pc[idx].listValues.empty() == false) {
|
||||||
|
if (utils::isValidPm03Count(_pm_10_pc[idx].update.avg)) {
|
||||||
|
Serial.printf("[%d] Particle Count 10 = %.1f\n", ch, _pm_10_pc[idx].update.avg);
|
||||||
|
} else {
|
||||||
|
Serial.printf("[%d] Particle Count 10 = -\n", ch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Measurements::validateChannel(int ch) {
|
void Measurements::validateChannel(int ch) {
|
||||||
if (ch != 1 && ch != 2) {
|
if (ch != 1 && ch != 2) {
|
||||||
Serial.printf("ERROR! Channel %d is undefined. Only channel 1 or 2 is the optional value!", ch);
|
Serial.printf("ERROR! Channel %d is undefined. Only channel 1 or 2 is the optional value!", ch);
|
||||||
|
@ -88,6 +88,8 @@ public:
|
|||||||
PM10_PC, // Particle 10 count
|
PM10_PC, // Particle 10 count
|
||||||
};
|
};
|
||||||
|
|
||||||
|
void printCurrentAverage();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Set each MeasurementType maximum period length for moving average
|
* @brief Set each MeasurementType maximum period length for moving average
|
||||||
*
|
*
|
||||||
@ -258,6 +260,8 @@ private:
|
|||||||
*/
|
*/
|
||||||
void validateChannel(int ch);
|
void validateChannel(int ch);
|
||||||
|
|
||||||
|
void printCurrentPMAverage(int ch);
|
||||||
|
|
||||||
JSONVar buildOutdoor(bool localServer, AgFirmwareMode fwMode);
|
JSONVar buildOutdoor(bool localServer, AgFirmwareMode fwMode);
|
||||||
JSONVar buildIndoor(bool localServer);
|
JSONVar buildIndoor(bool localServer);
|
||||||
JSONVar buildPMS(int ch, bool allCh, bool withTempHum, bool compensate);
|
JSONVar buildPMS(int ch, bool allCh, bool withTempHum, bool compensate);
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
#include "Main/utils.h"
|
#include "Main/utils.h"
|
||||||
|
|
||||||
#ifndef GIT_VERSION
|
#ifndef GIT_VERSION
|
||||||
#define GIT_VERSION "3.3.6-snap"
|
#define GIT_VERSION "3.3.8-snap"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user