• Система автоматизации с открытым исходным кодом на базе 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;
        }
      }
    }
  }
 
Сверху Снизу