diff --git a/examples/OneOpenAir/OneOpenAir.ino b/examples/OneOpenAir/OneOpenAir.ino index f4a715c..fcacf60 100644 --- a/examples/OneOpenAir/OneOpenAir.ino +++ b/examples/OneOpenAir/OneOpenAir.ino @@ -82,7 +82,7 @@ static AirGradient *ag; static OledDisplay oledDisplay(configuration, measurements, Serial); static StateMachine stateMachine(oledDisplay, Serial, measurements, configuration); -static WifiConnector wifiConnector(oledDisplay, Serial, stateMachine); +static WifiConnector wifiConnector(oledDisplay, Serial, stateMachine, configuration); static OpenMetrics openMetrics(measurements, configuration, wifiConnector, apiClient); static LocalServer localServer(Serial, openMetrics, measurements, configuration, diff --git a/src/AgConfigure.cpp b/src/AgConfigure.cpp index 1676354..bdffce1 100644 --- a/src/AgConfigure.cpp +++ b/src/AgConfigure.cpp @@ -728,3 +728,13 @@ void Configuration::jsonInvalid(void) { } String Configuration::getFailedMesage(void) { return failedMessage; } + +void Configuration::setPostToAirGradient(bool enable) { + if (enable != config.postDataToAirGradient) { + config.postDataToAirGradient = enable; + logInfo("postDataToAirGradient set to: " + String(enable)); + saveConfig(); + } else { + logInfo("postDataToAirGradient: Ignored set to " + String(enable)); + } +} diff --git a/src/AgConfigure.h b/src/AgConfigure.h index 45130a0..a53e2ac 100644 --- a/src/AgConfigure.h +++ b/src/AgConfigure.h @@ -74,6 +74,7 @@ public: String getModel(void); bool isUpdated(void); String getFailedMesage(void); + void setPostToAirGradient(bool enable); }; #endif /** _AG_CONFIG_H_ */ diff --git a/src/AgWiFiConnector.cpp b/src/AgWiFiConnector.cpp index 68625ed..30d7f18 100644 --- a/src/AgWiFiConnector.cpp +++ b/src/AgWiFiConnector.cpp @@ -21,8 +21,8 @@ void WifiConnector::setAirGradient(AirGradient *ag) { this->ag = ag; } * @param log Stream * @param sm StateMachine */ -WifiConnector::WifiConnector(OledDisplay &disp, Stream &log, StateMachine &sm) - : PrintLog(log, "WifiConnector"), disp(disp), sm(sm) {} +WifiConnector::WifiConnector(OledDisplay &disp, Stream &log, StateMachine &sm,Configuration& config) + : PrintLog(log, "WifiConnector"), disp(disp), sm(sm), config(config) {} #else WifiConnector::WifiConnector(Stream &log) : PrintLog(log, "WiFiConnector") {} #endif @@ -61,6 +61,11 @@ bool WifiConnector::connect(void) { ssid = "AG-" + String(ESP.getChipId(), HEX); #endif WIFI()->setConfigPortalTimeout(WIFI_CONNECT_COUNTDOWN_MAX); + + WiFiManagerParameter lineBreak("
Check to enabled post data to AirGradient cloud
"); + WIFI()->addParameter(&lineBreak); + WiFiManagerParameter postToAg("chbPostToAg", "Post To AirGradient", "T", 2, "type=\"checkbox\" ", WFM_LABEL_AFTER); + WIFI()->addParameter(&postToAg); WIFI()->autoConnect(ssid.c_str(), WIFI_HOTSPOT_PASSWORD_DEFAULT); #ifdef ESP32 @@ -134,6 +139,10 @@ bool WifiConnector::connect(void) { } else { hasConfig = true; logInfo("WiFi Connected: " + WiFi.SSID() + " IP: " + localIpStr()); + + String result = String(postToAg.getValue()); + logInfo("Post to AirGradient Configure: " + result); + config.setPostToAirGradient(result == "T"); } #else _wifiProcess(); diff --git a/src/AgWiFiConnector.h b/src/AgWiFiConnector.h index 46cb53c..9de182d 100644 --- a/src/AgWiFiConnector.h +++ b/src/AgWiFiConnector.h @@ -4,6 +4,7 @@ #include "AgOledDisplay.h" #include "AgStateMachine.h" #include "AirGradient.h" +#include "AgConfigure.h" #include "Main/PrintLog.h" #include