• Система автоматизации с открытым исходным кодом на базе 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
 
Сверху Снизу