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

Как проверить доступна ли точка доступа?

Да нет у меня никаких умных домов! Есть дачный летний домик, с обычными. кое-где еще Советскими розетками! :ROFLMAO:
Аккум стоит 32700 на 13800 мАч lifepo4 3,2 В. Хватает где-то недели на 2. Больше не тестировал.
Короче, ничего умного там нет. Есть метеостанция с экраном, по которому бегают цифири, когда 220В есть и которая сохраняет каждые 10 минут метеоданные на флешку 4Гига объемом. Для ESP я нарисовал сайт, в котором в реальном времени можно так же посмотреть метео показатели и бегаю графики изменения оных. Ну и можно вызвать данные за определенный месяц или за определенное число в виде таблицы или графиков глубиной 1 год.
Собственно все работает. Осталось мне вот реконнект отработать и всё.
 

pvvx

Активный участник сообщества
И сунул в сарай, т.к. мне лень ходить на километр. Связь BLE LongRange обычно все провряльщики указывают за 1 км. Но у нас тут рельеф не тот, чтобы найти ровно по прямой более 1 км.
А у ESP32 TX RF и в BLE можно включить и на +20дБ. Правда жрет оно....
Так что подумайте - нужен ли вам WiFi для датчиков, если им хватает CR2032 на полтора года работы.
 
Перенес строки
Код:
  if (WiFi.getAutoConnect()   != true) {WiFi.setAutoConnect(true);}   //set auto connection to last recorded wireless network on power-on
  if (WiFi.getAutoReconnect() != true) {WiFi.setAutoReconnect(true);} //set auto reconnection to wireless network if disconnected
в setup. На всякий пожарный туда же добавил
WiFi.persistent(false);
Не работает. Не подключается заново к WiFI точке при ее включении после перехода в режим AP.
Я вот думаю, может оно и не должно? Вот если в режим AP не переводить, то подключение происходит к WiFi е после пропадания и последующего восстановления у нее питания.
Я просто думаю, а с какого перепугу, находясь в режиме AP оно вдруг начнет подключаться к восстановившейся точке? Для этого у нее должно что-то постоянно эту точку мониторить. Может все-таки какое-то событие должно возникнуть при появлении в сети точки доступа?
 

aZholtikov

Active member
Режим WIFI_AP_STA.
Точка доступа работает всегда. При потери соединения с роутером девайс пытается переподключится. А точка доступа работает всегда... :)
 
Режим WIFI_AP_STA.
Точка доступа работает всегда. При потери соединения с роутером девайс пытается переподключится. А точка доступа работает всегда... :)
Вот щас не понял. Т.е. вы хотите сказать, что в этом режиме у устройства 2 IP адреса? Один свой, т.к. оно точка доступа и второй от WiFi-ной точки, к которой оно подключено?
 
Да. 2 IP. 2 MAC. Прекрасно работают параллельно.
Странно, что в в самой библиотеке такой пример не рассматривается. нет у вас ссылочки на пример использования такого режима?
И нет ли там подводных камней? Ведь получается этот режим удобнее, чем STA, т.к. устройство доступно всегда, даже когда что-то случилось с точкой доступа(WiFi точкой).
 

aZholtikov

Active member
Странно, что в в самой библиотеке такой пример не рассматривается. нет у вас ссылочки на пример использования такого режима?
И нет ли там подводных камней? Ведь получается этот режим удобнее, чем STA, т.к. устройство доступно всегда, даже когда что-то случилось с точкой доступа(WiFi точкой).
Подводных камней пока не обнаружил.
Моя реализация здесь. https://github.com/aZholtikov/ESP-NOW-Gateway (там параллельно 3 режима - AP+STA+ESP-NOW).
 

CodeNameHawk

Moderator
Команда форума
в setup. На всякий пожарный туда же добавил
WiFi.persistent(false);
Не работает. Не подключается заново к WiFI точке при ее включении после перехода в режим AP.
Я вот думаю, может оно и не должно?
Надо разделять, не работает так как должно или так как вы себе это представляете.
Понятно, что без написания кода не обойтись.
Проверяйте WiFi.status() https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-class.html
И делайте что надо, а у вас надо не мало, переключить всех с AP на STA.
Поэтому проще делать как я писал
Если устройств меньше пяти или они подключаются в разное время, то есть вариант работы работы через есп, которая работает в режиме STA+AP...
Тут будет достаточно проверять работает ли STA, так как AP будет все время работать.
 
Народ, а я вот что-то не могу найти. Есть возможность спросить у ESP-шки в каком режиме она находится? Клиента или точки доступа, ну или в двойном?
Я как бы изначально переменную завел. но должно же быть что-то штатное?
 

aZholtikov

Active member
Народ, а я вот что-то не могу найти. Есть возможность спросить у ESP-шки в каком режиме она находится? Клиента или точки доступа, ну или в двойном?
Я как бы изначально переменную завел. но должно же быть что-то штатное?
WiFi.getMode()
 
Надо разделять, не работает так как должно или так как вы себе это представляете.
Понятно, что без написания кода не обойтись.
Проверяйте WiFi.status() https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/station-class.html
И делайте что надо, а у вас надо не мало, переключить всех с AP на STA.
Поэтому проще делать как я писал
Ну вот и ответ на мой посчледний вопрос. Но сейчас не об этом.
Всех у меня один! :LOL: Вопрос не в том, что бы переключить, а в том, чтобы узнать, стала доступна точка доступа или нет. Ну не запускать же тупо подключение каждые сколько-то секунд?
Я собственно уже накидал тут. Если режим AP, то каждые 10 секунд смотрим окружение и если есть нужный SSID, то подключаемся. Во всяком случае работает без сбоев:
Код:
  if (millis() - zd >= 10000) {
    zd = millis();
    if (wifimode == 0) {
      int n = WiFi.scanNetworks();
      Serial.println("scan done");
      if (n == 0) {
          Serial.println("no networks found");
      } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
          // Print SSID and RSSI for each network found
          if (WiFi.SSID(i) == jsonRead(configSetup, "ssid")) {
            WIFIinit();
            break;
          }
        }
      }
    }
  }
aZholtikov
Вашу блиотеку посмотрел. Спасибо за совет. Но честно поленился переписывать всю инициализацию WiFi.
 

CodeNameHawk

Moderator
Команда форума
Я как бы изначально переменную завел.
Так оно только таким как задали, и будет, не переключиться если не нет связи.
Ну не запускать же тупо подключение каждые сколько-то секунд?
Если секунды заменить на десятки минут, то да или как советовали вам выше использовать события
https://arduino-esp8266.readthedocs.io/en/latest/esp8266wifi/generic-class.html
 
Если секунды заменить на десятки минут, то да или как советовали вам выше использовать события
Я не нашел событие, которое бы говорило о том, что точка доступа, которая прописана в скетче, снова стала доступна. А события по севету выше я использую. Событие подключения к точке доступа и отключения от нее.
 
Сверху Снизу