Esp32 подключается, но WiFi.Status не становится WL_CONNECTED

Deamount
Offline
Зарегистрирован: 07.05.2012

Прошу помощи. 
код 

01for (i = 1; i < 3; i++) {
02  Serial.println("Connecting to wifi " + String(ssid) + ": try " + String(i));
03  // delete old config
04  WiFi.disconnect(true);
05  delay(1000);
06  // register wifi event callback
07  WiFi.onEvent(WiFiEvent);
08  WiFi.onEvent(WiFiGotIP, WiFiEvent_t::SYSTEM_EVENT_STA_GOT_IP);
09  // Connect to WiFi network
10  WiFi.enableSTA(true);
11  WiFi.begin(ssid, password);
12  ssid_str=String(ssid);
13  // Wait for connection
14  j = 0;
15  while ((WiFi.status() != WL_CONNECTED) & (j < 5)) {
16    delay(500);
17    Serial.print(".");
18    j++;
19  }

к телефону, к роутеру микротик подключается. В нужном помещении дочка доступа не известная мне (вероятно убикьюти), доступа к настройкам нет, но айти прописал маки и ноутбука моего и esp32. ноутбук подключается к точке доступа нормально, а esp32 не подключается. 
Вернее наступает событие Connected to access point (4), но WiFi.status() не равен WL_CONNECTED.

вот как это в логе:

.Connecting to wifi XXX: try 1
[WiFi-event] event: 5   Disconnected from WiFi access point
[WiFi-event] event: 3   WiFi clients stopped
[WiFi-event] event: 0   WiFi interface ready
[WiFi-event] event: 2   WiFi client started
[WiFi-event] event: 0   WiFi interface ready
[WiFi-event] event: 4   Connected to access point
.....Connecting to wifi XXX: try 2
[WiFi-event] event: 3   WiFi clients stopped
[WiFi-event] event: 0   WiFi interface ready
[WiFi-event] event: 2   WiFi client started
[WiFi-event] event: 0   WiFi interface ready
[WiFi-event] event: 4   Connected to access point
.....Connecting to wifi M2021: try 3
[WiFi-event] event: 3   WiFi clients stopped
[WiFi-event] event: 0   WiFi interface ready
[WiFi-event] event: 2   WiFi client started
[WiFi-event] event: 0   WiFi interface ready
....
[WiFi-event] event: 5   Disconnected from WiFi access point

И так по кругу...
Как решить эту проблему?

 

sadman41
Offline
Зарегистрирован: 19.10.2016

Без логов ТД гадать можно бесконечно долго.

Deamount
Offline
Зарегистрирован: 07.05.2012

как их получить? как включить режим debug ?

sadman41
Offline
Зарегистрирован: 19.10.2016

Если это UAP от убика, то на UniFi Controller-е.  Он вполне себе может отшивать устройства с низким уровнем передачи.

Ну и на ESP можно что-то типа Debug level включить, верно мыслите.

Deamount
Offline
Зарегистрирован: 07.05.2012

WiFi.onEvent(WiFiEvent);

Функция обработчик событий говорит, что соединение с точной доступа произошло! :
[WiFi-event] event: 4 Connected to access point

Но на этом всё, ничего больше не происходит, никаких событий, нет выдачи адреса и т.д.
Ноутбук получает адрес динамический, т.е dhcp сервер там есть.

Почитал про дебаг, кроме jtag и прочих сложных отладчиков ничего не нашел, т.е. вариантов более глубокой отладки, чем события, нет.

sadman41
Offline
Зарегистрирован: 19.10.2016

Да может тупо ошибка в маке еспшки на стороне точки доступа. Без ее логов не понять.

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Покажите нам две ваши функции:

WiFiEvent и WiFiGotIP , тогда посмотрим.

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

Как включить отладочные сообщения для ESP32:

Deamount
Offline
Зарегистрирован: 07.05.2012

Спасибо за debug level, сегодня попробую
вот код:

01//---обработчик событий wifi-------------------------------------------------------------------------------------
02void WiFiEvent(WiFiEvent_t event) {
03  Serial.printf("[WiFi-event] event: %d   ", event);
04  switch (event) {
05    case SYSTEM_EVENT_WIFI_READY:
06      Serial.println("WiFi interface ready");
07      break;
08    case SYSTEM_EVENT_SCAN_DONE:
09      Serial.println("Completed scan for access points");
10      break;
11    case SYSTEM_EVENT_STA_START:
12      Serial.println("WiFi client started");
13      break;
14    case SYSTEM_EVENT_STA_STOP:
15      Serial.println("WiFi clients stopped");
16      break;
17    case SYSTEM_EVENT_STA_CONNECTED:
18      Serial.println("Connected to access point");
19      break;
20    case SYSTEM_EVENT_STA_DISCONNECTED:
21      Serial.println("Disconnected from WiFi access point");
22      WiFi.begin(ssid, password);
23      break;
24    case SYSTEM_EVENT_STA_AUTHMODE_CHANGE:
25      Serial.println("Authentication mode of access point has changed");
26      break;
27    case SYSTEM_EVENT_STA_GOT_IP:
28      Serial.print("Obtained IP address: ");
29      Serial.println(WiFi.localIP());
30      break;
31    case SYSTEM_EVENT_STA_LOST_IP:
32      Serial.println("Lost IP address and IP address is reset to 0");
33      break;
34    case SYSTEM_EVENT_STA_WPS_ER_SUCCESS:
35      Serial.println("WiFi Protected Setup (WPS): succeeded in enrollee mode");
36      break;
37    case SYSTEM_EVENT_STA_WPS_ER_FAILED:
38      Serial.println("WiFi Protected Setup (WPS): failed in enrollee mode");
39      break;
40    case SYSTEM_EVENT_STA_WPS_ER_TIMEOUT:
41      Serial.println("WiFi Protected Setup (WPS): timeout in enrollee mode");
42      break;
43    case SYSTEM_EVENT_STA_WPS_ER_PIN:
44      Serial.println("WiFi Protected Setup (WPS): pin code in enrollee mode");
45      break;
46    case SYSTEM_EVENT_AP_START:
47      Serial.println("WiFi access point started");
48      break;
49    case SYSTEM_EVENT_AP_STOP:
50      Serial.println("WiFi access point  stopped");
51      break;
52    case SYSTEM_EVENT_AP_STACONNECTED:
53      Serial.println("Client connected");
54      break;
55    case SYSTEM_EVENT_AP_STADISCONNECTED:
56      Serial.println("Client disconnected");
57      break;
58    case SYSTEM_EVENT_AP_STAIPASSIGNED:
59      Serial.println("Assigned IP address to client");
60      break;
61    case SYSTEM_EVENT_AP_PROBEREQRECVED:
62      Serial.println("Received probe request");
63      break;
64    case SYSTEM_EVENT_GOT_IP6:
65      Serial.println("IPv6 is preferred");
66      break;
67    case SYSTEM_EVENT_ETH_START:
68      Serial.println("Ethernet started");
69      break;
70    case SYSTEM_EVENT_ETH_STOP:
71      Serial.println("Ethernet stopped");
72      break;
73    case SYSTEM_EVENT_ETH_CONNECTED:
74      Serial.println("Ethernet connected");
75      break;
76    case SYSTEM_EVENT_ETH_DISCONNECTED:
77      Serial.println("Ethernet disconnected");
78      break;
79    case SYSTEM_EVENT_ETH_GOT_IP:
80      Serial.println("Obtained IP address");
81      break;
82    default: break;
83  }
84}
85 
86//---обработчик событий wifi-------------------------------------------------------------------------------------
87void WiFiGotIP(WiFiEvent_t event, WiFiEventInfo_t info) {
88  Serial.println("WiFi connected");
89  Serial.println("IP address: ");
90  Serial.println(IPAddress(info.got_ip.ip_info.ip.addr));
91}

 

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Ну так повесте контроль на получение IP. В примере который вы курили есть :

1WiFiEventId_t eventID = WiFi.onEvent([](WiFiEvent_t event, WiFiEventInfo_t info){
2    Serial.print("WiFi lost connection. Reason: ");
3    Serial.println(info.disconnected.reason);
4}, WiFiEvent_t::SYSTEM_EVENT_STA_DISCONNECTED);
5Serial.print("WiFi Event ID: ");
6Serial.println(eventID);

Узнаем причину облома.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

почитаю

Deamount
Offline
Зарегистрирован: 07.05.2012

Извиняюсь, оказалось проблема была на стороне роутера, айтишник неправильно прописал мак адрес (
поэтому точка доступа не выдавала адрес

pilnikov
pilnikov аватар
Offline
Зарегистрирован: 28.08.2015

доброго времени

столкнулся с похожей траблой

пытаюсь реализовать реконнект вафли после обрыва связи (Применительно к ЕСП32)

получаю следующее: (После холодного резета все замечательно - точка подключается и останавливается корректно) 

Но вот вторая попытка оказывается неудачной

0109:13:28.571 -> Trying to connect a Home
0209:13:29.566 -> WiFi Event ID: 6
0309:13:29.566 -> Cannot resume WiFi connection, connecting via begin...
0409:13:29.566 -> [WiFi-event] event code: 0
0509:13:29.566 -> WiFi interface ready
0609:13:29.566 -> [WiFi-event] event code: 0
0709:13:29.566 -> WiFi interface ready
0809:13:29.566 -> [WiFi-event] event code: 2
0909:13:29.566 -> WiFi client started
1009:13:29.566 -> [WiFi-event] event code: 2
1109:13:29.566 -> WiFi client started
1209:13:31.643 -> [WiFi-event] event code: 5
1309:13:31.643 -> Disconnected from WiFi access point
1409:13:31.643 -> WiFi lost connection. Reason: 201
1509:13:31.643 -> [WiFi-event] event code: 5
1609:13:31.643 -> Disconnected from WiFi access point
1709:13:31.643 -> WiFi lost connection. Reason: 201
1809:13:31.691 -> Cannot connect to Home
1909:13:31.691 -> Trying to start access point C3_13

И как я разумею своим узким умишком все дело в этой строчке

109:13:29.566 -> WiFi Event ID: 6

При удачном коннекте она была равна 3

Видимо ид и пароль могут взяться откуда то из другого места?

В 8266 был 

1if (WiFi.getPersistent() == true) WiFi.persistent(false);   //disable saving wifi config into SDK flash area

В 32ке может есть что то похожее?

brokly
brokly аватар
Offline
Зарегистрирован: 08.02.2014

Скорее всего дело в работе вашего роутера. Попробуйте подключаться не сразу после разрыва связи, а через 5 секунд например.

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

brokly пишет:

Скорее всего дело в работе вашего роутера. Попробуйте подключаться не сразу после разрыва связи, а через 5 секунд например.


5 секунд мало, сейчас в рутерах есть радиус, а у него тики раз минута