mirror of
https://github.com/airgradienthq/arduino.git
synced 2025-07-29 16:37:17 +02:00
Merge branch 'master' into develop
This commit is contained in:
4
.github/workflows/check.yml
vendored
4
.github/workflows/check.yml
vendored
@ -5,8 +5,8 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
example:
|
||||
- "BASIC_v4"
|
||||
- "ONE_I-9PSL"
|
||||
- "BASIC"
|
||||
- "ONE"
|
||||
- "Open_Air"
|
||||
- "TestCO2"
|
||||
- "TestPM"
|
||||
|
@ -90,14 +90,14 @@ enum {
|
||||
#define WIFI_CONNECT_RETRY_MS 10000 /** ms */
|
||||
#define LED_BAR_COUNT_INIT_VALUE (-1) /** */
|
||||
#define LED_BAR_ANIMATION_PERIOD 100 /** ms */
|
||||
#define DISP_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SERVER_CONFIG_UPDATE_INTERVAL 30000 /** ms */
|
||||
#define DISP_UPDATE_INTERVAL 2500 /** ms */
|
||||
#define SERVER_CONFIG_UPDATE_INTERVAL 15000 /** ms */
|
||||
#define SERVER_SYNC_INTERVAL 60000 /** ms */
|
||||
#define MQTT_SYNC_INTERVAL 60000 /** ms */
|
||||
#define SENSOR_CO2_CALIB_COUNTDOWN_MAX 5 /** sec */
|
||||
#define SENSOR_TVOC_UPDATE_INTERVAL 1000 /** ms */
|
||||
#define SENSOR_CO2_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SENSOR_PM_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SENSOR_CO2_UPDATE_INTERVAL 4000 /** ms */
|
||||
#define SENSOR_PM_UPDATE_INTERVAL 2000 /** ms */
|
||||
#define SENSOR_TEMP_HUM_UPDATE_INTERVAL 2000 /** ms */
|
||||
#define DISPLAY_DELAY_SHOW_CONTENT_MS 2000 /** ms */
|
||||
#define WIFI_HOTSPOT_PASSWORD_DEFAULT \
|
||||
@ -710,8 +710,10 @@ bool hasSensorSGP = true;
|
||||
bool hasSensorSHT = true;
|
||||
int pmFailCount = 0;
|
||||
uint32_t factoryBtnPressTime = 0;
|
||||
String mdnsModelName = "";
|
||||
AgSchedule dispLedSchedule(DISP_UPDATE_INTERVAL, displayAndLedBarUpdate);
|
||||
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL, updateServerConfiguration);
|
||||
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL,
|
||||
updateServerConfiguration);
|
||||
AgSchedule serverSchedule(SERVER_SYNC_INTERVAL, sendDataToServer);
|
||||
AgSchedule co2Schedule(SENSOR_CO2_UPDATE_INTERVAL, co2Update);
|
||||
AgSchedule pmsSchedule(SENSOR_PM_UPDATE_INTERVAL, pmUpdate);
|
||||
@ -734,7 +736,8 @@ void setup() {
|
||||
u8g2.begin();
|
||||
|
||||
/** Show boot display */
|
||||
displayShowText("One V9", "Lib Ver: " + ag.getVersion(), "");
|
||||
Serial.println("Firmware Version: "+ag.getVersion());
|
||||
displayShowText("One V9", "FW Ver: " + ag.getVersion(), "");
|
||||
delay(DISPLAY_DELAY_SHOW_CONTENT_MS);
|
||||
|
||||
/** Init sensor */
|
||||
@ -744,7 +747,7 @@ void setup() {
|
||||
agServer.begin();
|
||||
|
||||
/** Run LED test on start up */
|
||||
displayShowText("Press now for", "LED test", "");
|
||||
displayShowText("Press now for", "LED test &", "offline mode");
|
||||
bool test = false;
|
||||
uint32_t stime = millis();
|
||||
while (1) {
|
||||
@ -760,9 +763,9 @@ void setup() {
|
||||
}
|
||||
if (test) {
|
||||
ledTest();
|
||||
} else {
|
||||
connectToWifi();
|
||||
}
|
||||
/** WIFI connect */
|
||||
connectToWifi();
|
||||
|
||||
/**
|
||||
* Send first data to ping server and get server configuration
|
||||
@ -817,6 +820,7 @@ void loop() {
|
||||
}
|
||||
|
||||
if (hasSensorSHT) {
|
||||
delay(100);
|
||||
tempHumSchedule.run();
|
||||
}
|
||||
|
||||
@ -1068,7 +1072,10 @@ static void webServerInit(void) {
|
||||
webServer.on("/metrics", HTTP_GET, webServerMetricsGet);
|
||||
webServer.begin();
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
MDNS.addServiceTxt("http", "_tcp", "board", ag.getBoardName());
|
||||
if (agServer.getModelName().isEmpty() != true) {
|
||||
MDNS.addServiceTxt("http", "_tcp", "model", agServer.getModelName());
|
||||
mdnsModelName = agServer.getModelName();
|
||||
}
|
||||
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
||||
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
||||
|
||||
@ -1168,12 +1175,12 @@ static void factoryConfigReset(void) {
|
||||
if (ms >= 2000) {
|
||||
// Show display message: For factory keep for x seconds
|
||||
// Count display.
|
||||
displayShowText("For factory reset", "keep pressed", "for 8 sec");
|
||||
displayShowText("Factory reset", "keep pressed", "for 8 sec");
|
||||
|
||||
int count = 7;
|
||||
while (ag.button.getState() == ag.button.BUTTON_PRESSED) {
|
||||
delay(1000);
|
||||
displayShowText("For factory reset", "keep pressed",
|
||||
displayShowText("Factory reset", "keep pressed",
|
||||
"for " + String(count) + " sec");
|
||||
count--;
|
||||
// ms = (uint32_t)(millis() - factoryBtnPressTime);
|
||||
@ -1776,6 +1783,11 @@ static void updateServerConfiguration(void) {
|
||||
Serial.println("Connect to new mqtt broker failed");
|
||||
}
|
||||
}
|
||||
|
||||
if (mdnsModelName != agServer.getModelName()) {
|
||||
MDNS.addServiceTxt("http", "_tcp", "model", agServer.getModelName());
|
||||
mdnsModelName = agServer.getModelName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ enum {
|
||||
APP_SM_SERVER_LOST, /** Connected to WiFi network but the server cannot be
|
||||
reached through the internet, e.g. blocked by firewall
|
||||
*/
|
||||
APP_SM_SENSOR_CONFIG_FAILED, /** Server is reachable but there is some
|
||||
APP_SM_SENSOR_CONFIG_FAILED, /** Server is reachabFirmware nodele but there is some
|
||||
configuration issue to be fixed on the server
|
||||
side */
|
||||
APP_SM_NORMAL,
|
||||
@ -92,14 +92,14 @@ enum {
|
||||
#define LED_BAR_COUNT_INIT_VALUE (-1) /** */
|
||||
#define LED_BAR_ANIMATION_PERIOD 100 /** ms */
|
||||
#define DISP_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SERVER_CONFIG_UPDATE_INTERVAL 30000 /** ms */
|
||||
#define SERVER_CONFIG_UPDATE_INTERVAL 15000 /** ms */
|
||||
#define SERVER_SYNC_INTERVAL 60000 /** ms */
|
||||
#define MQTT_SYNC_INTERVAL 60000 /** ms */
|
||||
#define SENSOR_CO2_CALIB_COUNTDOWN_MAX 5 /** sec */
|
||||
#define SENSOR_TVOC_UPDATE_INTERVAL 1000 /** ms */
|
||||
#define SENSOR_CO2_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SENSOR_PM_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define SENSOR_TEMP_HUM_UPDATE_INTERVAL 2000 /** ms */
|
||||
#define SENSOR_CO2_UPDATE_INTERVAL 4000 /** ms */
|
||||
#define SENSOR_PM_UPDATE_INTERVAL 2000 /** ms */
|
||||
#define SENSOR_TEMP_HUM_UPDATE_INTERVAL 5000 /** ms */
|
||||
#define DISPLAY_DELAY_SHOW_CONTENT_MS 2000 /** ms */
|
||||
#define WIFI_HOTSPOT_PASSWORD_DEFAULT \
|
||||
"cleanair" /** default WiFi AP password \
|
||||
@ -726,7 +726,9 @@ bool hasSensorPMS1 = true;
|
||||
bool hasSensorPMS2 = true;
|
||||
bool hasSensorSGP = true;
|
||||
uint32_t factoryBtnPressTime = 0;
|
||||
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL, updateServerConfiguration);
|
||||
String mdnsModelName = "";
|
||||
AgSchedule configSchedule(SERVER_CONFIG_UPDATE_INTERVAL,
|
||||
updateServerConfiguration);
|
||||
AgSchedule serverSchedule(SERVER_SYNC_INTERVAL, sendDataToServer);
|
||||
AgSchedule co2Schedule(SENSOR_CO2_UPDATE_INTERVAL, co2Update);
|
||||
AgSchedule pmsSchedule(SENSOR_PM_UPDATE_INTERVAL, pmUpdate);
|
||||
@ -904,6 +906,8 @@ void boardInit(void) {
|
||||
failedHandler("Init I2C failed");
|
||||
}
|
||||
|
||||
Serial.println("Firmware Version: "+ag.getVersion());
|
||||
|
||||
ag.watchdog.begin();
|
||||
ag.button.begin();
|
||||
ag.statusLed.begin();
|
||||
@ -951,7 +955,7 @@ void boardInit(void) {
|
||||
}
|
||||
}
|
||||
|
||||
Serial.printf("Firmware node: %s\r\n", getFwMode(fw_mode));
|
||||
Serial.printf("Firmware Mode: %s\r\n", getFwMode(fw_mode));
|
||||
}
|
||||
|
||||
void failedHandler(String msg) {
|
||||
@ -1188,6 +1192,11 @@ static void updateServerConfiguration(void) {
|
||||
Serial.println("Connect to new mqtt broker failed");
|
||||
}
|
||||
}
|
||||
|
||||
if (mdnsModelName != agServer.getModelName()) {
|
||||
MDNS.addServiceTxt("http", "_tcp", "model", agServer.getModelName());
|
||||
mdnsModelName = agServer.getModelName();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1330,7 +1339,10 @@ static void webServerInit(void) {
|
||||
webServer.on("/measures/current", HTTP_GET, webServerMeasureCurrentGet);
|
||||
webServer.begin();
|
||||
MDNS.addService("http", "tcp", 80);
|
||||
MDNS.addServiceTxt("http", "_tcp", "board", ag.getBoardName());
|
||||
if (mdnsModelName != agServer.getModelName()) {
|
||||
MDNS.addServiceTxt("http", "_tcp", "model", agServer.getModelName());
|
||||
mdnsModelName = agServer.getModelName();
|
||||
}
|
||||
MDNS.addServiceTxt("http", "_tcp", "serialno", getDevId());
|
||||
MDNS.addServiceTxt("http", "_tcp", "fw_ver", ag.getVersion());
|
||||
|
||||
@ -1399,13 +1411,13 @@ static String getServerSyncData(bool localServer) {
|
||||
|
||||
if ((fw_mode == FW_MODE_PPT) || (fw_mode == FW_MODE_PST)) {
|
||||
if (hasSensorSGP) {
|
||||
if (tvocIndex > 0) {
|
||||
if (tvocIndex >= 0) {
|
||||
root["tvoc_index"] = tvocIndex;
|
||||
}
|
||||
if (tvocRawIndex >= 0) {
|
||||
root["tvoc_raw"] = tvocRawIndex;
|
||||
}
|
||||
if (noxIndex > 0) {
|
||||
if (noxIndex >= 0) {
|
||||
root["nox_index"] = noxIndex;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
name=AirGradient Air Quality Sensor
|
||||
version=3.0.4
|
||||
version=3.0.6
|
||||
author=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.
|
||||
|
@ -1,6 +1,6 @@
|
||||
#include "AirGradient.h"
|
||||
|
||||
#define AG_LIB_VER "3.0.4"
|
||||
#define AG_LIB_VER "3.0.6"
|
||||
|
||||
AirGradient::AirGradient(BoardType type)
|
||||
: pms5003(type), pms5003t_1(type), pms5003t_2(type), s8(type), sgp41(type),
|
||||
|
Reference in New Issue
Block a user