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

Телефон отключается от ESP из-за отсутствия интернета

Thest

New member
Не нашёл подобной темы, если есть аналогичная, прошу поделиться ссылкой.
Проблема 100% не новая, но решения и обсуждения не смог найти. Создаю точку доступа, подключаюсь к ней и через секунду-две телефон отключается от неё и подключается к мобильному интернету, соответственно веб-интерфейс становится недоступным, приходится переподключаться и появляется окошко "не отключаться от сети". Как решить проблему отключения от esp? может какие сертификаты прописываются в контроллер или библиотеки есть? Нужно именно в esp решить проблему, без манипуляций с телефоном. Гугл только котиков выдаёт..
 

Сергей_Ф

Moderator
Команда форума
Не нашёл подобной темы, если есть аналогичная, прошу поделиться ссылкой.
Проблема 100% не новая, но решения и обсуждения не смог найти. Создаю точку доступа, подключаюсь к ней и через секунду-две телефон отключается от неё и подключается к мобильному интернету, соответственно веб-интерфейс становится недоступным, приходится переподключаться и появляется окошко "не отключаться от сети". Как решить проблему отключения от esp? может какие сертификаты прописываются в контроллер или библиотеки есть? Нужно именно в esp решить проблему, без манипуляций с телефоном. Гугл только котиков выдаёт..
Правильно гугл выдает. Это настройки телефона, а не esp. Что-то типа Умного WiFi - которое и отключает от сетей без интернета.
 

Thest

New member
Правильно гугл выдает. Это настройки телефона, а не esp. Что-то типа Умного WiFi - которое и отключает от сетей без интернета.
Разве не нашлось обманного обхода? Может какие сертификаты или протоколы прописать.. вот например в торговых центрах есть внутренние точки доступа (наврятли что на ESP, но всё же) без доступа в интернет, где можно посмотреть карту и общую информацию о магазинах, и там WiFi не сбрасывается..
 

Сергей_Ф

Moderator
Команда форума
так там есть интернет, только не у вас (до авторизации). А тут его нет!
 

Thest

New member
так там есть интернет, только не у вас (до авторизации). А тут его нет!
А как телефон узнаёт о доступе в интернет? Полагаю, что он что-то пингует и получает оттуда инфу.. Что если сделать виртуальный сервер с данным адресом?
 

Сергей_Ф

Moderator
Команда форума
А как телефон узнаёт о доступе в интернет? Полагаю, что он что-то пингует и получает оттуда инфу.. Что если сделать виртуальный сервер с данным адресом?
С сертификатами SSL? Ну, ну...
Хотя можете попробовать, ставьте сниффер и анализируете пакеты.
 

Сергей_Ф

Moderator
Команда форума
но искали вы плохо

Это хоть немного не о том, но показывает многие ходы проверок.

и ещё
 

enjoynering

Well-known member
Создаю точку доступа, подключаюсь к ней и через секунду-две телефон отключается от неё и подключается к мобильному интернету, соответственно веб-интерфейс становится недоступным, приходится переподключаться и появляется окошко "не отключаться от сети".
такое бывает если вместе soft AP поднята STA и у нее активирован WiFi.setAutoConnect(true)
 

enjoynering

Well-known member
пробуйте еще перед setup() добавить это

Код:
RF_PRE_INIT()
{
  system_phy_set_powerup_option(3); //possible flash wear issue, need to research further
}
 

tretyakov_sa

Moderator
Команда форума
Код:
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>

const byte DNS_PORT = 53;
IPAddress apIP(8,8,4,4); // The default android DNS
DNSServer dnsServer;
WiFiServer server(80);

String responseHTML = ""
  "<!DOCTYPE html><html><head><title>CaptivePortal</title></head><body>"
  "<h1>Hello World!</h1><p>This is a captive portal example. All requests will "
  "be redirected here.</p></body></html>";

void setup() {
  WiFi.mode(WIFI_AP);
  WiFi.softAP("ESP32-DNSServer");
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));

  // if DNSServer is started with "*" for domain name, it will reply with
  // provided IP to all DNS request
  dnsServer.start(DNS_PORT, "*", apIP);

  server.begin();
}

void loop() {
  dnsServer.processNextRequest();
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {
    String currentLine = "";
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        if (c == '\n') {
          if (currentLine.length() == 0) {
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();
            client.print(responseHTML);
            break;
          } else {
            currentLine = "";
          }
        } else if (c != '\r') {
          currentLine += c;
        }
      }
    }
    client.stop();
  }
}
Попробуйте этот код не проверял, но думаю будет работать.
 
Сверху Снизу