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

Как определить создана ли точка доступа(softAP)?

max256

New member
Всем привет. Кто знает, подскажите, можно ли определить была ли ранее поднята softAP? Если с подключением к точке доступа всё понятно, берешь WiFi.status() и сравниваешь состояние, то для softAP должно быть что-то другое.
Понятно, если загнать WiFi.softAP в условие, то можно понять подняли точку или нет, но если ранее уже создали и повторить softAP получаем ошибку. Вопрос, есть какой-то статус у softAP или нужно самому за этим следить и ввести переменную, в которой будем отмечать статус softAP в момент поднятия и дальше верим, что всё ок, пока намеренно не выполним WiFi.softAPdisconnect(true) ?
 

enjoynering

Well-known member
для этого в arduino es8266 есть WiFiEventHandler. Определяет почти все состояния wifi modem реальном времени.

пример - тыц
 

max256

New member
WL_AP_MODE_ENABLED (7)

Не то?
это для esp32?
я вижу только
typedef enum {
WL_NO_SHIELD = 255, // for compatibility with WiFi Shield library
WL_STOPPED = 254,
WL_IDLE_STATUS = 0,
WL_NO_SSID_AVAIL = 1,
WL_SCAN_COMPLETED = 2,
WL_CONNECTED = 3,
WL_CONNECT_FAILED = 4,
WL_CONNECTION_LOST = 5,
WL_DISCONNECTED = 6
} wl_status_t;


для этого в arduino es8266 есть WiFiEventHandler. Определяет почти все состояния wifi modem реальном времени.

пример - тыц
как вариант, у esp32 тоже такое есть https://docs.espressif.com/projects/arduino-esp32/en/latest/api/wifi.html пусть это не проверка, а именно событие, но это уже хорошо.
 

enjoynering

Well-known member
По событию можно вызвать функцию.

У меня именно так (по событиям) во всех проектах подымается точка доступа (при отключении от роутера) и точно так же она гасится при поключении к роутеру. Все это на автомате (без проверок и кода в главном loop)

Случилось событие, оно (событие) вызвало функцию. Все.
 

Сергей_Ф

Moderator
Команда форума
я вижу только
typedef enum {
WL_NO_SHIELD = 255, // for compatibility with WiFi Shield library
WL_STOPPED = 254,
WL_IDLE_STATUS = 0,
WL_NO_SSID_AVAIL = 1,
WL_SCAN_COMPLETED = 2,
WL_CONNECTED = 3,
WL_CONNECT_FAILED = 4,
WL_CONNECTION_LOST = 5,
WL_DISCONNECTED = 6
} wl_status_t;
странно. Я тоже сейчас не вижу, хотя точно использовал раньше.
Ок. А такой вариант
WiFi.softAPIP().isValid(WiFi.softAPIP()) ?

Можно и просто анализировать WiFi.softAPIP().
Ну и посмотрел в библиотеке WiFi Manager - тупо заводят переменную bool apStarted и манипулируют ею.
 
Последнее редактирование:
Сверху Снизу