Arduino Mega Server
Модератор: Alex
-
- Сообщения: 182
- Зарегистрирован: Чт ноя 24, 2016 10:47 am
- Благодарил (а): 5 раз
- Поблагодарили: 25 раз
Re: Arduino Mega Server
Если есть нормальные(DS3231) часы, то и смысл синхронизации через Интернет пропадает, разве что раз в год.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Arduino Mega Server
ой ой...зачем такие грабли? ОоLoriot писал(а): ↑Чт окт 17, 2019 8:19 pmnick7zmail, да, вы отписывались когда-то по поводу использования rtcSync(), я именно так и попытался отредактировать код.
Может, я не совсем корректно выразился: я планирую использовать AMS, в составе которого есть аппаратные часы реального времени на основе DS3231(макет собираю с DS1307, но не важно), подключение к интернету есть (Ethernet). В процессе работы синхронизируем все часы (системные и те, что на основе DS1307) с серверами в Интернет, а если сеть недоступна (допустим, аварийный режим), то начинаем синхронизировать время в контроллере (системное) с модулем RTC (на основе DS1307), как только появляется сеть — переходим опять на синхронизацию через Интернет. Неужели никто так не делал?
У меня сейчас нет кода под рукой, не могу глянуть...но если мне память не изменяет - существует только время на контроллере (системное, как вы говорите). Оно либо берется с инета, либо берется с rtc модуля, либо выставляется в 00:00:00 01/01/1970 если нет ни того не другого. Т.е. если подключена библиотека rtc - оно в любом случае будет браться с rtc. В наших возможностях только время от времени синхронизировать rtc с инетом, если он есть.
А так как вы хотите сделать - это во первых надо покапаться в библиотеке rtc, во вторых иметь динамическую загрузку библиотек, что, если я не ошибаюсь, arduino IDE не поддерживает.
- За это сообщение автора nick7zmail поблагодарил:
- Loriot (Пт окт 18, 2019 11:03 pm)
- Рейтинг: 1.16%
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
- Loriot
- Сообщения: 5
- Зарегистрирован: Чт сен 12, 2019 11:20 pm
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Arduino Mega Server
Доброго времени суток! У меня опять вопросы по синхронизации внутренних (системных) часов с часами интернета и внешних (аппаратных) часов реального времени. Есть вот такой код:
Arduino Mega Server
version 0.16
...
#define RTC_FEATURE
#define NTP_FEATURE
...
byte timeProvider = TIME_RTC;
...
void setup() {
...
rtcSync();
}
void loop() {
...
if (cycle5m) {
rtcSync();
}
...
}
-----------------------------------------------------
void rtcSync() {
setSyncProvider(getNtpTime);
Serialprint("...getNtpTime... \n");
if (timeStatus() != timeNotSet) {
Serialprint("...set!... \n");
time_t t = getNtpTime();
RTC.set(t);
setSyncProvider(RTC.get);
}
}
Я ввел вызов функции rtcSync() один раз в setup() и циклический в loop(). Вот результаты наблюдений, как ведет себя программа на реальном железе (на макете):
1. При включении питания и отсутствии соединения Ethernet, время стартует с 00:00.
2. Если выключить питание, восстановить соединение Ethernet, включить питание, то время стартует с правильного текущего значения.
Что в программе я делаю не так? rtcSync() я не менял, она в исходном виде. Логически не могу понять строку:
timeStatus() != timeNotSet
Когда системное время не синхронизировано или установлено, почему то считываем время интернета и записываем в аппаратные часы. Почему время в аппаратных часах не сохраняется при выключении и повторной подаче питания? С батарейкой всё норм.
Arduino Mega Server
version 0.16
...
#define RTC_FEATURE
#define NTP_FEATURE
...
byte timeProvider = TIME_RTC;
...
void setup() {
...
rtcSync();
}
void loop() {
...
if (cycle5m) {
rtcSync();
}
...
}
-----------------------------------------------------
void rtcSync() {
setSyncProvider(getNtpTime);
Serialprint("...getNtpTime... \n");
if (timeStatus() != timeNotSet) {
Serialprint("...set!... \n");
time_t t = getNtpTime();
RTC.set(t);
setSyncProvider(RTC.get);
}
}
Я ввел вызов функции rtcSync() один раз в setup() и циклический в loop(). Вот результаты наблюдений, как ведет себя программа на реальном железе (на макете):
1. При включении питания и отсутствии соединения Ethernet, время стартует с 00:00.
2. Если выключить питание, восстановить соединение Ethernet, включить питание, то время стартует с правильного текущего значения.
Что в программе я делаю не так? rtcSync() я не менял, она в исходном виде. Логически не могу понять строку:
timeStatus() != timeNotSet
Когда системное время не синхронизировано или установлено, почему то считываем время интернета и записываем в аппаратные часы. Почему время в аппаратных часах не сохраняется при выключении и повторной подаче питания? С батарейкой всё норм.
- nick7zmail
- Сообщения: 7573
- Зарегистрирован: Пн окт 28, 2013 8:14 am
- Откуда: Екатеринбург
- Благодарил (а): 121 раз
- Поблагодарили: 2010 раз
Re: Arduino Mega Server
Хороший вопрос.
Варианта 2.
1) софт (неправильно подключена или используется библиотека)
2) хардварная неисправность (неверное подключение или заводской брак платы)
Рекомендую залить пару простеньких скетчей из экзамплов к библиотеке ртс, проверить работают ли они и не сбрасываются ли...потом только продолжать эксперименты с АМС.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Arduino Mega Server
Первоначальная синхронизация через сериал командер. В дальнейшем в любое время вручную ( нажать одну кнопочку). С двумя модулями проблем не было. От встроенной батарейки работают третий год.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
- Loriot
- Сообщения: 5
- Зарегистрирован: Чт сен 12, 2019 11:20 pm
- Благодарил (а): 1 раз
- Поблагодарили: 0
Re: Arduino Mega Server
Сейчас проверил модуль RTC (DS1307) отдельно на arduino uno, простенький скетч вывода времени - время идет правильное, осталось записанным в модуль в ходе моих вчерашних экспериментов. Установил модуль обратно в AMS с отключенным Ethernet кабелем - время стартует с 00:00. Установил обратно в uno cо скетчем вывода времени - действительно время идет, но обнулилось. Видно, так как я использую функцию rtcSync() - неправильно или содержимое функции некорректное.
Сериал коммандер когда-то использовал - синхронизирует неверно (точно не помню, что именно, кажется ошибка на несколько часов), при загрузке htm файлов - запись происходит с многочисленными ошибками, поэтому коммандер больше не использую, только карт-ридер.
UPD. Если в rtcSync() заменить две строки:
time_t t = getNtpTime();
RTC.set(t);
на одну строку:
RTC.set(now());
то, кажется, всё работает как положено! Буду тестировать дальше.
Сериал коммандер когда-то использовал - синхронизирует неверно (точно не помню, что именно, кажется ошибка на несколько часов), при загрузке htm файлов - запись происходит с многочисленными ошибками, поэтому коммандер больше не использую, только карт-ридер.
UPD. Если в rtcSync() заменить две строки:
time_t t = getNtpTime();
RTC.set(t);
на одну строку:
RTC.set(now());
то, кажется, всё работает как положено! Буду тестировать дальше.
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
-
- Сообщения: 182
- Зарегистрирован: Чт ноя 24, 2016 10:47 am
- Благодарил (а): 5 раз
- Поблагодарили: 25 раз
Re: Arduino Mega Server
Взаимно!alexsis_76 писал(а): ↑Вс дек 29, 2019 10:22 amЗдравствуйте друзья!!!
Поздравляю с наступающим Новым Годом!!!)))
Всего, чего хочется, да побольше!
-
- Сообщения: 2575
- Зарегистрирован: Пт ноя 06, 2015 10:22 am
- Откуда: Кишинёв
- Благодарил (а): 303 раза
- Поблагодарили: 282 раза
Re: Arduino Mega Server
С Новым Годом! Не смотря ниначто , проект живет и сильно помогает в реализации давних хотелках ))... И это всё таки очень хорошая школа.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
-
- Сообщения: 791
- Зарегистрирован: Пт янв 22, 2016 10:08 am
- Благодарил (а): 6 раз
- Поблагодарили: 63 раза
Re: Arduino Mega Server
ну и хорошо serghei, я очень рад))))проект живет и сильно помогает в реализации давних хотелках