• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Рестарт WiFi клиента при обрыве связи

Pilnikov

Active member
Прошу помощи (пример, кусочек кода) для реализации перезапуска Wifi клиента при потере связи.
Допустим дома отключили свет и есп стартует раньше чем роутер поднимет сеть. При этом ЕСП запускается в режиме AP.
Примерное решение:
Периодически пинговать ну, например 8.8.8.8, и при отсутствии ответа - перезапустить клиента.
А вот как это сделать в коде - для меня вопрос.
 

=AK=

New member
Прошу помощи (пример, кусочек кода) для реализации перезапуска Wifi клиента при потере связи.
Допустим дома отключили свет и есп стартует раньше чем роутер поднимет сеть. При этом ЕСП запускается в режиме AP.
Примерное решение:
Периодически пинговать ну, например 8.8.8.8, и при отсутствии ответа - перезапустить клиента.
А вот как это сделать в коде - для меня вопрос.
После того, как соединение установлено, выполнить:
Код:
        WiFi.setAutoConnect(true);
        WiFi.setAutoReconnect(true);
 

enjoynering

Well-known member
а в ставлять команды перед или после?

Код:
WiFi.softAP(config.module_name, config.module_pwd);
 

enjoynering

Well-known member
У вас приведен код WIFI сервера, а не клиента. И в данном случае переподключения должны устанавливать клиенты.

да спасибо, я знаю. esp уменя и клиент и сервер. клиент для отправки данных в облако и сервер для просмотра текущих данных чере браузер.
 

Pilnikov

Active member
=AK=, спасибо, сегодня проверил - дернул роутер на ходу - немного погодя связь восстановилась - походу работает. Немного не то, что хотелось, но работает!
 
  • Like
Реакции: =AK=

DarkBeard

New member
=AK=, спасибо, сегодня проверил - дернул роутер на ходу - немного погодя связь восстановилась - походу работает. Немного не то, что хотелось, но работает!
Есть конечно библиотека Ping, но у меня она сильно глючила:
1. Как только проходит первый пинг из модуля, снаружи модуль ипнговаться перестает.
2. Модуль заметно медленнее начинает отдавать контент с своего HTTP сервера, а то и совсем перестает отдавать, при том, что связь есть.
 

Slacky

Member
@Pilnikov кусок из работающего скетча.

Код:
  /* check connecting to WiFi network one time in 30 sec */
  if (!wmData.apMode && staConfigure && staReconnectTime+30000 < millis() && (apModeNow || (staModeNow && WiFi.status() != WL_CONNECTED))) {
    staReconnectTime = millis();
    if (DEBUG) Serial.printf("Check WiFi network: %s\n", wmData.staSsid);
    int n = WiFi.scanNetworks();
    if (n != 0) {
      for (int i = 0; i < n; i++) {
        if (strcmp(wmData.staSsid, WiFi.SSID(i).c_str()) == 0) {
          if (startWiFiSTA()) {
            apModeNow = false;
            staModeNow = true;
            wmData.apMode = false;
            responseNTP = false;
          }
          break;
        }
      }
    }
  }
 
Сверху Снизу