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

Нужна помощь Не пинингуется в режиме точки доступа.

DrJarold

Member
Собственно используется WiFiManager для организации настройки подключения к сети ESP8266-12F:
Пример подключения:

Код:
bool Connection() {

    if ((WIFI_ENABLE && !isError) || isTest) {
        SendWiFiLog("WiFi:Try connect...");

        //Disable debug log connection
        wifiManager.setDebugOutput(true);
        //wifiManager.setAPStaticIPConfig(IPAddress(192, 168, 1, 100), IPAddress(192, 168, 1, 100), IPAddress(255, 255, 255, 0));
        wifiManager.setAPCallback(configModeCallback);
        wifiManager.setSaveConfigCallback(saveConfigCallback);
        wifiManager.setConfigPortalBlocking(false);
        /**
         * if we couldn't connected to save WiFi access point
         * we will start our own access point with ip address 192.168.1.4
         */
        if (wifiManager.autoConnect("AP: AquaController")) {
            SendWiFiLog("WiFi:Connect...");
            Udp.begin(localUdpPort);
            broadcastAddress = (uint32_t) WiFi.localIP() | ~((uint32_t) WiFi.subnetMask());
            SendWifiIp(true, true);
            SSDP_init();
            return true;
        } else {
            SendWiFiLog("WiFi:Start AP...");
            Udp.begin(localUdpPort);
            isAPMode = true;
            broadcastAddress = (uint32_t) WiFi.softAPIP() | ~((uint32_t) WiFi.subnetMask());
            SendWifiIp(true, true);

            return false;
        }
    } else {
        return false;
    }
}

/**
* callback for config mode
*/
void configModeCallback(WiFiManager *myWiFiManager) {
    SendWiFiLog("WiFi:Failed connect");
    SendWiFiLog("WiFi:Config mode...");
    SendWiFiLog("HTTP server start...");
}
Создается точка доступа, все устройства к ней могут подключиться, портал с настройкой открывается... Но точка не пинингуется... И естественно передать на нее ничего нельзя... Я так понимаю, или я что-то не понимаю, или так и должно быть? Но логика мне подсказыват что все же пинг должен быть... Точка доступа и устройство находятся в одной подсети, задание ручных настроек IP не помогает...

Вот лог с устройства:

Код:
{"status":"info","message":"wifi_log","log":"WiFi:v1.2.9.1-0.3   "}
{"status":"info","message":"wifi_log","log":"WiFi:Init complete.."}
{"status":"get","message":"set"}
{"status":"info","message":"wifi_log","log":"WiFi:Load config... "}
{"status":"info","message":"wifi_log","log":"WiFi:Try connect... "}
*WM: AutoConnect
*WM: Connecting as wifi client...
*WM: No saved credentials, skipping wifi
*WM: Connection result: WL_NO_SSID_AVAIL
*WM: AutoConnect: FAILED
*WM: Disabling STA
*WM: Enabling AP
*WM: StartAP with SSID:  AP: AquaController
*WM: AP has anonymous access!
*WM: AP IP address: 192.168.4.1
{"status":"info","message":"wifi_log","log":"WiFi:Failed connect "}
{"status":"info","message":"wifi_log","log":"WiFi:Config mode... "}
{"status":"info","message":"wifi_log","log":"HTTP server start..."}
*WM: Starting Web Portal
*WM: HTTP server started
*WM: WiFi Scan done
*WM: Config Portal Running, non blocking/processing
{"status":"info","message":"wifi_log","log":"WiFi:Start AP...    "}
{"status":"info","message":"wifi_log","log":"LAN:192.168.4.1     "}
{"status":"info","message":"wifi_log","log":"LAN:192.168.4.1     "}
 

CodeNameHawk

Moderator
Команда форума
Создается точка доступа, все устройства к ней могут подключиться, портал с настройкой открывается... Но точка не пинингуется... И естественно передать на нее ничего нельзя...
Точка доступа и устройство находятся в одной подсети, задание ручных настроек IP не помогает...
IMHO если к точке доступа есп не подключена, то сети нет(просто у всех есп одинаковые настройки сети), нет сети нет пинга.
 

DrJarold

Member
IMHO если к точке доступа есп не подключена, то сети нет(просто у всех есп одинаковые настройки сети), нет сети нет пинга.
ESP сама является точкой доступа, у нее есть IP 192.168.4.1 у клиента который подключился к точке доступа (ESP) есть IP который он получил по DHCP в той же сети что и точка доступа... Мы можем подключиться к http://192.168.4.1/ но не можем ее пингануть....
 

CodeNameHawk

Moderator
Команда форума
Как и что вы делаете хз.
Стандартный пример WiFiAccessPoint, все работает.
browser.png ping.png

Что бы пинговать с есп есть библиотека.
dancol90/ESP8266Ping
 

DrJarold

Member
Как и что вы делаете хз.
Стандартный пример WiFiAccessPoint, все работает.
Посмотреть вложение 6528 Посмотреть вложение 6529

Что бы пинговать с есп есть библиотека.
dancol90/ESP8266Ping
Я пытаюсь пинговать не с ESP! Я пытаюсь пингануть саму ESP которая работает как точка доступа. Причем вебсервер работает а пинг не проходит.
 

Юрий Ботов

Moderator
Команда форума
пардон, при чем тут web сервер? Ping идет по igmp, вы соответствующий обработчик поставили? Или я не прав?
 

CodeNameHawk

Moderator
Команда форума
Я пытаюсь пинговать не с ESP!
Не надо так громко кричать. (Если бы подумали, то с картинок видно, что я догадался и без вашей подсказки.)

Я сделал, что вы пытаетесь сделать и показал результат.
Вам дальше объяснять, что нужно сделать, что бы я увидел, что у вас твориться?
 

vdbvdb

New member
пардон, при чем тут web сервер? Ping идет по igmp, вы соответствующий обработчик поставили? Или я не прав?
ну, к счастью тут пинг идёт по ICMP.
IGMP мы оставим для мультикаста.
сорри за придирку, просто человек начнет искать, чо эта за фигня такая, и ничего не поймет.

А можно про этот обработчик чуть подробнее?
Дело в том, что пинг - это специальные пакеты протокола ICMP ICMP — Википедия , который хоть и входит в стек (набор) протоколов TCP/IP, но вообще-то вовсе не обязателен для того, чтобы работал ваш Web-сервер. Это такой сервисный протокол, по которому человеческие данные в общем-то почти и не ходят, только разные сервисные сообщения, используемые для диагностики сети - типа "да тут, я тут". (о, придумал аналогию - это как CAN шина в автомобиле.)

И вот я могу сейчас дико заблуждаться, но мне кажется, что этот протокол просто не реализован в прошивке вашей ESP. То есть ваша ESP ездит, бибикает, отвечает по HTTP (web-сервер), но вот CAN шины в ней нет.

То есть что получается: железка получает какой-то пакет, смотрит на его сигнатуру и видит, что это пакет с типом 1 (Список протоколов, инкапсулируемых в IP — Википедия ). Смотрит у себя, мол, кто у меня обрабатывает такие пакеты, есть ли у меня такая библиотека-обработчик? И не находит... нет такой библиотеки у неё. Ну и просто отбрасывает (игнорирует) этот пакет. Ваш компьютер ждёт-ждёт ответа, и, не дожидаясь, сообщает вам, мол, сорри, но время ожидания вышло (Time out).

Что можно сделать? Всё зависит от задачи.
Если задача - мониторить, что железка жива, то можно воспользоваться протоколом TCP - просто послать SYN на закрытый порт. Теоретически железка должна ответить вам пакетом RST (и вы сразу получите Connection refused). Но может и проигнорировать его, тут надо проверить (и тогда тот же таймаут). Да и вообще, варианты есть.. Но если же нужно гонять именно ICMP echo request/reply, то выход один - искать, или реализовывать самостоятельно библиотеку, реализующую протокол ICMP.
 
Последнее редактирование:
Сверху Снизу