【问题标题】:Saving WiFi credentials to EEPROM on ESP8266将 WiFi 凭据保存到 ESP8266 上的 EEPROM
【发布时间】:2020-04-26 12:05:49
【问题描述】:

我正在使用以下代码在 EEPROM 中保存和加载凭据:

void loadCredentials() {
  EEPROM.begin(512);
  EEPROM.get(0, ssid);
  EEPROM.get(0+sizeof(ssid), password);
  char ok[2+1];
  EEPROM.get(0+sizeof(ssid)+sizeof(password), ok);
  EEPROM.end();
  if (String(ok) != String("OK")) {
    ssid[0] = 0;
    password[0] = 0;
  }
  Serial.println("Recovered credentials:");
  Serial.println(ssid);
  Serial.println(strlen(password)>0?"********":"<no password>");
}

/** Store WLAN credentials to EEPROM */
void saveCredentials() {
  EEPROM.begin(512);
  EEPROM.put(0, ssid);
  EEPROM.put(0+sizeof(ssid), password);
  char ok[2+1] = "OK";
  EEPROM.put(0+sizeof(ssid)+sizeof(password), ok);
  EEPROM.commit();
  EEPROM.end();
  Serial.print("Saving SSID: ");
  Serial.println(ssid);
  Serial.print("Password: ");
  Serial.println(password); 
  Serial.println("Done");
}

但是,loadCredentials() 始终返回空凭据或无效凭据。我不太明白为什么saveCredentials() 似乎运行正常,而WiFi.begin(ssid, passaord) 工作没有任何问题(直到你重置)

这是用于将凭据设置到变量中的代码:

    if(ssidchange){
      a = String(a);
      a.toCharArray(tempssid, 50);
      ssid = tempssid;
      Serial.print("Done, SSID changed to ");
      Serial.println(ssid);
      ssidchange = false;
    }
    else if(passchange){
      char temppass[50];
      String a2 = String(a);
      a2.toCharArray(temppass, 50);
      ssid = tempssid;
      password = temppass;
      Serial.print("SSID changed to ");
      Serial.println(tempssid);
      Serial.print("and pass changed to ");
      Serial.println(password);
      saveCredentials();
      delay(3000);
      ESP.restart();
    }

非常感谢您!

【问题讨论】:

    标签: arduino arduino-esp8266 eeprom


    【解决方案1】:

    创建具有 ssid、密码等成员的结构的更好方法。 例如

    struct wificredential{
      char ssid[30];
      char pass[30];
    }
    

    然后将整个结构存储在特定地址的 eeprom 中。然后在我们想要的时候从同一个地址获取它

    我这样做是为了为框架here构建数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-28
      • 2023-02-11
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      相关资源
      最近更新 更多