Arduino Mega Server

Модератор: Alex

eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: Arduino Mega Server

Сообщение eGorka » Пт окт 18, 2019 6:58 am

Если есть нормальные(DS3231) часы, то и смысл синхронизации через Интернет пропадает, разве что раз в год.
Аватара пользователя
nick7zmail
Сообщения: 7573
Зарегистрирован: Пн окт 28, 2013 8:14 am
Откуда: Екатеринбург
Благодарил (а): 121 раз
Поблагодарили: 2010 раз

Re: Arduino Mega Server

Сообщение nick7zmail » Пт окт 18, 2019 7:06 am

Loriot писал(а):
Чт окт 17, 2019 8:19 pm
nick7zmail, да, вы отписывались когда-то по поводу использования 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
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
Аватара пользователя
Loriot
Сообщения: 5
Зарегистрирован: Чт сен 12, 2019 11:20 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение Loriot » Пн окт 21, 2019 10:01 pm

Доброго времени суток! У меня опять вопросы по синхронизации внутренних (системных) часов с часами интернета и внешних (аппаратных) часов реального времени. Есть вот такой код:

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

Сообщение nick7zmail » Вт окт 22, 2019 10:17 am

Loriot писал(а):
Пн окт 21, 2019 10:01 pm
Почему время в аппаратных часах не сохраняется при выключении и повторной подаче питания? С батарейкой всё норм.
Хороший вопрос.
Варианта 2.
1) софт (неправильно подключена или используется библиотека)
2) хардварная неисправность (неверное подключение или заводской брак платы)

Рекомендую залить пару простеньких скетчей из экзамплов к библиотеке ртс, проверить работают ли они и не сбрасываются ли...потом только продолжать эксперименты с АМС.
Raspberry Pi3+Broadlink+esp8266 (blynk)+AMS
Если вам помогло какое-либо сообщение - не забывайте пользоваться кнопкой "СПАСИБО".
:arrow: Услуги в профиле коннект
>>>>>Мой новый канал на ютутбе, подписывайтесь!<<<<<
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Вт окт 22, 2019 10:38 am

Первоначальная синхронизация через сериал командер. В дальнейшем в любое время вручную ( нажать одну кнопочку). С двумя модулями проблем не было. От встроенной батарейки работают третий год.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Аватара пользователя
Loriot
Сообщения: 5
Зарегистрирован: Чт сен 12, 2019 11:20 pm
Благодарил (а): 1 раз
Поблагодарили: 0

Re: Arduino Mega Server

Сообщение Loriot » Вт окт 22, 2019 9:14 pm

Сейчас проверил модуль RTC (DS1307) отдельно на arduino uno, простенький скетч вывода времени - время идет правильное, осталось записанным в модуль в ходе моих вчерашних экспериментов. Установил модуль обратно в AMS с отключенным Ethernet кабелем - время стартует с 00:00. Установил обратно в uno cо скетчем вывода времени - действительно время идет, но обнулилось. Видно, так как я использую функцию rtcSync() - неправильно или содержимое функции некорректное.
Сериал коммандер когда-то использовал - синхронизирует неверно (точно не помню, что именно, кажется ошибка на несколько часов), при загрузке htm файлов - запись происходит с многочисленными ошибками, поэтому коммандер больше не использую, только карт-ридер.
UPD. Если в rtcSync() заменить две строки:
time_t t = getNtpTime();
RTC.set(t);

на одну строку:
RTC.set(now());
то, кажется, всё работает как положено! Буду тестировать дальше.
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server

Сообщение alexsis_76 » Вс дек 29, 2019 10:22 am

Здравствуйте друзья!!!
Поздравляю с наступающим Новым Годом!!!)))
eGorka
Сообщения: 182
Зарегистрирован: Чт ноя 24, 2016 10:47 am
Благодарил (а): 5 раз
Поблагодарили: 25 раз

Re: Arduino Mega Server

Сообщение eGorka » Вс дек 29, 2019 10:55 am

alexsis_76 писал(а):
Вс дек 29, 2019 10:22 am
Здравствуйте друзья!!!
Поздравляю с наступающим Новым Годом!!!)))
Взаимно!
Всего, чего хочется, да побольше!
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: Arduino Mega Server

Сообщение serghei » Вс дек 29, 2019 11:11 am

С Новым Годом! Не смотря ниначто , проект живет и сильно помогает в реализации давних хотелках ))... И это всё таки очень хорошая школа.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
alexsis_76
Сообщения: 791
Зарегистрирован: Пт янв 22, 2016 10:08 am
Благодарил (а): 6 раз
Поблагодарили: 63 раза

Re: Arduino Mega Server

Сообщение alexsis_76 » Вс дек 29, 2019 11:13 am

проект живет и сильно помогает в реализации давних хотелках
ну и хорошо serghei, я очень рад))))
Ответить