diff --git a/neosensor/libraries/neocampus/neocampus_utils.cpp b/neosensor/libraries/neocampus/neocampus_utils.cpp index 429f61fbeb09ae359b5e0af2a97f09216474cab0..70de3c8d428f170be3448b72923cf9ed161cfb4f 100644 --- a/neosensor/libraries/neocampus/neocampus_utils.cpp +++ b/neosensor/libraries/neocampus/neocampus_utils.cpp @@ -9,6 +9,7 @@ * - ... * * --- + * F.Thiebolt aug.22 removed WiFiparameters hack :) ... by means of dynamic allocation :| * F.Thiebolt aug.21 extended checkCLEAR to 5000ms (some ESP32 have huge * internal capacitor enabled@starup ?!?!) * F.Thiebolt apr.21 removed DNS related includes @@ -157,9 +158,15 @@ void cb_enterConfigMode( WiFiManager *myWiFiManager ) { bool setupWiFi( wifiParametersMgt *wp ) { if( _need2reboot ) return false; - + log_info(F("\n[WiFi] start WiFiManager ...")); + // WiFiManager local instance ... no need to keep it once business is done :) + WiFiManager wifiManager; + + // debug messages + wifiManager.setDebugOutput( true ); + // reload config file if( wp ) { // load WiFi parameters and options @@ -186,13 +193,19 @@ bool setupWiFi( wifiParametersMgt *wp ) { log_debug(F("+"));log_flush(); } } - - // WiFiManager local instance ... no need to keep once business is done - WiFiManager wifiManager; - - // debug messages - wifiManager.setDebugOutput( true ); + // set timeouts + if( WiFi.status() != WL_CONNECTED ) { + log_debug(F("\n[WiFi] AP will get open for "));log_debug(WM_CONFIG_PORTAL_TIMEOUT,DEC);log_debug(F(" seconds")); + wifiManager.setConfigPortalTimeout(WM_CONFIG_PORTAL_TIMEOUT); + } + else { + // [aug.22] if we get connected ... then activate autoreconnect :) + WiFi.setAutoReconnect(true); + log_debug(F("\n[WiFi] AP opened in CONFIG MODE for ")); log_debug(WM_CONFIG_PORTAL_TIMEOUT/6,DEC);log_debug(F(" seconds")); + wifiManager.setConfigPortalTimeout(WM_CONFIG_PORTAL_TIMEOUT/6); + } + // set enter config mode callback wifiManager.setAPCallback( cb_enterConfigMode ); @@ -233,33 +246,30 @@ bool setupWiFi( wifiParametersMgt *wp ) { const char _customHtml_checkbox_checked[] = "type=\"checkbox\" checked"; // enable / disable sensOCampus sandbox - WiFiManagerParameter p_sandbox("sandbox", "neOCampus sandbox", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); + WiFiManagerParameter *p_sandbox = nullptr; if( wp->isEnabledSandbox() ) { - WiFiManagerParameter p_sandbox("sandbox", "neOCampus sandbox", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); - #warning "REMOVE HACK below !" - /* [Jun.18] HACK that requires modification in WiFiManager - p_sandbox._customHTML = _customHtml_checkbox_checked; - */ + p_sandbox = new WiFiManagerParameter("sandbox", "neOCampus sandbox", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); } - + else { + p_sandbox = new WiFiManagerParameter("sandbox", "neOCampus sandbox", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); + } + // TM1637 7 segment display parameters - WiFiManagerParameter p_sevenSegTM1637("sevenSegTM1637", "TM1637 7-seg (DIO=2,CLK=SCL)", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); + WiFiManagerParameter *p_sevenSegTM1637 = nullptr; if( wp->isEnabled7segTM1637() ) { - WiFiManagerParameter p_sevenSegTM1637("sevenSegTM1637", "TM1637 7-seg (DIO=2,CLK=SCL)", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); - #warning "REMOVE HACK below !" - /* [Jun.18] HACK that requires modification in WiFiManager - p_sevenSegTM1637._customHTML = _customHtml_checkbox_checked; - */ + p_sevenSegTM1637 = new WiFiManagerParameter("sevenSegTM1637", "TM1637 7-seg (DIO=2,CLK=SCL)", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); + } + else { + p_sevenSegTM1637 = new WiFiManagerParameter("sevenSegTM1637", "TM1637 7-seg (DIO=2,CLK=SCL)", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); } // PIR sensor - WiFiManagerParameter p_PIRsensor("PIRsensor", "PIR sensor (pin=5)", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); + WiFiManagerParameter *p_PIRsensor = nullptr; if( wp->isEnabledPIR() ) { - WiFiManagerParameter p_PIRsensor("PIRsensor", "PIR sensor (pin=5)", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); - #warning "REMOVE HACK below !" - /* [Jun.18] HACK that requires modification in WiFiManager - p_PIRsensor._customHTML = _customHtml_checkbox_checked; - */ + p_PIRsensor = new WiFiManagerParameter("PIRsensor", "PIR sensor (pin=5)", "T", 2, _customHtml_checkbox_checked, WFM_LABEL_AFTER); + } + else { + p_PIRsensor = new WiFiManagerParameter("PIRsensor", "PIR sensor (pin=5)", "T", 2, _customHtml_checkbox, WFM_LABEL_AFTER); } @@ -273,27 +283,14 @@ bool setupWiFi( wifiParametersMgt *wp ) { * add all parameters to wifiManager */ wifiManager.addParameter(&p_hint); - wifiManager.addParameter(&p_sandbox); - wifiManager.addParameter(&p_sevenSegTM1637); -/* - wifiManager.addParameter(&p_pinTM1637dio); - wifiManager.addParameter(&p_pinTM1637clk); -*/ - wifiManager.addParameter(&p_PIRsensor); + wifiManager.addParameter(p_sandbox); + wifiManager.addParameter(p_sevenSegTM1637); + wifiManager.addParameter(p_PIRsensor); wifiManager.addParameter(&p_eraseALL); - // - // set timeouts - if( WiFi.status() != WL_CONNECTED ) { - log_debug(F("\n[WiFi] AP will get open for "));log_debug(WM_CONFIG_PORTAL_TIMEOUT,DEC);log_debug(F(" seconds")); - wifiManager.setConfigPortalTimeout(WM_CONFIG_PORTAL_TIMEOUT); - } - else { - log_debug(F("\n[WiFi] AP opened in CONFIG MODE for ")); log_debug(WM_CONFIG_PORTAL_TIMEOUT/6,DEC);log_debug(F(" seconds")); - wifiManager.setConfigPortalTimeout(WM_CONFIG_PORTAL_TIMEOUT/6); - } // set a timeout trying to connect to a specified AP + // Note: isn't it useless since we manage connection ahead of WiFiManager ?? log_debug(F("\n[WiFi] will try a connexion for maximum "));log_debug(WM_CONNECTION_ATTEMPT_TIMEOUT,DEC);log_debug(F(" seconds")); wifiManager.setConnectTimeout(WM_CONNECTION_ATTEMPT_TIMEOUT); @@ -321,9 +318,9 @@ bool setupWiFi( wifiParametersMgt *wp ) { if( _WMsaveAddonConfigFlag ) { // save OPTIONS to parameters object - wp->_setopt_sandboxMode( strncmp(p_sandbox.getValue(),"T",1)==0 ? true : false ); - wp->_setopt_7segTM1637( strncmp(p_sevenSegTM1637.getValue(),"T",1)==0 ? true : false ); - wp->_setopt_PIRsensor( strncmp(p_PIRsensor.getValue(),"T",1)==0 ? true : false ); + wp->_setopt_sandboxMode( strncmp(p_sandbox->getValue(),"T",1)==0 ? true : false ); + wp->_setopt_7segTM1637( strncmp(p_sevenSegTM1637->getValue(),"T",1)==0 ? true : false ); + wp->_setopt_PIRsensor( strncmp(p_PIRsensor->getValue(),"T",1)==0 ? true : false ); /* strcpy(thingspeakApiKey, p_thingspeakApiKey.getValue()); @@ -336,6 +333,11 @@ bool setupWiFi( wifiParametersMgt *wp ) { wp->_setopt_eraseALL( strncmp(p_eraseALL.getValue(),"T",1)==0 ? true : false ); } + // freeing allocated ressources :s + free(p_sandbox); p_sandbox = nullptr; + free(p_sevenSegTM1637); p_sevenSegTM1637 = nullptr; + free(p_PIRsensor); p_PIRsensor = nullptr; + // Writing JSON config file to flash for next boot ... if something has been updated :) wp->saveConfigFile();