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

В arduino ide 1.6.6 при программировании ESP-12e не меняется ssid & password в режиме AP

krepton85

Member
А как мне в процессе работы модуля переключится из режима WiFi.mode(WIFI_AP_STA); в WiFi.mode(WIFI_STA);. Я так и пробовал, но увы точка доступа не глушится, например мне нужно что бы был режим WiFi.mode(WIFI_AP_STA); до тех пор пока wi-fi клиент esp 8266 не подключится к моему роутару, а если подключился то только режим клиента WiFi.mode(WIFI_STA);
По всякому пробовал и сначало WiFi.mode(WIFI_OFF); потом WiFi.mode(WIFI_STA); но точка доступа не выключается ни как, так и продолжает работать режим WiFi.mode(WIFI_AP_STA);?
 

krepton85

Member
блин я его уже затер, выбесило, сделал как и в своем удлиннителе управляемом по mqtt - сначало пытается подключится в режиме только клиент к роутеру, если в течении 34 попыток с интерволом в 2 секунды между каждой, не удалось подключится, то переходит в режим только точки доступа, для ввода новых ssid и pass с вэб страницы.
Походу ни как это невозможно, без перезагрузки сделать.
 

tretyakov_sa

Moderator
Команда форума
блин я его уже затер, выбесило, сделал как и в своем удлиннителе управляемом по mqtt - сначало пытается подключится в режиме только клиент к роутеру, если в течении 34 попыток с интерволом в 2 секунды между каждой, не удалось подключится, то переходит в режим только точки доступа, для ввода новых ssid и pass с вэб страницы.
Походу ни как это невозможно, без перезагрузки сделать.
Код:
void WIFIAP_Client() {
  WiFi.disconnect();
  WiFi.mode(WIFI_STA);
  WiFi.begin(_ssid.c_str(), _password.c_str());
  tries(11);
  Serial.println("");
  Serial.println("WiFi connected");
  Serial.println(WL_CONNECTED);
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  if (WiFi.status() != WL_CONNECTED)
  {
    StartAPMode();
  }
}

bool StartAPMode()
{
  WiFi.disconnect();
  WiFi.mode(WIFI_AP);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
  dnsServer.start(DNS_PORT, "*", apIP);
  //Зажигаем светодиод если находимся в режиме AP
  digitalWrite(led, HIGH);
  return true;
}

bool RestartWiFi() {
  //Холодный перезапуск Wi-Fi при первой настройке
  Serial.println("WiFi reconnect");
  // Не отключаясь точки доступа подключаемся к роутеру для получения будущего IP
  WiFi.mode(WIFI_AP_STA );
  WiFi.begin(_ssid.c_str(), _password.c_str());
  tries(30);

  Serial.println("");
  Serial.println(WiFi.localIP());
  HTTP.send(200, "text/plain", WiFi.localIP().toString());
  delay(5000);
  // Отключаем точку доступа и переподключаемся к роутеру
  /*WiFi.mode(WIFI_STA);
  WiFi.begin();
  tries(11);
    */
    ESP.restart();
}

// Попытки подключения к сети
void tries(byte tries) {
  while (--tries && WiFi.status() != WL_CONNECTED)
  {
    //Мигаем сетодиодом при попытке подключится к роутеру
    digitalWrite(led, HIGH);
    Serial.print(".");
    delay(500);
    digitalWrite(led, LOW);
    delay(500);

  }
}
Попробуйте вместо ESP.restart(); Вызвать WIFIAP_Client(); Сам не пробовал.
 

krepton85

Member
@tretyakov_sa, ну вот я же говарил без перезагрузки ни как не сделать. В моем проекте "блок управления люстрой в прихожей 3 в 1" ни как нельзя перезагружать, у меня здесь за счет перезагрузки по питанию и eeprom работает переключение режимов при помощи настенного 1-клавишного выключателя с фиксацией (обычный выключатель кароче, через каторый питается вся люстра).
 

tretyakov_sa

Moderator
Команда форума
Это мне было без разницы перезагружать модуль или нет поэтому я поставил ESP.restart();
Но, вы то можете вызвать
WIFIAP_Client();
Вы это пробовали сделать?
 

krepton85

Member
@tretyakov_sa, нет что то ваш скетч не переваривает arduino ide не собирается, ну да ладно фиг с ним, это похоже все таки прикол с пакетом v 2.2.2 для поддержки esp 8266 в ардуино ide, сейчас сделал сброс настроек ssid и пароль из eeprom, перезагрузился софтресетом ESP.reset(); и затем в void setap у меня прописан код, если нету в eeprom сохраненных ssid и пароль к роутеру, то запускать только точку доступа, что бы к ней подключится и с вэб страницы ввести новые ssid и пароль, все это сделал ребутнул, подключился к моему роутеру, и опа, а точка доступа та ни куда и не исчезла, однавременно вещает и точку доступа и клиентом работает, и это при том что в моем скетче воообще ни где нету режима WiFi.mode(WIFI_AP_STA), только либо то, либо то, но не вместе. :)))
 

tretyakov_sa

Moderator
Команда форума
@tretyakov_sa, нет что то ваш скетч не переваривает arduino ide не собирается, ну да ладно фиг с ним, это похоже все таки прикол с пакетом v 2.2.2 для поддержки esp 8266 в ардуино ide, сейчас сделал сброс настроек ssid и пароль из eeprom, перезагрузился софтресетом ESP.reset(); и затем в void setap у меня прописан код, если нету в eeprom сохраненных ssid и пароль к роутеру, то запускать только точку доступа, что бы к ней подключится и с вэб страницы ввести новые ssid и пароль, все это сделал ребутнул, подключился к моему роутеру, и опа, а точка доступа та ни куда и не исчезла, однавременно вещает и точку доступа и клиентом работает, и это при том что в моем скетче воообще ни где нету режима WiFi.mode(WIFI_AP_STA), только либо то, либо то, но не вместе. :)))
Для того чтоб все собиралось нужно выполнить одно условие. Путь к любому файлу для Arduino IDE должен быть без кириллицы.
По поводу вашего скетча не могу ничего сказать его нужно видеть для этого.
 

krepton85

Member
В общем поигрался с разными режимами сети, получил таки что хотел, но работает это довольно криво все. Если скажем изначально запустить режим только точка доступа, затем перейти в режим точка доступа + клиент, то клиент не каннектится уже вообще к роутару т.к. точка доступа была запущена на 1 радио канале и изменить канал уже ни как нельзя, даже вызвав WiFi.begin(ssid, pass, 3); - подключится на 3-ем канале, все равно через отладку WiFi.printDiag(Serial); видно что канал выбран 1 как и при запуске точки доступа.
Затем косяк следующий - при разрыве wi-fi подключения, пытается автоматически подключится к роутару, но каждая попытка меняет радиоканал и не только у wi-fi клиента но и у точки доступа esp8266, а на этой точке доступа запущен http сервер для настройки новых ssid & pass к роутару и поэтому вэб страница подтармаживает при загрузке или вовсе пишет браузер, что "не удалось установить связь с сервером".
Вобщем удачно ввести новый ssid и pass можно только сбросив текущие и перезагрузившись (повесил эту функцию на комбинацию клавишь A+C на радио-брелке), затем если не сохранены ssid и pass запускать режим только точка доступа.
 
Сверху Снизу