Скрыть объявление
На нашем форуме недоступен просмотр изображений для неавторизованных пользователей. Если Вы уже зарегистрированы на нашем форуме, то можете войти. Если у Вас еще нет аккаунта, мы будем рады, если Вы к нам присоединитесь. Зарегистрироваться Вы можете здесь.

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

Тема в разделе "Раздел для начинающих", создана пользователем DrJarold, 3 июл 2018.

  1. DrJarold

    DrJarold Новичок

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

    Код (Text):
    1. bool Connection() {
    2.  
    3.     if ((WIFI_ENABLE && !isError) || isTest) {
    4.         SendWiFiLog("WiFi:Try connect...");
    5.  
    6.         //Disable debug log connection
    7.         wifiManager.setDebugOutput(true);
    8.         //wifiManager.setAPStaticIPConfig(IPAddress(192, 168, 1, 100), IPAddress(192, 168, 1, 100), IPAddress(255, 255, 255, 0));
    9.         wifiManager.setAPCallback(configModeCallback);
    10.         wifiManager.setSaveConfigCallback(saveConfigCallback);
    11.         wifiManager.setConfigPortalBlocking(false);
    12.         /**
    13.          * if we couldn't connected to save WiFi access point
    14.          * we will start our own access point with ip address 192.168.1.4
    15.          */
    16.         if (wifiManager.autoConnect("AP: AquaController")) {
    17.             SendWiFiLog("WiFi:Connect...");
    18.             Udp.begin(localUdpPort);
    19.             broadcastAddress = (uint32_t) WiFi.localIP() | ~((uint32_t) WiFi.subnetMask());
    20.             SendWifiIp(true, true);
    21.             SSDP_init();
    22.             return true;
    23.         } else {
    24.             SendWiFiLog("WiFi:Start AP...");
    25.             Udp.begin(localUdpPort);
    26.             isAPMode = true;
    27.             broadcastAddress = (uint32_t) WiFi.softAPIP() | ~((uint32_t) WiFi.subnetMask());
    28.             SendWifiIp(true, true);
    29.  
    30.             return false;
    31.         }
    32.     } else {
    33.         return false;
    34.     }
    35. }
    36.  
    37. /**
    38. * callback for config mode
    39. */
    40. void configModeCallback(WiFiManager *myWiFiManager) {
    41.     SendWiFiLog("WiFi:Failed connect");
    42.     SendWiFiLog("WiFi:Config mode...");
    43.     SendWiFiLog("HTTP server start...");
    44. }
    Создается точка доступа, все устройства к ней могут подключиться, портал с настройкой открывается... Но точка не пинингуется... И естественно передать на нее ничего нельзя... Я так понимаю, или я что-то не понимаю, или так и должно быть? Но логика мне подсказыват что все же пинг должен быть... Точка доступа и устройство находятся в одной подсети, задание ручных настроек IP не помогает...

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

    Код (Text):
    1. {"status":"info","message":"wifi_log","log":"WiFi:v1.2.9.1-0.3   "}
    2. {"status":"info","message":"wifi_log","log":"WiFi:Init complete.."}
    3. {"status":"get","message":"set"}
    4. {"status":"info","message":"wifi_log","log":"WiFi:Load config... "}
    5. {"status":"info","message":"wifi_log","log":"WiFi:Try connect... "}
    6. *WM: AutoConnect
    7. *WM: Connecting as wifi client...
    8. *WM: No saved credentials, skipping wifi
    9. *WM: Connection result: WL_NO_SSID_AVAIL
    10. *WM: AutoConnect: FAILED
    11. *WM: Disabling STA
    12. *WM: Enabling AP
    13. *WM: StartAP with SSID:  AP: AquaController
    14. *WM: AP has anonymous access!
    15. *WM: AP IP address: 192.168.4.1
    16. {"status":"info","message":"wifi_log","log":"WiFi:Failed connect "}
    17. {"status":"info","message":"wifi_log","log":"WiFi:Config mode... "}
    18. {"status":"info","message":"wifi_log","log":"HTTP server start..."}
    19. *WM: Starting Web Portal
    20. *WM: HTTP server started
    21. *WM: WiFi Scan done
    22. *WM: Config Portal Running, non blocking/processing
    23. {"status":"info","message":"wifi_log","log":"WiFi:Start AP...    "}
    24. {"status":"info","message":"wifi_log","log":"LAN:192.168.4.1     "}
    25. {"status":"info","message":"wifi_log","log":"LAN:192.168.4.1     "}
     
  2. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.712
    Симпатии:
    185
    IMHO если к точке доступа есп не подключена, то сети нет(просто у всех есп одинаковые настройки сети), нет сети нет пинга.
     
  3. DrJarold

    DrJarold Новичок

    Сообщения:
    18
    Симпатии:
    0
    ESP сама является точкой доступа, у нее есть IP 192.168.4.1 у клиента который подключился к точке доступа (ESP) есть IP который он получил по DHCP в той же сети что и точка доступа... Мы можем подключиться к http://192.168.4.1/ но не можем ее пингануть....
     
  4. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.712
    Симпатии:
    185
    Как вы ее пингуете?
     
  5. DrJarold

    DrJarold Новичок

    Сообщения:
    18
    Симпатии:
    0
    т.е. Как? Обычным способом ping 192.168.4.1
    И получаю request timed out...
     
  6. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.712
    Симпатии:
    185
    Как и что вы делаете хз.
    Стандартный пример WiFiAccessPoint, все работает.
    browser.png ping.png

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

    DrJarold Новичок

    Сообщения:
    18
    Симпатии:
    0
    Я пытаюсь пинговать не с ESP! Я пытаюсь пингануть саму ESP которая работает как точка доступа. Причем вебсервер работает а пинг не проходит.
     
  8. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.055
    Симпатии:
    177
    пардон, при чем тут web сервер? Ping идет по igmp, вы соответствующий обработчик поставили? Или я не прав?
     
  9. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.712
    Симпатии:
    185
    Не надо так громко кричать. (Если бы подумали, то с картинок видно, что я догадался и без вашей подсказки.)

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

    DrJarold Новичок

    Сообщения:
    18
    Симпатии:
    0
    А можно про этот обработчик чуть подробнее?
     
  11. CodeNameHawk

    CodeNameHawk Moderator Команда форума

    Сообщения:
    1.712
    Симпатии:
    185
    Это подсказка с опережением, не буду же я еще раз искать, если вдруг вам захочется.
     
  12. vdbvdb

    vdbvdb Новичок

    Сообщения:
    2
    Симпатии:
    1
    ну, к счастью тут пинг идёт по 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.
     
    Последнее редактирование: 6 июл 2018
    Юрий Ботов нравится это.
  13. Юрий Ботов

    Юрий Ботов Moderator Команда форума

    Сообщения:
    1.055
    Симпатии:
    177
    Спасибо что поправил :) я отписался в спешке...
     

Поделиться этой страницей