@gidiara666,
У меня часы с RTC работают так, что время в RTC я могу записать из браузера или из интернета по нажатию кнопок. Код такой:
Или другой вариант, автоматический. RTC в устройстве нету, так что время берётся при запуске из интернета, если не удалось, то при посещении странички устройства оно берёт время из браузера.
*****************
Справку для юзера можно поместить в блок GP.SPAN(текст); или GP.PLAIN(текст);
У меня часы с RTC работают так, что время в RTC я могу записать из браузера или из интернета по нажатию кнопок. Код такой:
C++:
//кнопка записи времени браузера в RTC
if (ui.clickSub("btn/datetimebr")) {
rtc.adjust(DateTime(ui.getUnix()+ui.getGMT()*60));
}
//кнопка записи времени NTP в RTC
if (ui.clickSub("btn/datetimentp")) {
if(timeClient.isTimeSet())
{
rtc.adjust(DateTime(timeClient.getEpochTime()));
}
else
{
timeClient.forceUpdate();
if(timeClient.isTimeSet())
{
rtc.adjust(DateTime(timeClient.getEpochTime()));
}
}
}
Или другой вариант, автоматический. RTC в устройстве нету, так что время берётся при запуске из интернета, если не удалось, то при посещении странички устройства оно берёт время из браузера.
C++:
bool _timeMode = 0; //откуда брать время (0 - NTP, 1 - браузер)
uint16_t _getNTPtimeInterval = 60*60; //интервал обновления времени из интернета, раз в час
uint8_t _myTimerIDgetNTPtime;//id таймера, который вызывает getNTPtime(){timeClient.forceUpdate();}
_myTimerIDgetNTPtime = myTimer.setInterval((60*60*1000), getNTPtime); //раз в час обновлять время
uint8_t hour,minute=0;
if(ui.getUnix()>1695124052)//время в GP правильное
{
if(_timeMode==1)//брать время из GP, которое берётся из компьютера при посещении страницы устройства
{
hour = ui.getSystemTime().getHours();
minute = ui.getSystemTime().getMinutes();
}
}
else
{//время в GP неправильное
_timeMode=0;//переключить режим на получение времени из интернета, так как из браузера не получали
}
if(timeClient.isTimeSet())//время из интернета актуально
{
if(_timeMode==0)//выбран режим отображения времени интернета
{
hour = timeClient.getHours();
minute = timeClient.getMinutes();
}
if(_getNTPtimeInterval==60)//время обновляется раз в минуту
{
//перенастроить таймер на обновление раз в час
_getNTPtimeInterval=60*60;
myTimer.deleteTimer(_myTimerIDgetNTPtime);
_myTimerIDgetNTPtime = myTimer.setInterval((_getNTPtimeInterval*1000), getNTPtime); //раз в минуту обновлять время
}
}
else
{//время из интернета не взято
if(_timeMode==0)//но оно нужно
{
if(_getNTPtimeInterval!=60)//таймер обновляется раз в час
{
//перенастроить таймер на обновление раз в минуту
_getNTPtimeInterval=60;
myTimer.deleteTimer(_myTimerIDgetNTPtime);
_myTimerIDgetNTPtime = myTimer.setInterval((_getNTPtimeInterval*1000), getNTPtime); //раз в минуту обновлять время
}
//следующий заход попробовать взять время из браузера
_timeMode=1;
}
}
Справку для юзера можно поместить в блок GP.SPAN(текст); или GP.PLAIN(текст);