Как проверить, подключена ли плата к Интернету?

Позвольте мне уточнить, я пытаюсь понять, подключен ли мой ESP32 к Интернету или нет, а не к Wi-Fi, так как иногда плата может подключаться к Wi-Fi, но не может связаться ни с какими серверами из-за проблем с маршрутизатором.

Я хочу проверить, подключена ли плата к Интернету или нет, как мне это сделать?

Что у меня есть до сих пор:-

char ssid[] = "Youreally";
char pass[] = "WannaKnow";

void setup(){
WiFi.begin(ssid, pass);
Serial.begin(115200);
}

void loop(){
  if (WiFi.status() != WL_CONNECTED) {
  Serial.println("Connected");
  }
}

, 👍1

Обсуждение

пропингуйте известный сервер, @jsotola

Я обычно пингую 8.8.8.8 - DNS-серверы Google., @Majenko

@Majenko Какова максимальная частота, разрешенная для тех, кто, @Coder9390

и где я могу найти информацию об этом, @Coder9390

Без понятия. Это массивный кластер глобально распределенных серверов, и несколько сообщений исчезнут среди огромного объема DNS-трафика., @Majenko

Таким образом, я могу часто связываться с ним, не получая запрета, @Coder9390

Зависит от того, что вы называете "часто". Раз в несколько минут или около того-это не проблема., @Majenko

Что значит для вас "свободно"? Раз в секунду, раз в час? Разве недостаточно проверить это сразу после настройки Wi-Fi? Любая услуга, которую вы используете в Интернете, выдаст вам ошибку, если она недоступна..., @Sim Son

Чтобы облегчить пинг [FabGL](https://github.com/fdivitto/FabGL/blob/master/examples/VGA/NetworkTerminal/NetworkTerminal.ino#L303) имеет пример ping и [ICMP](https://github.com/fdivitto/FabGL/tree/master/src/network) класс., @Majenko

@Majenko, может быть, около 5 секунд, @Coder9390

5 секунд-это слишком часто, и короткий опрос не требуется для обнаружения с низкой задержкой. Просто подключитесь к любому общедоступному серверу websocket, передайте обратный вызов "onEvent", прослушивая тип события "WStype_DISCONNECTED", при котором вы можете быть на 90% уверены, что Интернет отключен. Затем я бы использовал http-запрос, чтобы попытаться загрузить мой собственный веб-сайт robots.txt чтобы подтвердить. Никакого пинга, никаких нарушений политики или испуга провайдера., @dandavis


1 ответ


Лучший ответ:

0

Поскольку у вас будет какое-то подключение, кроме Wi-Fi, вы можете регулярно проверять это в своем цикле, например, при использовании MQTT я бы проверил:

if (!mqttClient->connected())

а затем, основываясь на результате, я бы проверил:

if (WiFi.status() != WL_CONNECTED)

так что я могу справиться с соответствующим слоем.

,