Настройка WIFI ESP8266 - PullRequest
       63

Настройка WIFI ESP8266

0 голосов
/ 10 октября 2019

У меня небольшой проект на ESP8266. Я создаю веб-страницу для подключения к Wi-Fi. У меня проблема с этим. Для подключения у меня есть этот метод:

bool connect(String name, String password)
{
    WiFi.begin(name, password);
    if (WiFi.status() == WL_NO_SSID_AVAIL) return false;
    int timeout = 0;
    while (timeout < 5000)
    {
        if (WiFi.status() == WL_CONNECTED)
        {
            return true;
        }
        timeout+=500;
        delay(500);
    }
    return false;
}

И веб-сервер вызывает обработчик, когда я отправляю данные через форму на веб-странице

void handleconnect()
{
    if (connect(webServer.arg("name"), webServer.arg("password")))
    {
        webServer.send(200, "text/html", "Success");
    }
    else
        webServer.send(200, "text/html", "Failed");
    }
}

У меня проблема при отправке неверного пароля, иногда этоработает хорошо и отправлять не удалось, но очень часто обработчик вызовов веб-сервера несколько раз, и у меня есть ошибка. Что мне нужно сделать, чтобы решить эту проблему? Спасибо вам!

Я использую: NodeMCU, ESP8266WebServer, ESP8266WiFi, WiFiClient

1 Ответ

0 голосов
/ 11 октября 2019

Прежде всего, вы не можете напрямую подключиться к сети, прежде чем вам нужно будет отключиться от существующей сети

Использовать EEPROM в esp8266

server.arg("myssid").toCharArray(WFSSID, 21);
server.arg("mypassword").toCharArray(WFPASS, 21);
EEPROM.put(WFSSID_ADDR, WFSSID);
EEPROM.put(WFPASS_ADDR, WFPASS);
EEPROM.commit();
delay(200);
EEPROM.get(WFSSID_ADDR, WFSSID);
EEPROM.get(WFPASS_ADDR, WFPASS);

Теперь после этого либо позвоните

ESP.restart();

или

WiFi.disconnect();
delay(100);
WiFi.begin(WFSSID, WFPASS);

Лучший способ - использовать ESP.restart (), а затем использовать перед подключением к сети, всегда вызывать WiFi.disconnect (), так как ESP имеет тенденциюсохранить старый SSID и ПАРОЛЬ и пытается подключиться.

А для веб-сервера используйте MDNS

  MDNS.begin("esp8266");
  server.on( "/", handleRoot);
  server.begin();
...