Virbactd.ru

Авто шины и диски
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Сервер точного времени синхронизация с временем пк

Сервер точного времени синхронизация с временем пк


Сергей   ( 2011-06-06 10:35 ) [0]

Подскажите, можно ли проверить совпадает ли время с компьютерами со временем, допустим, на ntp серверах microsoft?
Есть ли встроенные процедуры допустим в indy или может кто-то заморачивался?

Заранее спасибо.


Dennis I. Komarov ©   ( 2011-06-06 10:40 ) [1]

Разумеется можно.
(но есть "но", погрешность все-равно будет)


Dennis I. Komarov ©   ( 2011-06-06 10:44 ) [2]

http://ru.wikipedia.org/wiki/NTP


AtomicTime   ( 2011-06-06 10:49 ) [3]

Посмотри здесь:
http://www.nashgorod.ru/forum/viewtopic.php?f=36&t=180519
и дальше по ссылкам внизу страницы


AtomicTime   ( 2011-06-06 10:55 ) [4]

или здесь:
http://coding.derkeiler.com/Archive/Delphi/borland.public.delphi.thirdpartytools.general/2005-02/0181.html


Ega23 ©   ( 2011-06-06 11:07 ) [5]


> Подскажите, можно ли проверить совпадает ли время с компьютерами
> со временем, допустим, на ntp серверах microsoft?

Не совпадает. Погрешность будет всегда.


Gu   ( 2011-06-06 11:17 ) [6]

на форму кладем tIdSNTP из закладки компонентов Indy Clients

procedure TForm1.Button1Click(Sender: TObject);
begin
Try
IdSNTP1.Host:="time.nist.gov";
IdSNTP1.ReceiveTimeout:=1000;
IdSNTP1.Connect;
//IdSNTP1.SyncTime; // разремить, если надо синхронизировать время ПК с сервером
form1.Caption:=datetimetostr(IdSNTP1.DateTime);
IdSNTP1.Disconnect;
Except
form1.Caption:="Сервер не отвечает";
End;
end;


Gu   ( 2011-06-06 11:19 ) [7]

да, и не забудьте на фаэрволе проге разрешить в инет лазить по 123 порту


Inovet ©   ( 2011-06-06 11:20 ) [8]

> [5] Ega23 ©   (06.06.11 11:07)
> Погрешность будет всегда.

Интересно вот, погрешность эта известа? Время доставки пакетов как-то наверно учитывается +- неккоторая известная погрешность.


Anatoly Podgoretsky ©   ( 2011-06-06 11:23 ) [9]

Чтобы знать погрешность надо иметь эталон, с которым можно сравнить.
А время доставки пакетов учитывается.

form1.Caption:="На сервере: "+datetimetostr(IdSNTP1.DateTime)+" на компе: "+datetimetostr(now);

после команды IdSNTP1.SyncTime; происходит синхронизация (по спец.алгоритму, кот.учитывает задержки передачи и соединений), если погрешность времени не очень большая. Если очень (например на год), то синхронизации не произойдет, и делать это надо ручками, примерно так:

if IdSNTP1.SyncTime=false then <принудительная установка системного времени (PcSetSystemTime:=IdSNTP1.DateTime) и повторная синхронизация>

(PcSetSystemTime)как установить системное время — пример: http://delphiworld.narod.ru/base/set_sys_date_time.html


Dennis I. Komarov ©   ( 2011-06-06 11:54 ) [13]

http://msdn.microsoft.com/en-us/library/cc249642(v=PROT.13).aspx


Inovet ©   ( 2011-06-06 11:58 ) [14]

> [11] Andy BitOff ©   (06.06.11 11:31)
> > а "настоящее" это какое?
>
> 11:31

У космонавтов быстрее часы идут.


Inovet ©   ( 2011-06-06 12:01 ) [15]

> [9] Anatoly Podgoretsky ©   (06.06.11 11:23)
> Чтобы знать погрешность надо иметь эталон, с которым можно сравнить.

Зачем эталон. Технологическая погрешность заранее известна. Если на линейке деления 1 мм, то нельзя ей мерять 0,5 мм. Так и с синхронизацией времени может быть. Вот я и спрашиваю о такой погрешности.


Anatoly Podgoretsky ©   ( 2011-06-06 12:19 ) [16]

Откуда погрешность то известна, может там часы бегут на несколько секунд. У меня время синхронизируется с несколькими серверам, погрешность превышает несколько секунд. Сервера точного (не эталонного времени) обеспечивают точность в долях микросекунд, есть вообще очень точные — например атомные часы.


Inovet ©   ( 2011-06-06 12:34 ) [17]

> [16] Anatoly Podgoretsky ©   (06.06.11 12:19)
> Откуда погрешность то известна, может там часы бегут на
> несколько секунд.

Считаем, что на сервере время достаточно точно отслеживается, иначе о чём говорить. Вот с этим сервером связываемся, получаем его время с достаточной точностю, теперь надо знать погрешность доставки, она там ис чего-то складывается (округления времени задержки в маршрутизаторах, длина линий связи наиболее влияют), пока пакет идёт.


Anatoly Podgoretsky ©   ( 2011-06-06 12:53 ) [18]

> Inovet  (06.06.2011 12:34:17)  [17]

Так считать не стоит, а стоит считать что на разных серверах оно разное,
кроме атомных часов.
Погрешность доставки равна 1/2 от момента отсылки до момента получения, при
предпосылке, что скорость в обеих направлениях одинакова.


Сергей   ( 2011-06-06 14:24 ) [19]

Читайте так же:
Регулировка кулисы таврия славута

Всем спасибо, очень помогло. Насчет погрешности — шут с ней, буду учитывать что будет погрешность, например, до минуты. Мне главное чтобы дни и часы совпадали (конечно нужно учитывать конец и начало часа).


Jeer ©   ( 2011-06-06 14:30 ) [20]

В зависимости от географии ntp-сервера и его статуса ( stratum x ), задержка может достигать сотен миллисекунд и даже секунд.
По версии 4 протокола ntp погрешность сихронизации через Интернет может быть не хуже 10 мс, а в локальной сети — 0.2 мс

Разобраться с "хорошими" серверами из десятков такими прикидывающимися бывает не просто.

Есть простой способ превратить собственный сервер в ntp-сервер для своей сети.
Навесить на сервер GPS-железку (навигатор или треккер), которая отдает данные в комп по NMEA-протоколу


Ega23 ©   ( 2011-06-06 14:43 ) [21]

ИМХО, службу синхронизации самому писать не след. Есть ntp, этого достаточно. Установи синхронизацию по нему и всё, не надо велосипеды изобретать.

З.Ы. Как же мы "назанимались любовью" с этим ntp в своё время. Когда нужно было кучу контроллеров под QNX по времени с Windows-сервером синхронизировать. А погрешность должна была быть менее секунды.


sniknik ©   ( 2011-06-06 14:48 ) [22]

> есть вообще очень точные — например атомные часы.
самые точные это те которые стоят! они дважды в сутки показывают абсолютно точное время. а те которые идут, обязательно или отстают или бегут, хоть на чуть но всегда.
© капитан Врунгель.


Inovet ©   ( 2011-06-06 15:02 ) [23]

> [22] sniknik ©   (06.06.11 14:48)
> а те которые идут, обязательно или отстают или бегут, хоть
> на чуть но всегда.

Тоже показывают но не 2 раза в сутки.


Inovet ©   ( 2011-06-06 15:06 ) [24]

> [20] Jeer ©   (06.06.11 14:30)
> через Интернет может быть не хуже 10 мс, а в локальной сети — 0.2 мс

Вот. Есть значит стандарт.

> [20] Jeer ©   (06.06.11 14:30)
> Разобраться с "хорошими" серверами из десятков такими прикидывающимися
> бывает не просто.

А которые в Виндоус предлагаются, интересно, хорошие? Вот по умолчанию этот хотя бы: time.windows.com.


Jeer ©   ( 2011-06-06 15:15 ) [25]

Тут доходчиво
http://www.opennet.ru/base/sys/ntp_conf.txt.html

Сервера
http://support.ntp.org/bin/view/Servers/StratumOneTimeServers


Ega23 ©   ( 2011-06-06 15:23 ) [26]


> А которые в Виндоус предлагаются, интересно, хорошие? Вот
> по умолчанию этот хотя бы: time.windows.com.

Да там нюансов — вагон и тележка. UTC тот же взять, переводы с зимнего на летнее (это ещё ничего, час вперёд) и с летнего на зимнее (а вот это уже попа, на час назад), и т.п.


OW ©   ( 2011-06-06 15:23 ) [27]

а зачем.. примерно такое и ладно.
главное, чтоб своей сети была синхронизация
а тут есть служба соответствующая
или по мотивам http://support.microsoft.com/kb/314054/ru настраиваем однорангово/без-инетное что-то

о часах интересно..
все(видимые мной) часы показывают время циклически. А есть ли часы, показывающие время.. ну, как число, допустим? 🙂
т.е.
40700,6399313773 тик
40700,6399429514 тик
40700,6399545255 тик
никому не надо, конечно, но было б оригинально и забавно.
Купил бы кто-то, имхо..


Ega23 ©   ( 2011-06-06 15:24 ) [28]


> главное, чтоб своей сети была синхронизация

+ 100500


sniknik ©   ( 2011-06-06 15:26 ) [29]

> Тоже показывают но не 2 раза в сутки.
один раз в месяц например. если убегающие поставить "до", на обгон, в момент обгона будет точно а дальше пойдет всегда.
т.что стоящие точнее.

еще точнее будут "маятники", не в смысле гирями, а отстающе/бегущие т.е. такие типа туда, сюда на какой то промежуток, тогда если точное время будет в середине то могут показывать чаще. но таких не бывает.


OW ©   ( 2011-06-06 15:38 ) [30]


> sniknik ©   (06.06.11 15:26) [29]

не бывает..
но легко делаются путем выдирания секундной стрелки и переводом на минуту вперед

Читайте так же:
Проблемы регулировки развала схождения

таким образом, пока осколок секундной стрелки крутится, время показывается на минуту позже. Тут настоящее его догоняет, и перегоняет.  Затем наше скачет на минуту вперед и ждет, пока его опять догонят и перегонят.
вооть 🙂


Inovet ©   ( 2011-06-06 15:47 ) [31]

> [25] Jeer ©   (06.06.11 15:15)

Ага, посмотрел.

> [26] Ega23 ©   (06.06.11 15:23)
> UTC тот же взять, переводы с зимнего на летнее (это ещё
> ничего, час вперёд) и с летнего на зимнее (а вот это уже
> попа, на час назад), и т.п.

Это в регистраторах всяких вроде видеонаблюдения? Наверно хранить надо в UTS а показывать уже от настроек времени? А что тут ещё выдумаешь.


Ega23 ©   ( 2011-06-06 17:21 ) [32]


> Это в регистраторах всяких вроде видеонаблюдения?

В точку. Есть сработка на периметре, есть видеопоток. Надо сохранить видеозапись с нескольких камер, ассоциированных с данным участком, причём не просто с момента тревоги, а до и после. И сохранить это дело.


> Наверно хранить надо в UTS а показывать уже от настроек времени?

Угу, вот только когда саму систему проектировали и ни о каком видео ещё речи не шло этот нюанс не продумали. В результате получили "половые сношения", когда переделывали.

О точном времени

imageК сервису синхронизации времени по протоколу NTP все уже привыкли — оно включено по умолчанию или легко включается для большинства популярных операционных систем. Однако какая точность при этом достигается? Какие бывают сервера точного времени, и с какими можно работать простым смертным? Какие есть подводные камни, и как выбрать «правильные» сервера времени?

Типы серверов

Сервера бывают Stratum 1 и 2, 3(выше редко).

Stratum 1 — получают точное время непосредственно от источника точного времени: атомных часов (например time-a.nist.gov, точность — трилионные доли секунды) или GPS приемника (ntpx.imvp.ru точность — миллиардные доли секунды). Есть сервера получающие точное время через сотовую сеть CDMA (миллионные доли секунды). При работе с ntpd узнать тип сервера можно командой ntpq -np: «PPS» значит GPS, «ACTS» значит прямое соединение с атомными часами (там же и другая ценная статистика — пинг, «дрожжание» пинга(jitter), ранг сервера(1,2. ) ).

«Простым» смертным обращаться к Stratum-1 серверам строго запрещено, т.к. нагрузка на них и так очень большая (а на многие Stratum-1 сервера вообще нет публичного доступа). Считается что вы можете подключаться к Stratum-1 серверам или просить доступ к ним, если вы держите NTP сервер, обслуживающий не менее 100 клиентов. Полный список серверов можно увидеть тут: support.ntp.org/bin/view/Servers/StratumOneTimeServers. Естественно, желательно подключатся к серверам в своей стране.

Stratum 2 — получают точное время от Stratum-1 серверов. При правильной настройке и выборе серверов-источников точного времени имеют погрешность менее 1мс. Подключатся обычно можно всем, но многие сервера регулярно умирают от нагрузки (например time.windows.com). www.pool.ntp.org поддерживает round-robin списки публичных Stratum-2 NTP серверов. Таким образом обеспечивается балансировка нагрузки, и они практически всегда доступны. Подключиться к этим серверам можно по адресам 0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org и 3.ru.pool.ntp.org (это для России, выбираются случайно из списка

Stratum 3 — получают время от Stratum-2 серверов, и т.д.

Практическая точность

Stratum-1
Это график разницы системного времени с временем полученным со Stratum-1 серверов (canonical.com — Stratum-2 сервер, для сравнения).
*.nist.gov — расположены в США, из-за «большого» пинга иногда случаются жуткие «выбросы». Ошибка с Российских Stratum-1 серверов обычно укладыватся в +- 1 мс.
image

Stratum-2
Это — разница с Stratum-2 серверами: 4 из Российского пулла, 1 из европейского, дефолтный сервер времени убунты (europium.canonical.com), и те же *.nist.gov:
image
Сразу бросаются в глаза сервера, имеющие постоянную ошибку до 20 мс.

Резюме
  • Время на серверах и рабочих станциях нельзя пускать на «самотёк», иначе отклонение времени может достичь минут.
  • Если точность +-0.05 секунды вас устраивает, можно не заморачиваться с выбором серверов, и синхронизироваться с сервером по умолчанию
  • Если необходима точность до +-0.01 секунды, нужно найти Stratum-2 NTP в вашей стране, построить с них графики отклонения (Munin+плагин ntp_peers), и отбросить «кривые». Под windows это конечно будет затруднительно сделать. Затем в linux установить демон ntpd, и дать ему 3-6 серверов для синхронизации (он сам будет выбирать наиболее «качественные»).
  • Если нужна точность до +-0.001 секунды И вы будете предоставлять сервис точного времени в вашей организации — подключайтесь к Stratum-1 серверам в вашей стране. Ваш сервис крайне желательно делать публичным.
  • Если нужно точнее 0.001 секунды — остается только настраивать свой Stratum-1 сервер от GPS или CDMA. В обоих случаях нужно либо антенну с улицы вести, или чтобы сигнал «добивал» (в случае с GPS — малореально). Атомные часы объемом менее кубометра пока не делают, так что этот вариант отпадает
Читайте так же:
Как правильно отрегулировать поплавок на карбюраторе к65

PS. Кстати, по умолчанию в Ubuntu синхронизация времени происходит один раз при загрузке системы. Если аптайм под полгода — время может сильно уехать. Устанавливаете ntpd — он корректирует время постоянно и «плавно» (без резких рывков, «размазывая» замедление/ускорение времени). В Windows синхронизация происходит раз в сутки неделю одним «скачком», что может вызвать сложности при обработке логов, если набежала большая разница.

Товарищи!

Даешь большое публичных NTP серверов в России! Особенно Stratum-1 (с ними вообще у нас напряженка, 2-3 штуки на весь exUSSR). Кстати, точное время можно брать и с Глонасс, кто возьмётся запустить первый Глонасс-powered сервер?

Сервер точного времени синхронизация с временем пк

Серверы времени NTP

Сервер времени NTP

Сервер времени NTP

Наш самый продаваемый сервер времени NTP. Подключайтесь напрямую к своей внутренней сети, чтобы обеспечить точное время для всех клиентов.

Rackmount NTP Сервер времени

Rackmount NTP Сервер времени

Сервер времени NTP начального уровня. Простота установки и установки в стандартную 19-дюймовую стойку — это экономичное и точное решение по времени.

NTP сервер

NTP сервер

Windows NTP сервер. Идеально подходит для крупных предприятий с несколькими сетями. Может поставлять тысячи клиентов одновременно.

Внутренний NTP-сервер

Внутренний NTP-сервер

Автономный NTP-сервер. Поместите в наиболее удобное место для синхронизации очень точного времени во всей вашей внутренней сети.

Windows NTP Server

Windows NTP Server

Двойной сервер Windows NTP. Получает точное время от источника GPS и радио, гарантируя, что ваша сеть никогда не будет без точного времени.

Сетевой сервер времени

Сетевой сервер времени

Автономный, двойной сетевой сервер времени. Идеальная единица начального уровня с дополнительной надежностью двух источников времени Stratum 0.

Подключенные к интернету настенные часы

Подключенные к интернету настенные часы

Четырехзначные часы, которые синхронизируются с сервером времени NTP для отображения очень точного времени.

NTP Clock

NTP Clock

Часы NTP, которые используют Power over Ethernet (PoE) для синхронизации с сервером времени NTP для точного времени.

NTP цифровые часы

NTP цифровые часы

6-значные часы, обеспечивающие высокую точность времени при синхронизации с любым внутренним или внешним сервером времени NTP.

NTP GPS Часы

NTP GPS Часы

Часы NTP, которые отображают очень точное время при синхронизации с сервером времени NTP GPS.

NTP настенные часы

NTP настенные часы

Часы NTP, которые легко установить на любую стену, показывают точное время по всему помещению.

Цифровые часы PoE

Цифровые часы PoE

Часы Power over Ethernet, которые можно синхронизировать и получать питание через одно соединение Ethernet для точного времени.

Серверы времени GPS

GPS NTP сервер

GPS NTP сервер

NTP-сервер на базе Windows для синхронизации тысяч устройств в шести независимых сетях.

GPS NTP Сервер времени

GPS NTP Сервер времени

Сервер времени GPS для синхронизации устройств в двух сетях со спутниковым временем атомных часов.

Сервер времени GPS

Сервер времени GPS

Получает время со спутниковых атомных часов и передает его тысячам устройств, подключенных к сети.

NTP GPS сервер

NTP GPS сервер

Автономный NTP-сервер для синхронизации устройств в одной сети с временем атомных часов спутника.

Rackmount Dual Time Server

Rackmount Dual Time Server

Rackmount сервер времени для получения точного времени от источников GPS и радио, поставляя его на две независимые сети.

Безопасный и надежный NTP-сервер

Безопасный и надежный NTP-сервер

NTP-сервер, который получает сигналы времени от GPS и радиоисточников для надежной синхронизации устройств в шести сетях.

Цифровые часы Ethernet

Цифровые часы Ethernet

Шестизначные часы Ethernet, которые отображают точное время в вашей организации.

Питание через Ethernet Clock

Питание через Ethernet Clock

Синхронизированные четырехзначные часы, которые получают питание и время через одно соединение Ethernet.

Аналоговый Ethernet NTP Clock

Аналоговый Ethernet NTP Clock

Аналоговые часы Ethernet, которые обеспечивают преимущества синхронизации времени при появлении традиционных часов.

Читайте так же:
Как правильно отрегулировать фары по высоте

Ethernet NTP Clock

Ethernet NTP Clock

Часы Ethernet для отображения синхронизированного времени на легко читаемом четырехзначном дисплее.

Ethernet NTP Цифровые настенные часы

Ethernet NTP Цифровые настенные часы

Легко монтируемые четырехзначные NTP-часы для отображения синхронизированного времени в вашем помещении.

Ethernet настенные часы

Ethernet настенные часы

Цифровые часы Ethernet доступны в различных размерах. Идеально для отображения точного времени во всех местах.

GPS синхронизация времени

GPS синхронизация времени

Антенна GPS и программное обеспечение NTP, которое превращает ваш компьютер с Windows в одноуровневый сервер, позволяющий синхронизировать небольшую сеть.

Синхронизация времени сети

Синхронизация времени сети

Сервер времени GPS начального уровня, который получает сигнал от восьми спутников. Идеально подходит для установки времени для одной рабочей станции или небольшой сети.

Время синхронизации с NTP-сервером

Время синхронизации с NTP-сервером

Обладая автономными часами, NTP-сервер передает спутниковые атомные часы на ПК с Windows и другие сетевые устройства.

Сервер синхронизации времени

Сервер синхронизации времени

Сервер времени идеально подходит для малого бизнеса и оснащен часами для монтажа в стойку, которые синхронизируют ваши устройства с сигналом времени GPS.

Сервер синхронизации времени

Сервер синхронизации времени

Получает сигнал времени от восьми спутников и передает его на ПК с Windows и другие устройства.

Синхронизация времени Ethernet

Синхронизация времени Ethernet

Радио антенна и программное обеспечение NTP для синхронизации времени на вашем ПК и сетевых устройствах.

Синхронизация времени сети

Синхронизация времени сети

Поставляет радио атомное время в вашу сеть. Особенности автономных часов, которые отображают время и состояние сигнала.

Синхронизация сервера NTP

Синхронизация NTP-сервера

Радиоантенна и программное обеспечение NTP, которое поставляет безопасный и надежный сигнал времени на ваш компьютер.

Windows Server Time Sync

Windows Server Time Sync

Rackmount сервер времени, который безопасно устанавливает время на ПК с Windows и сетевых устройствах. ЖК-экран отображает время и уровень сигнала.

Синхронизация времени NTP

Синхронизация времени NTP

Радио-сервер начального уровня. Идеально подходит для установки времени на одном ПК и безопасной синхронизации небольшой сети с другими устройствами.

Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU

Время от времени вы сталкиваетесь с идеей, в которой основным значением является время. Например, представьте реле, которое должно быть активировано в определенное время, или регистратор данных, который должен сохранять значения через определенные промежутки времени.

Первое, что приходит в голову, – это использовать микросхему RTC (часы реального времени). Но эти микросхемы не совсем точны, поэтому вам нужно снова и снова выполнять ручную подстройку, чтобы синхронизировать их с реальным временем.

Решение в этом случае – использовать протокол сетевого времени (NTP). Если у вашего проекта на ESP8266 есть доступ к Интернету, вы можете бесплатно получить дату и время (с точностью до нескольких миллисекунд от UTC). Дополнительное оборудование не требуется.

Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU Получение даты и времени от NTP сервера с помощью ESP8266 NodeMCU

Что такое NTP?

NTP означает Network Time Protocol (протокол сетевого времени). Это стандартный интернет-протокол для синхронизации часов компьютера с неким эталоном в сети.

Данный протокол может использоваться для синхронизации всех сетевых устройств с всемирным координированным временем (UTC) с точностью до нескольких миллисекунд (50 миллисекунд в общедоступном Интернете и менее 5 миллисекунд в среде LAN).

Всемирное координированное время (UTC) – это всемирный стандарт времени, тесно связанный с GMT (средним временем по Гринвичу). UTC не меняется, оно одинаково во всем мире.

NTP устанавливает часы компьютеров в формате UTC, любое смещение местного часового пояса или смещение летнего времени применяется уже клиентом. Таким образом, клиенты могут синхронизироваться с серверами независимо от местоположения и разницы часовых поясов.

Архитектура NTP

NTP использует иерархическую архитектуру. Каждый уровень иерархии известен как слой (англ. stratum).

На самом верху находятся высокоточные устройства для измерения времени, известные как аппаратные часы уровня 0; это, например, атомные часы, GPS или радиочасы.

Серверы слоя 1 имеют прямое соединение с аппаратными часами слоя 0 и поэтому имеют наиболее точное время.

Рисунок 1 Иерархическая архитектура NTP со слоями Рисунок 1 – Иерархическая архитектура NTP со слоями

Каждый слой в иерархии синхронизируется с уровнем выше и действует как серверы для компьютеров нижнего слоя.

Как работает NTP?

NTP может работать разными способами. Наиболее распространенная конфигурация – работа в режиме клиент-сервер. Основной принцип работы следующий:

  1. клиентское устройство, такое как ESP8266, подключается к серверу с помощью протокола пользовательских датаграмм (UDP) через порт 123;
  2. затем клиент передает пакет запроса на сервер NTP;
  3. в ответ на этот запрос сервер NTP отправляет пакет с меткой времени;
  4. пакет с меткой времени содержит множество информации, такой как метка времени UNIX, точность, задержка или часовой пояс;
  5. затем клиент может проанализировать текущие значения даты и времени.
Читайте так же:
Регулировка давления после насоса

Подготовка IDE Arduino

Хватит теории, приступим к практике!

Но прежде чем углубляться в данное руководство, вы должны установить в вашу Arduino IDE дополнение для ESP8266. Чтобы подготовить Arduino IDE к работе с ESP8266 (если вы еще этого не сделали) следуйте инструкциям из статьи по ссылке ниже:

Установка библиотеки NTP-клиента

Самый простой способ получить дату и время с сервера NTP – это использовать клиент NTP из библиотек Arduino. Выполните следующие шаги, чтобы установить эту библиотеку в свою Arduino IDE.

Перейдите в раздел Скетч → Подключить библиотеку → Управлять библиотеками…. Подождите, пока менеджер библиотек загрузит индекс библиотек и обновит список установленных библиотек.

Отфильтруйте результаты поиска, набрав «ntpclient». Должна остаться пара записей. Ищите NTPClient by Fabrice Weinberg. Щелкните на эту запись и выберите «Установить».

Рисунок 3 Установка библиотеки NTP-клиента в Arduino IDE Рисунок 3 – Установка библиотеки NTP-клиента в Arduino IDE

Получение текущих дня недели и времени от NTP-сервера

Следующий скетч даст вам полное представление о том, как получить текущие день недели и время с NTP-сервера.

Прежде чем вы отправитесь загружать скетч, вам нужно внести пару изменений, чтобы он у вас заработал.

  • Чтобы ESP8266 мог установить соединение с существующей сетью WiFi, вам необходимо изменить следующие две переменные в соответствии с учетными данными вашей сети.
  • Вам необходимо настроить смещение UTC для вашего часового пояса в секундах. Смотрите список часовых поясов относительно UTC. Вот несколько примеров для разных часовых поясов:
    • для UTC -5.00: -5 * 60 * 60: -18000
    • для UTC +1.00: 1 * 60 * 60: 3600
    • для UTC +0.00: 0 * 60 * 60: 0

    Как только вы закончите, загрузите скетч в ESP8266.

    После загрузки скетча нажмите кнопку RST на вашей плате NodeMCU, и вы должны будете получать текущие день недели и время каждую секунду, как показано ниже.

    Рисунок 4 ESP8266 считывает день недели и время из ответа NTP-сервера и выводит их монитор последовательного порта Рисунок 4 – ESP8266 считывает день недели и время из ответа NTP-сервера и выводит их монитор последовательного порта

    Объяснение кода

    Давайте быстро взглянем на код, чтобы увидеть, как он работает. Сначала мы включаем библиотеки, необходимые для этого проекта.

    • NTPClient.h – это библиотека работы со временем, которая выполняет синхронизацию с NTP-сервером;
    • библиотека ESP8266WiFi.h предоставляет специальные методы для работы ESP8266 с WiFi, которые мы вызываем для подключения к сети;
    • библиотека WiFiUdp.h обрабатывает протокол UDP, например открытие порта UDP, отправку и получение пакетов UDP и т.д.

    Затем мы настраиваем несколько констант, таких как SSID, пароль WiFi и смещение UTC, о которых вы уже знаете. Мы также определяем двумерный массив daysOfTheWeek .

    Теперь, прежде чем инициализировать объект NTP-клиента, нам нужно указать адрес NTP-сервера, который мы хотим использовать. pool.ntp.org – это открытый проект NTP, отлично подходящий для подобных вещей.

    pool.ntp.org автоматически выбирает серверы времени, которые географически близки к вам. Но если вы хотите сделать выбор явно, используйте одну из подзон pool.ntp.org.

    ЗонаАдрес сервера
    Весь мирpool.ntp.org
    Азияasia.pool.ntp.org
    Европаeurope.pool.ntp.org
    Северная Америкаnorth-america.pool.ntp.org
    Океанияoceania.pool.ntp.org
    Южная Америкаsouth-america.pool.ntp.org

    В функции setup() мы сначала инициализируем последовательную связь с ПК и подключаемся к сети WiFi с помощью функции WiFi.begin() .

    Когда ESP8266 подключится к сети, мы инициализируем NTP-клиент с помощью функции begin() .

    Теперь мы можем просто вызывать функцию update() всякий раз, когда нам нужны текущие день недели и время. Эта функция передает пакет с запросом на NTP-сервер, используя протокол UDP, и преобразует полученный пакет с меткой времени в читаемый формат.

    Вы можете получить доступ к информации о дне и времени, воспользовавшись функциями библиотеки NTP-клиента.

    голоса
    Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector