• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

SOFT_AP(SOFT_AP_STA) & WL_IDLE_STATUS

Discriminator

New member
Чего-то я недопонимаю....
Стартуем AP
Код:
  WiFi.disconnect();
  WiFi.mode(WIFI_AP_STA);
  WiFi.softAPConfig(astroIP, astroGW, classCMASK);
  WiFi.softAP(aSSID, aPassword);
  while (WiFi.status() != WL_CONNECTED) {
   #if SerialDebug 
   statuss(WiFi.status());
   #endif   
   delay(1000);
  }
WiFi.status() говорит WL_IDLE_STATUS, независимо от WIFI_AP_STA и WIFI_AP
Тем не менее точка доступа появляется и к ней коннектится комп. Но как видите по коду - естественно из цикла не вываливаемся.

Если посмотреть ...\Arduino15\packages\esp8266\hardware\esp8266\1.6.4-673-g8cd3697\libraries\ESP8266WiFi\src\ESP8266WiFi.cpp
Код:
wl_status_t ESP8266WiFiClass::status()
{
    int status = wifi_station_get_connect_status();

    if (status == STATION_GOT_IP)
      return WL_CONNECTED;
    else if (status == STATION_NO_AP_FOUND)
      return WL_NO_SSID_AVAIL;
    else if (status == STATION_CONNECT_FAIL || status == STATION_WRONG_PASSWORD)
      return WL_CONNECT_FAILED;
    else if (status == STATION_IDLE)
      return WL_IDLE_STATUS;
    else
      return WL_DISCONNECTED;
}
int status = wifi_station_get_connect_status();
Из доки к SDK: wifi_station_get_connect_status - Function: Get connection status of WiFi station to AP

Это правомерно ? Сам пример такого старта AP взят из примеров. Библиотека "STABLE"
Код:
void setup() {
    delay(1000);
    Serial.begin(115200);
    Serial.println();
    Serial.print("Configuring access point...");
    /* You can remove the password parameter if you want the AP to be open. */
    WiFi.softAP(ssid, password);

    while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); }

    Serial.println("done");
    IPAddress myIP = WiFi.softAPIP();
    Serial.print("AP IP address: ");
    Serial.println(myIP);
    server.on("/", handleRoot);
    server.begin();
    Serial.println("HTTP server started");
}
 

Discriminator

New member
Маленькое примечание: в отличие от примера - я пытаюсь сразу установить параметры сети до старта AP, а пример хватает то что предоставит ему SDK.
 

Victor

Administrator
Команда форума
Discriminator, судя по коду, [inline]WiFi.status()[/inline] не имеет отношение к AP - только для STATION. Да и по смыслу поднятие точки доступа не должно требовать значительного времени (только некоторое время включение передатчика), а в режиме STATION там обмен, идентификация и т.п., ощутимо более длительный процесс.
 

Discriminator

New member
Victor, вот и я примерно о том же.
И вообще - вроде я этот пример пробовал(точно не помню) но вроде все срабатывало. Только вот в чем дело.
все это дело проверяется, в принципе по:
if (status == STATION_GOT_IP) return WL_CONNECTED;
Т.е. это все справедливо пока сетевые настройки (IP-шные) подымаются в автомате...
Мне сейчас некогда эксперементировать, но получится, если я применю WiFi.config(). Оно тоже пожет проскочить ? Даже не успев соединиться ?

И, да, еще раз повторюсь - в принципе код "запуска" скопирован и дополнен из сопутствующих примеров.
А как эта штука поведет себя когда мне нужно стартовать в смешанном режиме и со статическими адресными параметрами ?
Вечерком свой код я поправлю и посмотрю как оно без данных проверок себя поведет...
 

Discriminator

New member
:D Подкачал найтли - текст "статуса" такой же, для AP никаких статусов, но в тексте примера изчезла проверка статуса :D
 

Victor

Administrator
Команда форума
еще так попробуйте (иногда коряво как-то обновляется)

1. деинсталлировать ESP8266 by esp8266 community forum
2. почистить C:/users/username/AppData/Roaming/Arduino15 (ну или где там оно у вас)
3. прописать nightly build json
4. инсталлировать ESP8266 by esp8266 community forum
 

Discriminator

New member
Код:
 Содержимое папки C:\Users\user\AppData\Roaming\Arduino15\packages\esp8266\h
ardware\esp8266

22.06.2015  16:24    <DIR>          .
22.06.2015  16:24    <DIR>          ..
28.05.2015  09:24    <DIR>          1.6.4-673-g8cd3697
22.06.2015  16:25    <DIR>          1.6.4-835-g77d77e8
Сейчас на "нерабочей машине" зачистка не актуальна - оно все равно в отдельную папку по номеру билда закачивается....
 

Victor

Administrator
Команда форума
в отдельную папку
При установке nightly build у меня подозрительно быстро скачались 130Мб, и были глюки, поэтому я сильно вникать не стал, все почистил и установил по новой. После этого стало ок. Вот вы заметили по времени и вашей скорости интернета 130Мб нормально качались или слишком быстро? Если все-таки быстро, то лучше почистить.
 

Discriminator

New member
Вот вы заметили по времени и вашей скорости интернета 130Мб нормально качались или слишком быстро? Если все-таки быстро, то лучше почистить.
проскочило быстро. Но, повторюсь, это не рабочая машинка. Те файлы которые меня интересовали изменились но я посмотрел конкретные места и отписался. На той машине где я вожусь со всем этим - естественно я буду через зачистку делать
 

Discriminator

New member
Victor, сейчас начал устанавливать "ночник" - там в "Ардуино15" 3 пакета качается esp8266, esptool, win_xtensa....
Так что обновление вполне может быть коротким если второй и третий файл не менялись...
Если, конечно, я правильно понимаю как эта штука работает...
 

Discriminator

New member
Arduino: 1.6.4 (Windows 7), Плата"Generic ESP8266 Module, 80 MHz, 115200, 512K (64K SPIFFS)"

c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o):(.literal+0x104): undefined reference to `__ieee754_sqrt'
c:/users/victor/appdata/roaming/arduino15/packages/esp8266/tools/xtensa-lx106-elf-gcc/1.20.0-26-gb404fb9/bin/../lib/gcc/xtensa-lx106-elf/4.8.2/../../../../xtensa-lx106-elf/lib\libm.a(lib_a-e_pow.o): In function `__ieee754_pow':
d:\ivan\projects\arduinoesp\toolchain\dl\esp-newlib\build\xtensa-lx106-elf\newlib\libm\math/../../../../../newlib/libm/math/e_pow.c:164: undefined reference to `__ieee754_sqrt'
collect2.exe: error: ld returned 1 exit status
Ошибка компиляции.

Это сообщение будет содержать больше информации чем
"Отображать вывод во время компиляции"
включено в Файл > Настройки
 
Сверху Снизу