• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Энергопотребление ESP(сверхновое)

nikolz

Well-known member
Во всех последних SDK есть установки/включение WiFi с опциями без записи конфига во Flash. А если пользуетесь моими сборками SDK или сами расковыриваете его, то всегда можно написать перехват или замену функции записи/чтения конфигов из закрытых китайских либ на свои... Кроме конфигов WiFi надо ещё махнуть сохранение калибровок для быстрого рестарта после deep_sleep и калибровок по напряжению питания - они пишутся в другой сектор, в одно и то-же место, после блока esp_init_data_default.bin.

А в Arduino протрет дыру наверняка...

Для =AK= это не важно - он перепаивает Flash после пары месяцев работы модуля в устройстве с мало-потребляющим дополнительным MCU. :)

В общем это решаемая часть, в отличии от функционирования ESP8266 с активным "просыпанием" по пинам при малом токе потребления. Слишком много жрет в таком режиме и очень долгое время восстановления.
1) Вообще-то чел спросил про память RTC, что не есть флеш.
2) относительно записи конфигурации во флеш все не так мрачно
во-первых, можно просто написать проверку на несовпадение и писать если разное.
Во-вторых, записывать конфигурацию как current, тем самым не писать ее вообще во флешь.
Ну а так, конечно, нет защиты от...
 

nikolz

Well-known member
а тыкните в пример.спасибо
я делаю так, это на СИ, но в дурине можно вставить СИ или переписать на дурину
Код:
    if (wifi_get_opmode()!=STATION_MODE)    wifi_set_opmode_current(STATION_MODE);
    if(wifi_get_phy_mode() != PHY_MODE_11B)     wifi_set_phy_mode(PHY_MODE_11B);
    if (wifi_station_get_auto_connect()==0)    wifi_station_set_auto_connect(1);
wifi_station_get_config (&stationConf); //читаем конфигурацию
    uint8 e1=strcmp(stationConf.ssid,_SSID);
    uint8 e2=strcmp(stationConf.password,_PASSWORD);
    if (e1!=0 ||e2!=0){
        os_bzero(&stationConf,sizeof(struct station_config));
        ets_strcpy(stationConf.ssid,_SSID);
        ets_strcpy(stationConf.password,_PASSWORD);
          wifi_station_set_config_current(&stationConf);
}
 
Сверху Снизу