Спасибо. Возможно в документации все написано. Но не всегда понятно что именно искать."SSID и Password" ESP8266 хранит в последних 2-х секторах Flash. 3-й сектор имеет разметку в каком из двух хранятся настройки WiFi.
Про это всё описано в документации.
SPIFFS это отдельная часть. Сохранение настроек WiFi - это внутренняя функциональность функций SDK, на которых построена Arduino. При переключении режимов или соединении с другой AP и т.д. настройки WiFi автоматически записываются в указанные 3 последних сектора. Так-же при каждом новом старте. Если вы применяете deep-sleep или частые перезагрузки, то дырка в Flash возможна через год работы такого устройства - погибнут эти 3 сектора.Правильно ли я понимаю, что эта Flash и SPIFFS одно и то же место? или SPIFFS занимает не все возможное место? или тоже есть в документации?
Flash - это микросхема внешней памяти. На ней:Flash и SPIFFS одно и то же место?
Как я уже неоднократно писал, очень понятное и подробное описание обеих библиотек с конкретными примерами имеется в видеокурсах Сергея Третьяковареализованы в подключаемых библиотеках EPROM и SPIFFS.
Ребята тут на форуме приводили тексты этой функциональности - реально перезапись конфига идет, только если какие-либо данные меняются.Так-же при каждом новом старте. Если вы применяете deep-sleep или частые перезагрузки, то дырка в Flash возможна через год работы такого устройства - погибнут эти 3 сектора.
Угу - они в Arduino всегда меняются - при старте устанавливается режим и прочие настройки. Не все настройки для нормальной работы ставятся по умолчанию и это требует изменения. Ну если у вас просто "Hello, world!" то ничего и не перезаписывается.Ребята тут на форуме приводили тексты этой функциональности - реально перезапись конфига идет, только если какие-либо данные меняются.
Вот тут вы не правы. Arduino core for ESP8266 проверяет на совпадении пароль/имя точки перед записью. Так что дырки не будет.Если вы применяете deep-sleep или частые перезагрузки, то дырка в Flash возможна через год работы такого устройства - погибнут эти 3 сектора.
первый же запрос в гугл дает развернутый ответ - Documentation for WiFi.persistent() is misleading · Issue #3641 · esp8266/Arduino · GitHubА будет ли переписываться FLASH если стоит WiFi.persistent(false) ?
вас в гугле забанили?It writes settings to flash if they don't match the values in flash if persistent is set to true. If it is false it will not write to flash independent of the current value in flash.
если не затруднит ткните в меня местом в документации. мне нужно принудительно записать ssid/ без pass значения предварительного коннекта (надеюсь такое возможно принципиально)"SSID и Password" ESP8266 хранит в последних 2-х секторах Flash. 3-й сектор имеет разметку в каком из двух хранятся настройки WiFi.
Про это всё описано в документации.
Такого в доках не встречал. (Я уже давно расстался с глюкогдромом ESP8266 - возможно в новых доках что-то и есть и кто другой ответит)если не затруднит ткните в меня местом в документации. мне нужно принудительно записать ssid/ без pass значения предварительного коннекта (надеюсь такое возможно принципиально)
А другие настройки она тоже проверяет? Там сохраняется не только пароль и имя, а более 1.5 килобайта всякой ерунды...Вот тут вы не правы. Arduino core for ESP8266 проверяет на совпадении пароль/имя точки перед записью. Так что дырки не будет.
например для станции делаем в самом начале так:если не затруднит ткните в меня местом в документации. мне нужно принудительно записать ssid/ без pass значения предварительного коннекта (надеюсь такое возможно принципиально)
#define SSID "nik"
#define PASSWORD "nikolz"
struct station_config stationConf;
//------------------------------------------------
wifi_station_get_config (&stationConf);
uint8 e1=strcmp(stationConf.ssid, SSID);
uint8 e2=strcmp(stationConf.password, PASSWORD);
//------------------------------------------
if ((e1!=0) ||(e2!=0)){
ets_strcpy(stationConf.ssid,SSID);
ets_strcpy(stationConf.password,PASSWORD);
wifi_station_set_config(&stationConf);
}
if (WiFi.SSID() == staConfig.ssid || WiFi.psk() == staConfig.password) WiFi.begin(); //start station with saved credentials
else WiFi.begin(staConfig.ssid.c_str(), staConfig.password.c_str()); //start station with new credentials