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

Решено Хоть ты тресни: ESP ставит STA+AP вместо просто AP после смены режима.

CCat

Member
У меня две функции - одна запускает режим станции, другая - точки доступа.
Режим AP включается примерно так
Код:
  WiFi.disconnect();
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ap_ssid);//without pass
  WiFi.softAPConfig(apIP, apIPgate, IPAddress(255, 255, 255, 0));
Прошлый режим вырубается и его данные очищаются путем [inline]WiFi.disconnect();[/inline]
Вроде все затирается, но почему-то во второй раз (и далее после первого STA mode) вместо AP mode будет STA+AP.
Мелочь, а неприятно. :(
По какому праву ESP-шка сама выбирает за меня непрошенный гибридный режим? :mad:
Где-то в иностранной прессе проскальзывало, что некоторые глюки связаны с созданием точки доступа без пароля, но я уже забыл, про что говорилось.
 

Алексей.

Active member
Прошлый режим вырубается и его данные очищаются путем WiFi.disconnect();
Прошлый режим не "вырубается", для режима STA просто затираются ssid и password
Код:
bool ESP8266WiFiSTAClass::disconnect(bool wifioff/* = false*/) {
    bool ret;
    struct station_config conf;
    *conf.ssid = 0;
    *conf.password = 0;

    ETS_UART_INTR_DISABLE();
    if(WiFi._persistent) {
        wifi_station_set_config(&conf);
    } else {
        wifi_station_set_config_current(&conf);
    }
    ret = wifi_station_disconnect();
    ETS_UART_INTR_ENABLE();

    if(wifioff) {
        WiFi.enableSTA(false);
    }

    return ret;
}
 
  • Like
Реакции: CCat

CCat

Member
Спасибо, понял. Да и всякие [inline]WiFi.persistent[/inline], как я понял, влияют тоже только на это.
А тогда почему гибридный режим? Я же явно указываю [inline]WiFi.mode(WIFI_AP);[/inline]
Типа "у тебя прошлый режим был STA, так что тебе явно пригодится "STA+AP", и не благодари? :)
Да я уже начитался, что некоторые люди прямо стирают сектора, где хранится информация о AP. Иначе никак? :(
 

Алексей.

Active member
persistence = постоянство
Определяет будут ли настройки временные, актуальные только до перезагрузки, или настройки сохранятся во флеш
для wifi_set_opmode в нотесах пишут
Function: set wifi working mode as STATION, SOFTAP or STATION+SOFTAP
Note: Versions before esp_iot_sdk_v0.9.2, need to call system_restart() after this api; after esp_iot_sdk_v0.9.2, need not to restart.
Нужен или не нужен рестарт я не проверял, после изменения режима перезагружал модуль :)
 
  • Like
Реакции: CCat

nikolz

Well-known member
Спасибо, понял. Да и всякие [inline]WiFi.persistent[/inline], как я понял, влияют тоже только на это.
А тогда почему гибридный режим? Я же явно указываю [inline]WiFi.mode(WIFI_AP);[/inline]
Типа "у тебя прошлый режим был STA, так что тебе явно пригодится "STA+AP", и не благодари? :)
Да я уже начитался, что некоторые люди прямо стирают сектора, где хранится информация о AP. Иначе никак? :(
попробуйте установить режим 0 "ноль" а потом AP
 
  • Like
Реакции: CCat

CCat

Member
попробуйте установить режим 0 "ноль" а потом AP
А знаете, установка такого режима, а потом, через секунду, уже AP, тьфу-тьфу, пока работает! :cool: Спасибо! Буду гонять дальше между режимами!

Код:
void StartAPMode() {
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_OFF);
  delay(1000);
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ap_ssid);//без пароля
  WiFi.softAPConfig(apIP, apIPgate, IPAddress(255, 255, 255, 0));//для кастомного ip, работало почему-то не всегда 
}
А еще, когда я теперь делаю [inline]WiFi.softAPdisconnect(true);[/inline] вместо [inline]WiFi.disconnect();[/inline], перестал затираться ssid и пароль для режима клиента (STA).
 

nikolz

Well-known member
А знаете, установка такого режима, а потом, через секунду, уже AP, тьфу-тьфу, пока работает! :cool: Спасибо! Буду гонять дальше между режимами!

Код:
void StartAPMode() {
  WiFi.softAPdisconnect(true);
  WiFi.mode(WIFI_OFF);
  delay(1000);
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ap_ssid);//без пароля
  WiFi.softAPConfig(apIP, apIPgate, IPAddress(255, 255, 255, 0));//для кастомного ip, работало почему-то не всегда
}
А еще, когда я теперь делаю [inline]WiFi.softAPdisconnect(true);[/inline] вместо [inline]WiFi.disconnect();[/inline], перестал затираться ssid и пароль для режима клиента (STA).
полагаю что задержка не требуется. Попробуйте ее убрать.
 

nikolz

Well-known member
Может, как-то совпало, но без задержки вывелись кракозябры вместо нужного ssid при просмотре доступных точек доступа на мобильном. :)
если есть желание попробуйте уменьшить задержку и найти минимум необходимого.
 
  • Like
Реакции: CCat
Сверху Снизу