#include <WiFi.h>
#include <esp_wifi.h>
// Replace with your network credentials (STATION)
char ssid[16] = {"Wokwi-GUEST"};
char password[16] = {""};
// Get stored WiFi credentials
bool getWiFiCredentials(wifi_config_t *conf ) {
esp_err_t err = esp_wifi_get_config(WIFI_IF_STA, conf);
if (err) {
Serial.printf("Get WiFi config: %s", esp_err_to_name(err));
return false;
}
return true;
}
// Store WiFi credentials
void setWiFiCredentials(const char* ssid, const char* pass) {
wifi_config_t stationConf;
esp_wifi_get_config(WIFI_IF_STA, &stationConf);
// Azzera la configurazione attuale se necessario
// memset(&stationConf, 0, sizeof(stationConf));
// Memorizza le nuove credenziali.
// stationConf.sta.ssid/password sono due array di uint8_t
// quindi è necessario fare il parsing per usare la funzione strcpy().
// In alternativa è possibile usare memcpy()
strcpy((char*)&stationConf.sta.ssid, ssid);
strcpy((char*)&stationConf.sta.password, pass);
esp_err_t err = esp_wifi_set_config(WIFI_IF_STA, &stationConf);
if (err) {
Serial.printf("Set WiFi config: %s", esp_err_to_name(err));
}
}
void setup() {
Serial.begin(115200);
// La credenziali WiFi vengono salvate nella flash memory
// quando la connessione viene instaurata con successo a meno che
// sia esplicitamente indicato in modo diverso
WiFi.persistent(false);
Serial.print("Connecting to WiFi");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(100);
Serial.print(".");
}
Serial.println("\nConnected!");
// Stampo le credenziali attualmente salvate negli array ssid e password
Serial.printf("\nActual SSID: %s\n", ssid);
Serial.printf("Actual Password: %s\n", password);
// Modifico le credenziali
setWiFiCredentials("nuovoSSID", "nuovaPassword");
wifi_config_t conf; // Struct definita in esp_wifi.h
if (getWiFiCredentials(&conf)) {
// Se serve, memorizzo di nuovo le credenziali negli array ssid e password
strcpy(ssid, (char*)conf.sta.ssid);
strcpy(password, (char*)conf.sta.password);
Serial.printf("\nOld SSID: %s\n", ssid);
Serial.printf("Old Password: %s\n", password);
}
}
void loop() {
// put your main code here, to run repeatedly:
}