forked from airgradienthq/arduino
@ -429,13 +429,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
void showServerConfig(void) {
|
void showServerConfig(void) {
|
||||||
Serial.println("Server configuration: ");
|
Serial.println("Server configuration: ");
|
||||||
Serial.printf(" inF: %s\r\n", config.inF ? "true" : "false");
|
Serial.printf("inF: %s\r\n", config.inF ? "true" : "false");
|
||||||
Serial.printf(" inUSAQI: %s\r\n",
|
Serial.printf("inUSAQI: %s\r\n", config.inUSAQI ? "true" : "false");
|
||||||
config.inUSAQI ? "true" : "false");
|
Serial.printf("useRGBLedBar: %d\r\n", (int)config.useRGBLedBar);
|
||||||
Serial.printf(" useRGBLedBar: %d\r\n", (int)config.useRGBLedBar);
|
Serial.printf("Model: %s\r\n", config.models);
|
||||||
Serial.printf(" Model: %s\r\n", config.models);
|
Serial.printf("MQTT Broker: %s\r\n", config.mqttBrokers);
|
||||||
Serial.printf(" Mqtt Broker: %s\r\n", config.mqttBrokers);
|
Serial.printf("S8 calibration period: %d\r\n", co2AbcCalib);
|
||||||
Serial.printf(" S8 calib period: %d\r\n", co2AbcCalib);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -566,19 +565,19 @@ public:
|
|||||||
/** init client */
|
/** init client */
|
||||||
client = esp_mqtt_client_init(&config);
|
client = esp_mqtt_client_init(&config);
|
||||||
if (client == NULL) {
|
if (client == NULL) {
|
||||||
Serial.println("mqtt client init failed");
|
Serial.println("MQTT client init failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Register event */
|
/** Register event */
|
||||||
if (esp_mqtt_client_register_event(client, MQTT_EVENT_ANY,
|
if (esp_mqtt_client_register_event(client, MQTT_EVENT_ANY,
|
||||||
mqtt_event_handler, NULL) != ESP_OK) {
|
mqtt_event_handler, NULL) != ESP_OK) {
|
||||||
Serial.println("mqtt client register event failed");
|
Serial.println("MQTT client register event failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esp_mqtt_client_start(client) != ESP_OK) {
|
if (esp_mqtt_client_start(client) != ESP_OK) {
|
||||||
Serial.println("mqtt client start failed");
|
Serial.println("MQTT client start failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -711,8 +710,10 @@ bool hasSensorSGP = true;
|
|||||||
bool hasSensorSHT = true;
|
bool hasSensorSHT = true;
|
||||||
int pmFailCount = 0;
|
int pmFailCount = 0;
|
||||||
uint32_t factoryBtnPressTime = 0;
|
uint32_t factoryBtnPressTime = 0;
|
||||||
String mdnsModelName = "";
|
String mdnsModelName = "I-9PSL";
|
||||||
int getCO2FailCount = 0;
|
int getCO2FailCount = 0;
|
||||||
|
uint32_t addToDashboardTime;
|
||||||
|
bool isAddToDashboard = true;
|
||||||
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, displayAndLedBarUpdate);
|
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, displayAndLedBarUpdate);
|
||||||
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL,
|
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL,
|
||||||
updateServerConfiguration);
|
updateServerConfiguration);
|
||||||
@ -915,7 +916,7 @@ static void co2Update(void) {
|
|||||||
if (value >= 0) {
|
if (value >= 0) {
|
||||||
co2Ppm = value;
|
co2Ppm = value;
|
||||||
getCO2FailCount = 0;
|
getCO2FailCount = 0;
|
||||||
Serial.printf("CO2 index: %d\r\n", co2Ppm);
|
Serial.printf("CO2 (ppm): %d\r\n", co2Ppm);
|
||||||
} else {
|
} else {
|
||||||
getCO2FailCount++;
|
getCO2FailCount++;
|
||||||
Serial.printf("Get CO2 failed: %d\r\n", getCO2FailCount);
|
Serial.printf("Get CO2 failed: %d\r\n", getCO2FailCount);
|
||||||
@ -1082,7 +1083,7 @@ void webServerHandler(void *param) {
|
|||||||
static void webServerInit(void) {
|
static void webServerInit(void) {
|
||||||
String host = "airgradient_" + getDevId();
|
String host = "airgradient_" + getDevId();
|
||||||
if (!MDNS.begin(host)) {
|
if (!MDNS.begin(host)) {
|
||||||
Serial.println("Init MDNS failed");
|
Serial.println("Init mDNS failed");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1091,9 +1092,16 @@ static void webServerInit(void) {
|
|||||||
webServer.on("/metrics", HTTP_GET, webServerMetricsGet);
|
webServer.on("/metrics", HTTP_GET, webServerMetricsGet);
|
||||||
webServer.begin();
|
webServer.begin();
|
||||||
MDNS.addService("http", "tcp", 80);
|
MDNS.addService("http", "tcp", 80);
|
||||||
MDNS.addServiceTxt("http", "_tcp", "model", ag.getBoardName());
|
MDNS.addServiceTxt("http", "_tcp", "model", mdnsModelName);
|
||||||
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
||||||
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
||||||
|
MDNS.addServiceTxt("http", "_tcp", "vendor", "AirGradient");
|
||||||
|
MDNS.addService("http", "tcp", 80);
|
||||||
|
MDNS.addService("_airgradient", "tcp", 80);
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "model", mdnsModelName);
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "serialno", getDevId());
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "fw_ver", ag.getVersion());
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "vendor", "AirGradient");
|
||||||
|
|
||||||
if (xTaskCreate(webServerHandler, "webserver", 1024 * 4, NULL, 5, NULL) !=
|
if (xTaskCreate(webServerHandler, "webserver", 1024 * 4, NULL, 5, NULL) !=
|
||||||
pdTRUE) {
|
pdTRUE) {
|
||||||
@ -1171,9 +1179,9 @@ static void createMqttTask(void) {
|
|||||||
String topic = "airgradient/readings/" + getDevId();
|
String topic = "airgradient/readings/" + getDevId();
|
||||||
if (agMqtt.publish(topic.c_str(), syncData.c_str(),
|
if (agMqtt.publish(topic.c_str(), syncData.c_str(),
|
||||||
syncData.length())) {
|
syncData.length())) {
|
||||||
Serial.println("Mqtt sync success");
|
Serial.println("MQTT sync success");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Mqtt sync failure");
|
Serial.println("MQTT sync failure");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1336,7 +1344,7 @@ static void displayShowDashboard(String err) {
|
|||||||
u8g2.drawStr(105, 10, strBuf);
|
u8g2.drawStr(105, 10, strBuf);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Disp show error: " + err);
|
Serial.println("Display show error: " + err);
|
||||||
int strWidth = u8g2.getStrWidth(err.c_str());
|
int strWidth = u8g2.getStrWidth(err.c_str());
|
||||||
u8g2.drawStr((126 - strWidth) / 2, 10, err.c_str());
|
u8g2.drawStr((126 - strWidth) / 2, 10, err.c_str());
|
||||||
|
|
||||||
@ -1753,7 +1761,7 @@ static void updateServerConfiguration(void) {
|
|||||||
if (hasSensorS8) {
|
if (hasSensorS8) {
|
||||||
co2Calibration();
|
co2Calibration();
|
||||||
} else {
|
} else {
|
||||||
Serial.println("CO2 S8 not available, calib ignored");
|
Serial.println("CO2 S8 not available, calibration ignored");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1765,13 +1773,13 @@ static void updateServerConfiguration(void) {
|
|||||||
int curHour = ag.s8.getAbcPeriod();
|
int curHour = ag.s8.getAbcPeriod();
|
||||||
Serial.printf("Current config: %d (hours)\r\n", curHour);
|
Serial.printf("Current config: %d (hours)\r\n", curHour);
|
||||||
if (curHour == newHour) {
|
if (curHour == newHour) {
|
||||||
Serial.println("set 'abcDays' ignored");
|
Serial.println("Set 'abcDays' ignored");
|
||||||
} else {
|
} else {
|
||||||
if (ag.s8.setAbcPeriod(agServer.getCo2AbcDaysConfig() * 24) ==
|
if (ag.s8.setAbcPeriod(agServer.getCo2AbcDaysConfig() * 24) ==
|
||||||
false) {
|
false) {
|
||||||
Serial.println("Set S8 abcDays period calib failed");
|
Serial.println("Set S8 abcDays period calibration failed");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Set S8 abcDays period calib success");
|
Serial.println("Set S8 abcDays period calibration success");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1796,10 +1804,10 @@ static void updateServerConfiguration(void) {
|
|||||||
mqttTask = NULL;
|
mqttTask = NULL;
|
||||||
}
|
}
|
||||||
if (agMqtt.begin(mqttUri)) {
|
if (agMqtt.begin(mqttUri)) {
|
||||||
Serial.println("Connect to new mqtt broker success");
|
Serial.println("Connect to MQTT broker successful");
|
||||||
createMqttTask();
|
createMqttTask();
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Connect to new mqtt broker failed");
|
Serial.println("Connect to MQTT broker failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -2102,7 +2110,16 @@ static void dispSmHandler(int sm) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case APP_SM_SENSOR_CONFIG_FAILED: {
|
case APP_SM_SENSOR_CONFIG_FAILED: {
|
||||||
displayShowDashboard("Add to Dashboard");
|
uint32_t ms = (uint32_t)(millis() - addToDashboardTime);
|
||||||
|
if (ms >= 5000) {
|
||||||
|
addToDashboardTime = millis();
|
||||||
|
if (isAddToDashboard) {
|
||||||
|
displayShowDashboard("Add to Dashboard");
|
||||||
|
} else {
|
||||||
|
displayShowDashboard(getDevId());
|
||||||
|
}
|
||||||
|
isAddToDashboard = !isAddToDashboard;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case APP_SM_NORMAL: {
|
case APP_SM_NORMAL: {
|
||||||
@ -2204,10 +2221,10 @@ static void tvocUpdate(void) {
|
|||||||
noxRawIndex = ag.sgp41.getNoxRaw();
|
noxRawIndex = ag.sgp41.getNoxRaw();
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.printf(" TVOC index: %d\r\n", tvocIndex);
|
Serial.printf("TVOC index: %d\r\n", tvocIndex);
|
||||||
Serial.printf("TVOC raw index: %d\r\n", tvocRawIndex);
|
Serial.printf("TVOC raw: %d\r\n", tvocRawIndex);
|
||||||
Serial.printf(" NOx index: %d\r\n", noxIndex);
|
Serial.printf("NOx index: %d\r\n", noxIndex);
|
||||||
Serial.printf(" NOx raw index: %d\r\n", noxRawIndex);
|
Serial.printf("NOx raw: %d\r\n", noxRawIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -2222,14 +2239,14 @@ static void pmUpdate(void) {
|
|||||||
pm03PCount = ag.pms5003.getPm03ParticleCount();
|
pm03PCount = ag.pms5003.getPm03ParticleCount();
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.printf(" PMS0.1: %d\r\n", pm01);
|
Serial.printf("PM1 ug/m3: %d\r\n", pm01);
|
||||||
Serial.printf(" PMS2.5: %d\r\n", pm25);
|
Serial.printf("PM2.5 ug/m3: %d\r\n", pm25);
|
||||||
Serial.printf(" PMS10.0: %d\r\n", pm10);
|
Serial.printf("PM10 ug/m3: %d\r\n", pm10);
|
||||||
Serial.printf("PMS3.0 Count: %d\r\n", pm03PCount);
|
Serial.printf("PM0.3 Count: %d\r\n", pm03PCount);
|
||||||
pmFailCount = 0;
|
pmFailCount = 0;
|
||||||
} else {
|
} else {
|
||||||
pmFailCount++;
|
pmFailCount++;
|
||||||
Serial.printf("PM read failed: %d\r\n", pmFailCount);
|
Serial.printf("PMS read failed: %d\r\n", pmFailCount);
|
||||||
if (pmFailCount >= 3) {
|
if (pmFailCount >= 3) {
|
||||||
pm01 = -1;
|
pm01 = -1;
|
||||||
pm25 = -1;
|
pm25 = -1;
|
||||||
@ -2261,10 +2278,10 @@ static void tempHumUpdate(void) {
|
|||||||
temp = ag.sht.getTemperature();
|
temp = ag.sht.getTemperature();
|
||||||
hum = ag.sht.getRelativeHumidity();
|
hum = ag.sht.getRelativeHumidity();
|
||||||
|
|
||||||
Serial.printf("Temperature: %0.2f\r\n", temp);
|
Serial.printf("Temperature in C: %0.2f\r\n", temp);
|
||||||
Serial.printf(" Humidity: %d\r\n", hum);
|
Serial.printf("Relative Humidity: %d\r\n", hum);
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Measure SHT failed");
|
Serial.println("SHT read failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -430,13 +430,12 @@ public:
|
|||||||
*/
|
*/
|
||||||
void showServerConfig(void) {
|
void showServerConfig(void) {
|
||||||
Serial.println("Server configuration: ");
|
Serial.println("Server configuration: ");
|
||||||
Serial.printf(" inF: %s\r\n", config.inF ? "true" : "false");
|
Serial.printf("inF: %s\r\n", config.inF ? "true" : "false");
|
||||||
Serial.printf(" inUSAQI: %s\r\n",
|
Serial.printf("inUSAQI: %s\r\n", config.inUSAQI ? "true" : "false");
|
||||||
config.inUSAQI ? "true" : "false");
|
Serial.printf("useRGBLedBar: %d\r\n", (int)config.useRGBLedBar);
|
||||||
Serial.printf(" useRGBLedBar: %d\r\n", (int)config.useRGBLedBar);
|
Serial.printf("Model: %s\r\n", config.models);
|
||||||
Serial.printf(" Model: %s\r\n", config.models);
|
Serial.printf("MQTT Broker: %s\r\n", config.mqttBrokers);
|
||||||
Serial.printf(" Mqtt Broker: %s\r\n", config.mqttBrokers);
|
Serial.printf("S8 calibration period: %d\r\n", co2AbcCalib);
|
||||||
Serial.printf(" S8 calib period: %d\r\n", co2AbcCalib);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -567,19 +566,19 @@ public:
|
|||||||
/** init client */
|
/** init client */
|
||||||
client = esp_mqtt_client_init(&config);
|
client = esp_mqtt_client_init(&config);
|
||||||
if (client == NULL) {
|
if (client == NULL) {
|
||||||
Serial.println("mqtt client init failed");
|
Serial.println("MQTT client init failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Register event */
|
/** Register event */
|
||||||
if (esp_mqtt_client_register_event(client, MQTT_EVENT_ANY,
|
if (esp_mqtt_client_register_event(client, MQTT_EVENT_ANY,
|
||||||
mqtt_event_handler, NULL) != ESP_OK) {
|
mqtt_event_handler, NULL) != ESP_OK) {
|
||||||
Serial.println("mqtt client register event failed");
|
Serial.println("MQTT client register event failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (esp_mqtt_client_start(client) != ESP_OK) {
|
if (esp_mqtt_client_start(client) != ESP_OK) {
|
||||||
Serial.println("mqtt client start failed");
|
Serial.println("MQTT client start failed");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -701,7 +700,8 @@ const int targetCount = 20;
|
|||||||
enum {
|
enum {
|
||||||
FW_MODE_PST, /** PMS5003T, S8 and SGP41 */
|
FW_MODE_PST, /** PMS5003T, S8 and SGP41 */
|
||||||
FW_MODE_PPT, /** PMS5003T_1, PMS5003T_2, SGP41 */
|
FW_MODE_PPT, /** PMS5003T_1, PMS5003T_2, SGP41 */
|
||||||
FW_MODE_PP /** PMS5003T_1, PMS5003T_2 */
|
FW_MODE_PP, /** PMS5003T_1, PMS5003T_2 */
|
||||||
|
FW_MDOE_PS /** PMS5003T, S8 */
|
||||||
};
|
};
|
||||||
int fw_mode = FW_MODE_PST;
|
int fw_mode = FW_MODE_PST;
|
||||||
|
|
||||||
@ -950,9 +950,10 @@ void boardInit(void) {
|
|||||||
|
|
||||||
if (hasSensorS8 == false) {
|
if (hasSensorS8 == false) {
|
||||||
fw_mode = FW_MODE_PP;
|
fw_mode = FW_MODE_PP;
|
||||||
Serial.println("Can not detect SGP run mode 'PP'");
|
Serial.println("Can not detect SGP run mode 'O-1PP'");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Can not detect SGP run mode 'PST' without SGP");
|
Serial.println("Can not detect SGP run mode 'O-1PS'");
|
||||||
|
fw_mode = FW_MDOE_PS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1004,6 +1005,21 @@ void boardInit(void) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Serial.printf("Firmware Mode: %s\r\n", getFwMode(fw_mode));
|
Serial.printf("Firmware Mode: %s\r\n", getFwMode(fw_mode));
|
||||||
|
switch (fw_mode) {
|
||||||
|
case FW_MODE_PP:
|
||||||
|
mdnsModelName = "O-1PP";
|
||||||
|
break;
|
||||||
|
case FW_MODE_PPT:
|
||||||
|
mdnsModelName = "O-1PPT";
|
||||||
|
break;
|
||||||
|
case FW_MODE_PST:
|
||||||
|
mdnsModelName = "O-1PST";
|
||||||
|
break;
|
||||||
|
case FW_MDOE_PS:
|
||||||
|
mdnsModelName = "0-1PS";
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void failedHandler(String msg) {
|
void failedHandler(String msg) {
|
||||||
@ -1016,7 +1032,7 @@ void failedHandler(String msg) {
|
|||||||
void co2Calibration(void) {
|
void co2Calibration(void) {
|
||||||
/** Count down for co2CalibCountdown secs */
|
/** Count down for co2CalibCountdown secs */
|
||||||
for (int i = 0; i < SENSOR_CO2_CALIB_COUNTDOWN_MAX; i++) {
|
for (int i = 0; i < SENSOR_CO2_CALIB_COUNTDOWN_MAX; i++) {
|
||||||
Serial.printf("Start CO2 calib after %d sec\r\n",
|
Serial.printf("Start CO2 calibration after %d sec\r\n",
|
||||||
SENSOR_CO2_CALIB_COUNTDOWN_MAX - i);
|
SENSOR_CO2_CALIB_COUNTDOWN_MAX - i);
|
||||||
delay(1000);
|
delay(1000);
|
||||||
}
|
}
|
||||||
@ -1024,16 +1040,16 @@ void co2Calibration(void) {
|
|||||||
if (ag.s8.setBaselineCalibration()) {
|
if (ag.s8.setBaselineCalibration()) {
|
||||||
Serial.println("Calibration success");
|
Serial.println("Calibration success");
|
||||||
delay(1000);
|
delay(1000);
|
||||||
Serial.println("Wait for calib finish...");
|
Serial.println("Wait for calibration to finish...");
|
||||||
int count = 0;
|
int count = 0;
|
||||||
while (ag.s8.isBaseLineCalibrationDone() == false) {
|
while (ag.s8.isBaseLineCalibrationDone() == false) {
|
||||||
delay(1000);
|
delay(1000);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
Serial.printf("Calib finish after %d sec\r\n", count);
|
Serial.printf("Calibration finished after %d sec\r\n", count);
|
||||||
delay(2000);
|
delay(2000);
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Calibration failure!!!");
|
Serial.println("Calibration failure");
|
||||||
delay(2000);
|
delay(2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1055,7 +1071,7 @@ static void updateWiFiConnect(void) {
|
|||||||
lastRetry = millis();
|
lastRetry = millis();
|
||||||
WiFi.reconnect();
|
WiFi.reconnect();
|
||||||
|
|
||||||
Serial.printf("Re-Connect WiFi\r\n");
|
Serial.printf("Re-Connect to WiFi\r\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1070,10 +1086,10 @@ static void tvocUpdate(void) {
|
|||||||
noxRawIndex = ag.sgp41.getNoxRaw();
|
noxRawIndex = ag.sgp41.getNoxRaw();
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.printf(" TVOC index: %d\r\n", tvocIndex);
|
Serial.printf("TVOC index: %d\r\n", tvocIndex);
|
||||||
Serial.printf("TVOC raw index: %d\r\n", tvocRawIndex);
|
Serial.printf("TVOC raw: %d\r\n", tvocRawIndex);
|
||||||
Serial.printf(" NOx index: %d\r\n", noxIndex);
|
Serial.printf("NOx index: %d\r\n", noxIndex);
|
||||||
Serial.printf(" NOx raw index: %d\r\n", noxRawIndex);
|
Serial.printf("NOx raw: %d\r\n", noxRawIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1094,12 +1110,12 @@ static void pmUpdate(void) {
|
|||||||
pmsResult_1 = true;
|
pmsResult_1 = true;
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.printf("[1] PMS0.1: %d\r\n", pm01_1);
|
Serial.printf("[1] PM1 ug/m3: %d\r\n", pm01_1);
|
||||||
Serial.printf("[1] PMS2.5: %d\r\n", pm25_1);
|
Serial.printf("[1] PM2.5 ug/m3: %d\r\n", pm25_1);
|
||||||
Serial.printf("[1] PMS10.0: %d\r\n", pm10_1);
|
Serial.printf("[1] PM10 ug/m3: %d\r\n", pm10_1);
|
||||||
Serial.printf("[1]PMS3.0 Count: %d\r\n", pm03PCount_1);
|
Serial.printf("[1] PM3.0 Count: %d\r\n", pm03PCount_1);
|
||||||
Serial.printf("[1] Temperature: %0.2f\r\n", temp_1);
|
Serial.printf("[1] Temperature in C: %0.2f\r\n", temp_1);
|
||||||
Serial.printf("[1] Humidity: %d\r\n", hum_1);
|
Serial.printf("[1] Relative Humidity: %d\r\n", hum_1);
|
||||||
} else {
|
} else {
|
||||||
pm01_1 = -1;
|
pm01_1 = -1;
|
||||||
pm25_1 = -1;
|
pm25_1 = -1;
|
||||||
@ -1120,12 +1136,12 @@ static void pmUpdate(void) {
|
|||||||
pmsResult_2 = true;
|
pmsResult_2 = true;
|
||||||
|
|
||||||
Serial.println();
|
Serial.println();
|
||||||
Serial.printf("[2] PMS0.1: %d\r\n", pm01_2);
|
Serial.printf("[2] PM1 ug/m3: %d\r\n", pm01_2);
|
||||||
Serial.printf("[2] PMS2.5: %d\r\n", pm25_2);
|
Serial.printf("[2] PM2.5 ug/m3: %d\r\n", pm25_2);
|
||||||
Serial.printf("[2] PMS10.0: %d\r\n", pm10_2);
|
Serial.printf("[2] PM10 ug/m3: %d\r\n", pm10_2);
|
||||||
Serial.printf("[2]PMS3.0 Count: %d\r\n", pm03PCount_2);
|
Serial.printf("[2] PM3.0 Count: %d\r\n", pm03PCount_2);
|
||||||
Serial.printf("[2] Temperature: %0.2f\r\n", temp_2);
|
Serial.printf("[2] Temperature in C: %0.2f\r\n", temp_2);
|
||||||
Serial.printf("[2] Humidity: %d\r\n", hum_2);
|
Serial.printf("[2] Relative Humidity: %d\r\n", hum_2);
|
||||||
} else {
|
} else {
|
||||||
pm01_2 = -1;
|
pm01_2 = -1;
|
||||||
pm25_2 = -1;
|
pm25_2 = -1;
|
||||||
@ -1193,7 +1209,7 @@ static void co2Update(void) {
|
|||||||
if (value >= 0) {
|
if (value >= 0) {
|
||||||
co2Ppm = value;
|
co2Ppm = value;
|
||||||
getCO2FailCount = 0;
|
getCO2FailCount = 0;
|
||||||
Serial.printf("CO2 index: %d\r\n", co2Ppm);
|
Serial.printf("CO2 ppm: %d\r\n", co2Ppm);
|
||||||
} else {
|
} else {
|
||||||
getCO2FailCount++;
|
getCO2FailCount++;
|
||||||
Serial.printf("Get CO2 failed: %d\r\n", getCO2FailCount);
|
Serial.printf("Get CO2 failed: %d\r\n", getCO2FailCount);
|
||||||
@ -1211,7 +1227,7 @@ static void updateServerConfiguration(void) {
|
|||||||
if (hasSensorS8) {
|
if (hasSensorS8) {
|
||||||
co2Calibration();
|
co2Calibration();
|
||||||
} else {
|
} else {
|
||||||
Serial.println("CO2 S8 not available, calib ignored");
|
Serial.println("CO2 S8 not available, calibration ignored");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1223,13 +1239,13 @@ static void updateServerConfiguration(void) {
|
|||||||
int curHour = ag.s8.getAbcPeriod();
|
int curHour = ag.s8.getAbcPeriod();
|
||||||
Serial.printf("Current config: %d (hours)\r\n", curHour);
|
Serial.printf("Current config: %d (hours)\r\n", curHour);
|
||||||
if (curHour == newHour) {
|
if (curHour == newHour) {
|
||||||
Serial.println("set 'abcDays' ignored");
|
Serial.println("Set 'abcDays' ignored");
|
||||||
} else {
|
} else {
|
||||||
if (ag.s8.setAbcPeriod(agServer.getCo2AbcDaysConfig() * 24) ==
|
if (ag.s8.setAbcPeriod(agServer.getCo2AbcDaysConfig() * 24) ==
|
||||||
false) {
|
false) {
|
||||||
Serial.println("Set S8 abcDays period calib failed");
|
Serial.println("Set S8 abcDays period calibration failed");
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Set S8 abcDays period calib success");
|
Serial.println("Set S8 abcDays period calibration success");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1246,10 +1262,10 @@ static void updateServerConfiguration(void) {
|
|||||||
mqttTask = NULL;
|
mqttTask = NULL;
|
||||||
}
|
}
|
||||||
if (agMqtt.begin(mqttUri)) {
|
if (agMqtt.begin(mqttUri)) {
|
||||||
Serial.println("Connect to new mqtt broker success");
|
Serial.println("Connect to MQTT broker successful");
|
||||||
createMqttTask();
|
createMqttTask();
|
||||||
} else {
|
} else {
|
||||||
Serial.println("Connect to new mqtt broker failed");
|
Serial.println("Connect to MQTT broker failed");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1366,6 +1382,8 @@ static const char *getFwMode(int mode) {
|
|||||||
return "FW_MODE_PPT";
|
return "FW_MODE_PPT";
|
||||||
case FW_MODE_PP:
|
case FW_MODE_PP:
|
||||||
return "FW_MODE_PP";
|
return "FW_MODE_PP";
|
||||||
|
case FW_MDOE_PS:
|
||||||
|
return "FW_MODE_PS";
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -1394,9 +1412,16 @@ static void webServerInit(void) {
|
|||||||
webServer.on("/measures/current", HTTP_GET, webServerMeasureCurrentGet);
|
webServer.on("/measures/current", HTTP_GET, webServerMeasureCurrentGet);
|
||||||
webServer.begin();
|
webServer.begin();
|
||||||
MDNS.addService("http", "tcp", 80);
|
MDNS.addService("http", "tcp", 80);
|
||||||
MDNS.addServiceTxt("http", "_tcp", "model", ag.getBoardName());
|
MDNS.addServiceTxt("http", "_tcp", "model", mdnsModelName);
|
||||||
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
||||||
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
||||||
|
MDNS.addServiceTxt("http", "_tcp", "vendor", "AirGradient");
|
||||||
|
MDNS.addService("http", "tcp", 80);
|
||||||
|
MDNS.addService("_airgradient", "tcp", 80);
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "model", mdnsModelName);
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "serialno", getDevId());
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "fw_ver", ag.getVersion());
|
||||||
|
MDNS.addServiceTxt("airgradient", "_tcp", "vendor", "AirGradient");
|
||||||
|
|
||||||
if (xTaskCreate(webServerHandler, "webserver", 1024 * 4, NULL, 5, NULL) !=
|
if (xTaskCreate(webServerHandler, "webserver", 1024 * 4, NULL, 5, NULL) !=
|
||||||
pdTRUE) {
|
pdTRUE) {
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
name=AirGradient Air Quality Sensor
|
name=AirGradient Air Quality Sensor
|
||||||
version=3.0.6
|
version=3.0.7
|
||||||
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.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#include "AirGradient.h"
|
#include "AirGradient.h"
|
||||||
|
|
||||||
#define AG_LIB_VER "3.0.6"
|
#define AG_LIB_VER "3.0.7"
|
||||||
|
|
||||||
AirGradient::AirGradient(BoardType type)
|
AirGradient::AirGradient(BoardType type)
|
||||||
: pms5003(type), pms5003t_1(type), pms5003t_2(type), s8(type), sgp41(type),
|
: pms5003(type), pms5003t_1(type), pms5003t_2(type), s8(type), sgp41(type),
|
||||||
|
Reference in New Issue
Block a user