Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

Нужна помощь Можно ли сейчас использовать WiFi.begin(ssid, password)

Тема в разделе "Раздел для начинающих", создана пользователем selan61, 10 мар 2019.

  1. selan61

    selan61 Новичок

    Сообщения:
    19
    Симпатии:
    1
    Прочитал на форуме что, @enjoynering пишет:"каждый раз когда вызываете WiFi.begin(ssid, password); ардуино перезаписывает название точки доступа и пароль. в итоге через год, два таких манипуляций у вас на флешке будет дырка."
    Нашел и сохранил все сообщения по этому поводу, но окончательно запутался.
    Так и не понял можно ли сейчас использовать WiFi.begin(ssid, password); или нет. Вроде @enjoynering потом писал, что, цитата"Теперь перед сохранием пароля и ssid проверяют его с сохраненным на флешке и не перезаписывают зря. ну и для самых продвинутых внедрили запрет на запись путем вызова функции WiFi.persistent(false). "
    И что лучше использовать для отключения WIFI WiFi.disconnect(false); или WiFi.mode(WIFI_OFF); чтобы контроллер крутился и выполнял какие либо действия и иногда включал WIFI для передачи данных.
    Поэтому в скетч сделал вставки на основе рекомендаций @enjoynering. Только не знаю, правильно или нет.
    Скетч (раскрыть)

    /*
    * This example show how to ping a remote machine using it's hostname
    */
    #include <ESP8266WiFi.h>
    #include <ESP8266Ping.h>
    #include <SimpleTimer.h>
    const char* ssid = "ssid";
    const char* password = "password";
    const char* host = "narodmon.ru";
    SimpleTimer timer;
    void setup() {
    Serial.begin(115200);
    timer.setTimeout (15000, connectwifi);// через 15 сек однократно выполнить функцию connectwifi
    timer.setInterval (600000, pinghost);// каждые 10 мин выполняем функцию pinghost
    }
    void loop(){
    timer.run();
    }
    void connectwifi(){ // функция первоначального подключения к WIFI
    Serial.println("Connecting to WiFi");

    WiFi.begin(ssid, password);

    while (WiFi.status() != WL_CONNECTED) {
    delay(100);
    Serial.print(".");
    }
    Serial.print("WiFi connected with ip ");
    Serial.println(WiFi.localIP());
    if (WiFi.getPersistent() == true) WiFi.persistent(false);
    //disable saving wifi config into SDK flash area
    WiFi.mode(WIFI_OFF); // отключаем WIFI
    WiFi.persistent(true); //enable saving wifi config into SDK flash area
    }
    void pinghost(){ // функция пинга host
    Serial.println("Connecting to WiFi");

    if (WiFi.getAutoConnect() != true) //configuration will
    be saved into SDK flash area
    {
    WiFi.setAutoConnect(true); //on power-on automatically
    connects to last used hwAP
    WiFi.setAutoReconnect(true); //automatically reconnects to hwAP in case it's disconnected
    }
    Serial.print("WiFi connected with ip ");
    Serial.println(WiFi.localIP());
    Serial.print("Pinging host ");
    Serial.println(host);
    if(Ping.ping(host)) {
    Serial.println("Success!!");
    }
    else {
    Serial.println("Error :(");
    }
    //WiFi.disconnect();
    if (WiFi.getPersistent() == true) WiFi.persistent(false);
    //disable saving wifi config into SDK flash area
    WiFi.mode(WIFI_OFF); // отключаем WIFI
    WiFi.persistent(true); //enable saving wifi config into SDK flash area

    }
     
  2. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.279
    Симпатии:
    144
    Если не будете использовать, то как к сети подключитесь?
     
  3. selan61

    selan61 Новичок

    Сообщения:
    19
    Симпатии:
    1
    Значит я не точно выразился. Первый раз мы используем WiFi.begin(ssid, password); подключились, отправили данные, отключились, WiFi.disconnect(false);
    А как правильно подключаться при регулярной отправке данных через определенные промежутки времени, что бы не переписывать название точки доступа и пароль на флешке.
    Эта же проблема описана на
    ESP8266:Прошивки/Arduino/Библиотеки/Библиотека ESP8266WiFi/Класс Generic — Онлайн справочник
    потом от @enjoynering поступила информация:
    Так можно использовать при повторном подключении функцию WiFi.begin(ssid, password); и она уже не перезаписывает название точки доступа и пароль на флешке или все же чтобы не испортить флешку надо использовать другие способы?
    На github Ivan Grokhotkov WiFi config corrupted after multiple restarts · Issue #1054 · esp8266/Arduino вроде пишет про попытки устранения проблемы, но непонятно, устранена она или нет.
    Если в ядре ESP8266 устранили проблему, надо ли его перезаписывать или как то обновить?
     
  4. selan61

    selan61 Новичок

    Сообщения:
    19
    Симпатии:
    1
    Чесно говоря, я не понимаю почему подобной проблемой никто не озадачился раньше. Наверное у всех есть устройства на ESP которые спят, раз в полчаса или раньше просыпаются, подключаются к роутеру, отправляют данные, отключаются и снова засыпают. И каждый раз при подключении на флешке перезаписывается название точки доступа и пароль. А через пару, тройку лет от постоянной перезаписи флешка сдыхает и еспишка перестает работать. На гитхабе WiFi config corrupted after multiple restarts · Issue #1054 · esp8266/Arduino еще в 2015 году озадачились этой проблемой, а тут я не встречал подобных сообщений. Я об этом случайно узнал из сообщения@enjoynering и мне интересно как народ решает эту проблему.
     
  5. tretyakov_sa

    tretyakov_sa Moderator Команда форума

    Сообщения:
    951
    Симпатии:
    148
    selan61 нравится это.
  6. selan61

    selan61 Новичок

    Сообщения:
    19
    Симпатии:
    1
    Ссылку, если не трудно пожалуйста скиньте.
     
  7. tretyakov_sa

    tretyakov_sa Moderator Команда форума

    Сообщения:
    951
    Симпатии:
    148
    Алексей. и selan61 нравится это.

Поделиться этой страницей