Время с NTP сервера

kpachbiy
Offline
Зарегистрирован: 08.11.2015

Здравствуйте!

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

Время хочу получать с NTP сервера.

При каждом срабатывание датчика лезть в интернет нецелесообразно, по этому хочу сделать так:

В setup ардуино подлючается к NTP серверу и кладёт значение в переменную startTime, потом, когда срабатывает датчик движения время узнаётся startTime+millis().

Сработает?

Какие недостатки у данного метода?

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Да, сработает.

Вам нужна еще одна переменная (значение millis(), во время обращения к серверу), которую нужно будет вычитать.

Я обычно добавляю обращение к серверу, примерно раз в 1 час, для точности.

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

ratman
Offline
Зарегистрирован: 11.10.2015

Gippopotam пишет:

Да, сработает.

Вам нужна еще одна переменная (значение millis(), во время обращения к серверу), которую нужно будет вычитать.

Я обычно добавляю обращение к серверу, примерно раз в 1 час, для точности.

А переполнение millis как учитывать? Проверка текущего состояния, если меньше времени запроса, то от максимума вычитать время запроса и добавлять текущее?

Просто сам думаю от безделья часы с термометром и вафлей замутить.

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Проще не изголяться а периодически обновлять время сервера. А еще лучше - поставить RTC.

Безделье - это плохо.

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

если МК ничем не занят, то можно еще набросать скетч часов и синхронизировать время по ntp раз в сутки

Gippopotam
Gippopotam аватар
Offline
Зарегистрирован: 12.09.2014

Valera19701 пишет:

если МК ничем не занят, то можно еще набросать скетч часов и синхронизировать время по ntp раз в сутки

странный совет, учитывая, что об этом и идет речь...

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

Gippopotam пишет:

странный совет, учитывая, что об этом и идет речь...

пост #2 сподвиг меня на это

pav2000
Offline
Зарегистрирован: 15.12.2014

kpachbiy пишет:

Здравствуйте!

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

Время хочу получать с NTP сервера.

При каждом срабатывание датчика лезть в интернет нецелесообразно, по этому хочу сделать так:

В setup ардуино подлючается к NTP серверу и кладёт значение в переменную startTime, потом, когда срабатывает датчик движения время узнаётся startTime+millis().

Сработает?

Какие недостатки у данного метода?

1. Если у pir датчик. то там должен быть фоторезистор который "отсекае" день и начинает работать на движение только при определенном уровне освещенности.

2. Предлагаемый метод (NTP сервер) будет рабоать (я его использую) только маленькое замечание. NTP сервер обычно крутится под linux и время приходит в формате unsigned long  - число секунд с момента 01.01.1970. По этому прибавлять надо только секунды.