• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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 и манипулируют ею.
 
Последнее редактирование:
Сверху Снизу