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