Closed jjskaife closed 3 years ago
Hi @jjskaife
Thanks for your interest in the library and your good research to understand the internal working of it.
I'll certainly make those parameters configurable in the next release, even the configurable parameters are already too many for normal users to handle ;-)
I also suggest that you redesign your code to prevent possible issue with any blocking code in the loop(), for example either
Good Luck,
In the mean time, you can modify the library code as follows to test
#ifndef WIFI_MULTI_CONNECT_WAITING_MS
// For ESP8266, this better be 3000 to enable connect the 1st time
#define WIFI_MULTI_CONNECT_WAITING_MS 3000L
#endif
#ifndef WIFI_MULTI_CONNECT_WAITING_TIMES
#define WIFI_MULTI_CONNECT_WAITING_TIMES 10
#endif
uint8_t connectMultiWiFi()
{
uint8_t status;
BLYNK_LOG1(BLYNK_F("Connecting MultiWifi..."));
WiFi.mode(WIFI_STA);
setHostname();
int i = 0;
status = wifiMulti.run();
delay(WIFI_MULTI_CONNECT_WAITING_MS);
while ( ( i++ < WIFI_MULTI_CONNECT_WAITING_TIMES ) && ( status != WL_CONNECTED ) )
{
status = wifiMulti.run();
if ( status == WL_CONNECTED )
break;
else
delay(WIFI_MULTI_CONNECT_WAITING_MS);
}
if ( status == WL_CONNECTED )
{
BLYNK_LOG2(BLYNK_F("WiFi connected after time: "), i);
BLYNK_LOG4(BLYNK_F("SSID="), WiFi.SSID(), BLYNK_F(",RSSI="), WiFi.RSSI());
BLYNK_LOG4(BLYNK_F("Channel="), WiFi.channel(), BLYNK_F(",IP="), WiFi.localIP() );
}
else
BLYNK_LOG1(BLYNK_F("WiFi not connected"));
return status;
}
then specify somewhere in your code, for example
#define WIFI_MULTI_CONNECT_WAITING_MS 1000L
#define WIFI_MULTI_CONNECT_WAITING_TIMES 3
Your contribution has been noted in Contributions and Thanks
thanks for the link to your ESP8266TimerInterrupt code. That looks like a great solution. I've been using the blynk timers and will try yours.
Is your feature request related to a problem? Please describe.
ESP8266
If wifi is lost, the device will wait CONFIG_TIMEOUT until attempting a reconnect. The reconnect (connectMultiWifi) attempts to reconnect a hard coded 10 times (with ~3 second delays).
The problem that I have for a remote IOT device (PID temperature controller, 1 second sampling frequency) is that the reconnect attempts are blocking. the amount of time stuck in reconnect can be significant (at least 60 seconds for minimum 2 reconnect attempts + 30second connect attempt after reset).
Describe the solution you'd like
I'd like the reconnect attempts (connectMultiWifi) to be adjustable (or less) to limit time spent blocking main loop. Currently this is hardcoded.
Describe alternatives you've considered
changing specific hardcoded attempts to a define.
Additional context
Add any other context or screenshots about the feature request here.