Самый быстрый способ проверить соединение inte rnet с ESP32 Arduino - PullRequest
0 голосов
/ 28 марта 2020

Обновление: Я знаю, точка доступа WIFI все еще включена и активна в этом случае, и чип не должен знать об изменении, но вопрос все еще открыт. Как мне проверить соединение?

В моем проекте действительно важно соединение inte rnet.

После некоторого тестирования я понял, что если я отключу ethe rnet кабель от моего роутера ESP32 все еще думает, что он все еще подключен к WIFI, даже

WiFi.status() == WL_CONNECTED

всегда верно в этом случае.

Итак, я пробовал пинговать Google. ком, чтобы проверить связь. Это работает, но требуются годы, чтобы получить результат.

Как проверить подключение с наименьшими затратами ресурсов и времени?

Ответы [ 2 ]

0 голосов
/ 29 марта 2020

Технически этот результат верный, потому что вы все еще подключены к Wi-Fi! Если вы отключите кабель ethe rnet, это не означает, что ваш Wi-Fi останавливается. Все это означает, что ваш Wi-Fi не может добраться до inte rnet. Вы можете попробовать проверить связь с DNS-сервером вашего провайдера. Это намного ближе к вам, чем Google. Просто бред старика ...

0 голосов
/ 29 марта 2020

Даже WiFi.status () ненадежен из-за не документированных деталей Espressif. API подвержен ошибкам, как показывают проблемы на github.
Так что на самом деле вопрос. что ты действительно хочешь проверить? - в моем определении соединение inte rnet означает, что мое линейное (или воздушное) соединение с моим провайдером не нарушено. Это включает

  • мой AP
  • мой маршрутизатор
  • оптоволоконный конвертер интернет-провайдеров в моем подвале,
  • сама линия и
  • ISPs gateway

Это то, что я использую, чтобы определить, открыто ли соединение. Пингую IP-адрес сервера шлюза провайдера. Таким образом, вы экономите время (без разрешения DNS, без скачков по узлам на inte rnet.
Если вы имеете в виду, доступна ли определенная служба на определенном сервере, это медленно, но тогда вы на 100% уверены.
Просто пояснение: «ESP32 все еще думает, что он все еще подключен к WIFI» - ДА, это должно быть правдой, потому что согласно API это обеспечивает соединение клиента с AP, а не соединение AP с каким-то другим местом. Обычно хорошо настроенный маршрутизатор сообщает его клиенты о потере соединения (в этом случае подключенные точки доступа), и они уведомляют (в зависимости от их конфигурации) своих клиентов (или иногда нет или очень поздно)

...