• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

проблема с соединением c AP сервером на esp8266

Soyer

Member
здравствуйте!
проблема такая: по примеру с https://habr.com/ru/post/504514/ поднял сервер, но соединиться с ним не могу ни со смартфона, ни с ПК. Такое чувство, что связано с временем ожидания клиента .
пример:
C++:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>

ESP8266WebServer webServer(80);

const char *ssid = "TEST-123";
const char *password = NULL; // "12345678";

IPAddress apIP(192, 168, 1, 4);
DNSServer dnsServer;
const char *server_name = "www.myesp32.com";  // Can be "*" to all DNS requests

String responseHTML = "<!DOCTYPE html><html>"
                      "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
                      "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"
                      "</style></head>"
                      "<body><h1>ESP32 Web Server</h1>"
                      "<p>Hello World</p>"
                      "</body></html>";

void setup() {
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);
  delay(100);
 На ПК при соединении такое окно:
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));

  const byte DNS_PORT = 53;
  dnsServer.start(DNS_PORT, server_name, apIP);

  webServer.onNotFound([]() {
    webServer.send(200, "text/html", responseHTML);
  });
  webServer.begin();
}

void loop() {
  dnsServer.processNextRequest();
  webServer.handleClient();
}
На ПК при соединении такое окно:
Безымянный.png
 

pvvx

Активный участник сообщества
У вас собственный зарегистрированный домен "myesp32" ?
В частной сети такое имя не всегда прокатит. Винда не настолько тупая, чтобы не отличать локальные имена со внешними...
На Habr-е пишут дети, не понимая ничего...
 

Soyer

Member
У вас собственный зарегистрированный домен "myesp32" ?
В частной сети такое имя не всегда прокатит. Винда не настолько тупая, чтобы не отличать локальные имена со внешними...
На Habr-е пишут дети, не понимая ничего...
На DNSServer не смотрите, я его убрал, захожу чисто по IP - тот же результат
 

Soyer

Member
У вас собственный зарегистрированный домен "myesp32" ?
В частной сети такое имя не всегда прокатит. Винда не настолько тупая, чтобы не отличать локальные имена со внешними...
На Habr-е пишут дети, не понимая ничего...
Код:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

ESP8266WebServer webServer(80);

const char *ssid = "TEST-123";
const char *password = NULL; // "12345678";

IPAddress apIP(192, 168, 1, 4);
String responseHTML = "<!DOCTYPE html><html>"
                      "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
                      "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"
                      "</style></head>"
                      "<body><h1>ESP32 Web Server</h1>"
                      "<p>Hello World</p>"
                      "</body></html>";

void setup() {
  WiFi.mode(WIFI_AP);
  WiFi.softAP(ssid, password);
  delay(100);
 
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  webServer.onNotFound([]() {
    webServer.send(200, "text/html", responseHTML);
  });
  webServer.begin();
}

void loop() {
  webServer.handleClient();
}
 

pvvx

Активный участник сообщества
"возможность подключения ограничена" бывает от разных проблем.
В частности у вас уже есть IP сеть с 192.168.1.x на компе и возникает конфликт.
Остальное по больше части приколы Микрософт...
 

CodeNameHawk

Moderator
Команда форума
const char *password = NULL; // "12345678";
Попробуйте заменить Null на = ""; Или задайте пароль не менее 8 символов.
Адрес замените на 192.168.4.1, хотя это и не обязательно.
Попробуйте подключиться к точке. Может и не написать, что подключился.
Но и так попробуйте в браузере компа ввести http://192.168.4.1/
 
Последнее редактирование:

pvvx

Активный участник сообщества
Исправьте IPAddress apIP(192, 168, 1, 4); на что-то подобное IPAddress apIP(192, 168, 4, 1);
 

pvvx

Активный участник сообщества
Попробуйте заменить Null на = ""; Или задайте пароль не менее 8 символов.
*password = NULL; работает как общедоступная, т.е. без пароля.
Адрес замените на 192.168.4.1, хотя это и не обязательно.
xx.xx.xx.1 Обязательно, если нет поддержки DHCP с обоих сторон и их сети не равны.
 

CodeNameHawk

Moderator
Команда форума
xx.xx.xx.1 Обязательно, если нет поддержки DHCP с обоих сторон и их сети не равны.
Посмотрите пример в doc soft access там адрес 4.22 и работает.
"А вот сети не равны" не ясно, что вы имеете ввиду если комп подключился к есп, то сеть та же.
 
Последнее редактирование:

Soyer

Member
Попробуйте заменить Null на = ""; Или задайте пароль не менее 8 символов.
Адрес замените на 192.168.4.1, хотя это и не обязательно.
Попробуйте подключиться к точке. Может и не написать, что подключился.
Но и так попробуйте в браузере компа ввести http://192.168.4.1/
пробовал.
на примере ниже видно что сначала соединение происходит (Stations connected = 1), но через 5 - 10 сек. Stations connected = 0.
C++:
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
ESP8266WebServer webServer(80);
const char *ssid = "TEST-123";
const char *password =  "12345678";
IPAddress apIP(192, 168, 1, 4);
String responseHTML = "<!DOCTYPE html><html>"
                      "<head><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">"
                      "<style>html { font-family: Helvetica; display: inline-block; margin: 0px auto; text-align: center;}"
                      "</style></head>"
                      "<body><h1>ESP32 Web Server</h1>"
                      "<p>Hello World</p>"
                      "</body></html>";

void setup()
{
  Serial.begin(115200);
  Serial.println();
  WiFi.mode(WIFI_AP);
  Serial.print("Setting soft-AP ... ");
  //  "Настройка программной точки доступа ... "
  Serial.println(WiFi.softAP(ssid, password) ? "Ready" : "Failed!");
  delay(100);
  WiFi.softAPConfig(apIP, apIP, IPAddress(255, 255, 255, 0));
  webServer.onNotFound([]() {
    webServer.send(200, "text/html", responseHTML);
  });
  webServer.begin();
}


void loop()
{
  Serial.printf("Stations connected = %d\n",
                WiFi.softAPgetStationNum());
  //  "Количество подключенных станций = "
  delay(3000);
  webServer.handleClient();
}
 

pvvx

Активный участник сообщества
Если используете что-то типа apIP(192, 168, 14, 4), тогда вам придется настроить сетевой адаптер WiFi так:
1673967010619.png
И тогда в браузере при вводе 192.168.14.4 получите
1673967088614.png
 

Soyer

Member
"возможность подключения ограничена" бывает от разных проблем.
В частности у вас уже есть IP сеть с 192.168.1.x на компе и возникает конфликт.
Остальное по больше части приколы Микрософт...
нет таких сетей. пробовал и 192.168.45.100 , да хоть чего вводи, результат тот же
Безымянный.png
 

Soyer

Member
Если используете что-то типа apIP(192, 168, 14, 4), тогда вам придется настроить сетевой адаптер WiFi так:
Посмотреть вложение 12734
И тогда в браузере при вводе 192.168.14.4 получите
Посмотреть вложение 12735
проблема в том что и с андроидом тоже не соеденяется
 

pvvx

Активный участник сообщества
Ну у вас нет DHCP в скетче... От этого и все сложности.
Винда по умолчанию ставит на сеть 169.254.74.x
И если вам в лом запустить DHCP, то сделайте
IPAddress apIP(169,254,74,55);
И получите:
1673967639406.png
 
Сверху Снизу