Заголовок сообщения: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Вт фев 11, 2020 13:12:12
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
Имеются часы на ESP8266, которые 1 раз в сутки синхронизировались с NTP. Встроенного RTC нет, по этому время не сохраняется после выключения. Несколько недель часы валялись без батареи. Пару дней назад включил их - а часы не обновляют время и дату. Не получают данные от NTP сервера. От слова совсем. Залил тестовый скетч: Спойлер
unsigned int localPort = 2390; // local port to listen for UDP packets
/* Don't hardwire the IP address or we won't get the benefits of the pool. Lookup the IP address for the host name instead */ //IPAddress timeServer(129, 6, 15, 28); // time.nist.gov NTP server IPAddress timeServerIP; // time.nist.gov NTP server address const char* ntpServerName = "0.ua.pool.ntp.org";
const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message
byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets
// A UDP instance to let us send and receive packets over UDP WiFiUDP udp;
void loop() { //get a random server from the pool WiFi.hostByName(ntpServerName, timeServerIP);
sendNTPpacket(timeServerIP); // send an NTP packet to a time server // wait to see if a reply is available
Serial.print("The packet sent to "); Serial.print(ntpServerName); Serial.print(" with IP "); Serial.println (timeServerIP);
delay(1000);
int cb = udp.parsePacket(); if (!cb) { Serial.println("no packet yet"); } else { Serial.print("packet received, length="); Serial.println(cb); // We've received a packet, read the data from it udp.read(packetBuffer, NTP_PACKET_SIZE); // read the packet into the buffer
//the timestamp starts at byte 40 of the received packet and is four bytes, // or two words, long. First, esxtract the two words:
unsigned long highWord = word(packetBuffer[40], packetBuffer[41]); unsigned long lowWord = word(packetBuffer[42], packetBuffer[43]); // combine the four bytes (two words) into a long integer // this is NTP time (seconds since Jan 1 1900): unsigned long secsSince1900 = highWord << 16 | lowWord; Serial.print("Seconds since Jan 1 1900 = "); Serial.println(secsSince1900);
// now convert NTP time into everyday time: Serial.print("Unix time = "); // Unix time starts on Jan 1 1970. In seconds, that's 2208988800: const unsigned long seventyYears = 2208988800UL; // subtract seventy years: unsigned long epoch = secsSince1900 - seventyYears; // print Unix time: Serial.println(epoch);
// print the hour, minute and second: Serial.print("The UTC time is "); // UTC is the time at Greenwich Meridian (GMT) Serial.print((epoch % 86400L) / 3600); // print the hour (86400 equals secs per day) Serial.print(':'); if (((epoch % 3600) / 60) < 10) { // In the first 10 minutes of each hour, we'll want a leading '0' Serial.print('0'); } Serial.print((epoch % 3600) / 60); // print the minute (3600 equals secs per minute) Serial.print(':'); if ((epoch % 60) < 10) { // In the first 10 seconds of each minute, we'll want a leading '0' Serial.print('0'); } Serial.println(epoch % 60); // print the second } // wait ten seconds before asking for the time again delay(10000); }
// send an NTP request to the time server at the given address void sendNTPpacket(IPAddress& address) { Serial.println("sending NTP packet..."); // set all bytes in the buffer to 0 memset(packetBuffer, 0, NTP_PACKET_SIZE); // Initialize values needed to form NTP request // (see URL above for details on the packets) packetBuffer[0] = 0b11100011; // LI, Version, Mode packetBuffer[1] = 0; // Stratum, or type of clock packetBuffer[2] = 6; // Polling Interval packetBuffer[3] = 0xEC; // Peer Clock Precision // 8 bytes of zero for Root Delay & Root Dispersion packetBuffer[12] = 49; packetBuffer[13] = 0x4E; packetBuffer[14] = 49; packetBuffer[15] = 52;
// all NTP fields have been given values, now // you can send a packet requesting a timestamp: udp.beginPacket(address, 123); //NTP requests are to port 123 udp.write(packetBuffer, NTP_PACKET_SIZE); udp.endPacket(); }
Пробовал сервера: ntp.ix.ru, pool.ntp.org, ua.pool.ntp.org, 0.ua.pool.ntp.org, time.nist.gov... и еще несколько. Изначально использовал сервер ua.pool.ntp.org. Но результат всегда один и тот же. Связь с WiFi хорошая. Платы ESP пробовал разные. Живу в Украине (не знаю, важно это или нет). Вот один из логов: СпойлерConnecting to DIR-615 ........... WiFi connected IP address: 192.168.0.192 Starting UDP Local port: 2390 sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.198.10.4 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 82.193.117.90 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 91.236.251.5 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 193.27.208.100 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet sending NTP packet... The packet sent to pool.ntp.org with IP 194.40.240.11 no packet yet Я в настройках WiFi не очень понимаю, в основном использую готовые решения. Может в скетче что-то не так? Или что еще может быть? Что можете посоветовать?
_________________ Сделать своими руками всегда интересней чем просто купить и пользоваться
Попробуйте лучше готовый, доступный в "репах" NTP-клиент: https://lastminuteengineers.com/esp8266 ... -tutorial/ А так что угодно может быть, но судя по всему у вас не приходят обратные UDP пакеты - может роутер блочит по какой-то причине... Можно попробовать через другой роутер/подключение тоже.
Заголовок сообщения: Re: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Ср фев 12, 2020 01:16:06
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
Это сайт уже просматривал ранее. Попробовал еще раз. Взял скетч-пример из статьи и попробовал подключиться не к моей WiFi сети, а раздать мобильный интернет с телефона. Подключился, и связь с NTP сервером установилась! Не меняя скетч (только имя сети и пароль) попробовал подключиться к WiFi - все как и прежде, пакеты не приходят. Попробовал мои предыдущие скетчи - через телефон все ок. А через мой WiFi - нет. Почесал репу... О сетях, WiFi и их настройках у меня нет вообще никаких знаний. Один единственный рез обновлял прошивку роутера 3 года назад... Куда копать? Как проверить роутер? У меня DIR-615
_________________ Сделать своими руками всегда интересней чем просто купить и пользоваться
Столько всего может быть, что советовать можно неделями писать. Самое простое - попробовать перешить роутер в альтернативную прошивку, где всё точно разрешено и есть гибкость настроек: https://dd-wrt.com/
Заголовок сообщения: Re: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Ср фев 12, 2020 13:04:22
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
Я подключаюсь к интернету по воздуху. Стоит антенна с приемником, а после нее стоит роутер, который и раздает по дому интернет. Я хочу попробовать подключить компьютер на прямую к антенне (кабелем) и проверить с компьютера доступность NTP сервера. Как это правильно сделать? Я сейчас с компьютера (через роутер) использовал PING: СпойлерMicrosoft Windows [Version 6.1.7601] (c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\Игорь>ping ua.pool.ntp.org
Обмен пакетами с ua.pool.ntp.org [193.27.208.100] с 32 байтами данных: Ответ от 193.27.208.100: число байт=32 время=56мс TTL=53 Ответ от 193.27.208.100: число байт=32 время=46мс TTL=53 Ответ от 193.27.208.100: число байт=32 время=86мс TTL=53 Ответ от 193.27.208.100: число байт=32 время=71мс TTL=53
Пинги не для того и по другому протоколу. Смотреть ответы пинга лишено смысла чуть больше, чем полностью. Потому что отвечать по протоколу оно эхом должно ровно тот же мусор, что был послан. Вот этим или чем-то наподобии проверяйте: http://www.timesynctool.com/
Заголовок сообщения: Re: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Ср фев 12, 2020 14:17:27
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
Я попробовал раздать интернет с компьютера, чтобы убедиться что проблема точно не в подключении ESP к роутеру. К компьютеру ESP подключилась, но картина та же: не приходят пакеты. Значит проблема либо в роутере, либо в Антенне-приемнике, либо у моего провайдера...
Добавлено after 7 minutes 15 seconds: Спасибо за программу. Попробовал. Стандартно установленные сервера вернули ошибку. Написал свои различные сервера - то же самое. Возвращают ошибку. Хм... Как бы точно узнать что это проблема в роутере, чтобы его не мучить лишний раз? Просто что-то он не хочет принимать новые прошивки. Подключить антенну к компьютеру не получилось - пишет неопознанная сеть, и нет интернета. Ладно, попробую роутер перепрошить.
_________________ Сделать своими руками всегда интересней чем просто купить и пользоваться
Подключить антенну к компьютеру не получилось - пишет неопознанная сеть, и нет интернета.
Настройки подключения надо с роутера сдернуть. Либо статический IP прописать, либо авторизацию, вроде PPPoE. Если есть доступ в интерфейс роутера - посмотреть там. Раз нет этих настроек, лучше тогда не перепрошивать, пока их не будет "на руках". А то и роутер не увидет инета после перепрошивки, т.к. настройки сбросятся.
Заголовок сообщения: Re: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Ср фев 12, 2020 16:19:34
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
В роутер есть доступ, подключаюсь в нему по кабелю со стационарника. Но он (роутер) старый как г.. мамонта! У меня DIR-615 ревизии k2a. Ничего на него не могу найти. Самая "свежая" прошивка от 12-го года! Пора его менять... Залез в настройки - там и сохранять нечего... все по дефолту
_________________ Сделать своими руками всегда интересней чем просто купить и пользоваться
Должны быть где-то всё-таки настройки WAN порта. Т.к. при подключении к ПК пишет "неопознанная сеть" - значит не удалось автоматически (по DHCP) получить IP-адрес. А значит он скорее всего и не выдается, а где-то в роутере настроен статически. Или настроено PPPoE подключение, с логином и паролем. Еще иногда всякие VPN бывают у провайдеров - PPTP/L2TP.
Заголовок сообщения: Re: NTP-Clock на ESP8266. Не приходит ответ от сервера.
Добавлено: Чт фев 13, 2020 11:49:36
Вымогатель припоя
Карма: 1
Рейтинг сообщений: 10
Зарегистрирован: Вс дек 30, 2012 00:32:06 Сообщений: 546 Откуда: Николаев / Украина
Рейтинг сообщения:0
Все-таки получилось подключиться к антенне минуя роутер. Результат оказался тот же. Печально. Значит проблема не в роутере. Связался с моим провайдером. В службе поддержки пожали плечами. Сказали что с их стороны нет никаких блокировок. Оператор предположил что дело в технологии NAT. Как он объяснил, сейчас есть проблемы у NTP серверов с сетями NAT, а именно по такой сети я получаю интернет. Оператор предположил что в моей сети есть IP попавший в черный список, по этому вся сеть тоже туда попала (из-за NAT) и поэтому я не получаю ответы от NTP. Пересказываю то что мне сказали. Решения мне никакого не дали. Хм. что теперь делать - понятия не имею.
_________________ Сделать своими руками всегда интересней чем просто купить и пользоваться
NTP через NAT работает прекрасно, если всё нормально настроено. Чтобы заблокировали все разом - это вряд ли. Вы ж не один сервер пробовали, а разные. Попробуйте конечно всякие другие сервера NTP еще, может какие-то заработают. Я не знаю как у вас, но в РФ закон обязывает провайдеров устранять такие проблемы. Только чтобы шевелиться начали, надо официальную бумагу писать. Иначе это только через VPN решать.
Сейчас этот форум просматривают: Jack_A и гости: 36
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения