I have upgraded the arduino core to the latest stable version one week ago and since then it seems i cannot connect my esp32 to my local network.
Heres my plateformio.ini
:
[env:seeed_xiao_esp32s3]
; platform = espressif32
platform = https://github.com/pioarduino/platform-espressif32/releases/download/stable/platform-espressif32.zip
board = seeed_xiao_esp32s3
lib_deps =
framework = arduino
monitor_speed = 115200
build_flags =
-D DEBUG=true
heres the function I’m using to connect:
bool initWifiConnection(const String p_ssid, const String p_password, const int timeout_ms)
{
unsigned long startAttemptTime = millis();
WiFi.mode(WIFI_STA);
// WiFi.disconnect((true, true));
// delay(1000);
WiFi.begin(p_ssid, p_password);
// WiFi.setAutoReconnect(true);
do
{
int status = WiFi.status();
#if DEBUG
Serial.println("Connecting to WiFi ...");
Serial.println(String("WiFi Status = ") + WiFi.status());
Serial.println("Time elapsed: " + String(millis() - startAttemptTime) + "ms");
switch (status)
{
case WL_IDLE_STATUS:
Serial.println("Idle");
break;
case WL_NO_SSID_AVAIL:
Serial.println("SSID not found");
break;
case WL_SCAN_COMPLETED:
Serial.println("Scan completed");
break;
case WL_CONNECT_FAILED:
Serial.println("Connection failed");
break;
case WL_CONNECTION_LOST:
Serial.println("Connection lost");
break;
case WL_DISCONNECTED:
Serial.println("Disconnected");
break;
default:
Serial.println("Status: " + String(status));
break;
}
#endif
if (millis() - startAttemptTime > timeout_ms)
{
#if DEBUG
Serial.println("Connection timeout");
#endif
return false;
}
} while (WiFi.status() != WL_CONNECTED);
#if DEBUG
Serial.println();
Serial.print("Connected to this ip adress : " + WiFi.localIP());
Serial.println("The signal strength is = " + WiFi.RSSI());
#endif
return true;
}
and the main condition:
else if (valueReceived[0] == 'P')
{
std::string nVal = pCharacteristic->getValue().c_str();
size_t len = nVal.length();
std::string wifiCredentials = nVal.substr(2,len-2);
size_t pos = wifiCredentials.find(',');
std::string wifiSsid;
std::string wifiPassword;
#if DEBUG
Serial.println("wifiCredentials length is : " + String(len));
Serial.println("wifiCredentials are : " + String(wifiCredentials.c_str()));
#endif
if (pos != std::string::npos)
{
wifiSsid = wifiCredentials.substr(0,pos);
wifiPassword = wifiCredentials.substr(pos+1,wifiCredentials.length() - pos);
#if DEBUG
Serial.println("-------------------------------------");
Serial.println("position of ',' is : " + String(pos));
Serial.println("wifiName is : " + String(wifiSsid.c_str()));
Serial.println("wifiPassword is : " + String(wifiPassword.c_str()));
Serial.println("-------------------------------------");
#endif
}
String w = wifiSsid.c_str(); //! couldnt simply cast at connexion time
String p = wifiPassword.c_str();
initWifiConnection(w,p, 10000);
newValueReceived = false;
}
Maybe its not related to the new core and you guys can see what is my problem ? thank you