• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Ping реализован на NodeMCU?

Civil

New member
Может ли NodeMCU пинговать сайты?
Если нет, то какой способ определения доступности используется?
 

Civil

New member
Это можно, но довольно грустный способ как с точки зрения трафика, так и затрат на парсинг ответа.
Я надеялся, что есть что-то попроще.
 

DamirX

New member
Может ли NodeMCU пинговать сайты?
Если нет, то какой способ определения доступности используется?
Ну... пинговать САЙТЫ, это как-бы малость технически неграмотное выражение, потому, как пингуются не САЙТЫ, а IP-адреса (или в частном случае хосты). И доступность хоста, не означает доступность сайта. Доступность сайта это и вправду парсить ответ на запрос GET.
 

Civil

New member
Согласен. Но вообще-то и ответ 200 не даст гарантии, что с сайтом все в порядке.
У меня обратная задача: определяя доступность нескольких сайтов/хостов выяснить, есть ли проблемы со связностью сети. Для этого я предполагал отобрать несколько сайтов типа гугла и яндекса. Но они с кодом 301/302 перебрасывают на версию с https.
Такой вопрос: сайты с большими страницами esp не в силах обработать. Можно ли ограничить прием первыми 100 байтами, а затем разорвать соединение?
 

pvvx

Активный участник сообщества
Согласен. Но вообще-то и ответ 200 не даст гарантии, что с сайтом все в порядке.
У меня обратная задача: определяя доступность нескольких сайтов/хостов выяснить, есть ли проблемы со связностью сети. Для этого я предполагал отобрать несколько сайтов типа гугла и яндекса. Но они с кодом 301/302 перебрасывают на версию с https.
Такой вопрос: сайты с большими страницами esp не в силах обработать. Можно ли ограничить прием первыми 100 байтами, а затем разорвать соединение?
Посмотрите что опрашивает Windows или Андорид, для понятия что инет доступен.
В частности Windows опрашивает это http://www.msftncsi.com/ncsi.txt
и 131.107.255.255.
А Андорид типа http://clients3.google.com/generate_204
Поищите Google
 
Последнее редактирование:

Civil

New member
Да, про Windows именно это и нашел: Для определения, доступна ли сеть Интернет - Windows использует проверку доступа к серверам DNS, запрос HTTP(80) к узлу сети www.msftncsi.com на наличие файла ncsi.txt
Подходит. Спасибо.
Но я предполагал сделать несколько уровней проверки:
- мой роутер
- мой провайдер
- клиент узла обмена трафиком
- зарубежный канал на континент 1
- зарубежный канал на континент 2
Т.е. пока закрываем 1 и последний пункт. Уже хорошо.
 

yokotoka

New member
Это можно, но довольно грустный способ как с точки зрения трафика, так и затрат на парсинг ответа.
Я надеялся, что есть что-то попроще.
Вместо GET-запроса можно использовать HEAD-запрос. С точки зрения трафика не так уж и драматично. А код возврата вообще в первых трёх символах всегда идёт - о каком парсинге речь?
Ещё можете пробовать открывать TCP-сокет до какого-нибудь IP:порт.
 

nikolz

Well-known member
путь будет не близким.
Необходимо:
1) освоить программирование на луа (лучше используя SCITE)
2) изучить API C для LUA
3) написать ping на CИ для винды (проще будет отладить)
4) отладить функцию ping в LUA SCITE
4) переписать функцию ping c СИ для винды на СИ для ESP
5) взять любой драйвер в NODEMCU например ADC и вставить в него вызов функции ping. изменить имя и прописать функцию в таблицу описания функций
 

Kesha

New member
Кстати Ping в нынешних реалиях это плохой способ диагностики, На многих Firewall их просто прибивают. Поэтому нужно проверять именно доступность интересующего вас порта по TCP или UDP
 
Сверху Снизу