Обновление для перехода на летнее время "ConfigTime"
Я использую ESP8266 для синхронизации часов NTP таким образом:
void myIOT2::_startNTP(const int gmtOffset_sec, const int daylightOffset_sec, const char *ntpServer)
{
configTime(gmtOffset_sec, daylightOffset_sec, ntpServer); //настройка смещения по времени и сервера NTP
while (now() < 1627735850) /* while in 2021 */
{
delay(20);
}
delay(100);
}
Но теперь, когда переход на летнее время закончился 31/10/2021, какой код "флагов", который теперь переходит на летнее время, закончился, и 3600 секунд нужно уменьшить (или добавить) ?
в моем случае gmtOffset_sec=2*3600
и daylightOffset_sec=1*3600
NtpServer="pool.ntp.org"
@Guy . D, 👍-1
Обсуждение1 ответ
Подведение итогов комментариев @juraj
вместо определения UTC+x и смещения дневного света вместо этого используйте NTZ.
В то время как ESP8266 имеет `TZ.h в качестве части своего ядра, я использовал соответствующий TZ, как показано на рисунке.
для ESP32: a) замените на
configTzTime,
как показано на рисунке. б) Скопируйте соответствующий TZ изTZ.h
для текущей библиотеки и используйте следующим образом.
для ESP8266:
configTime(TZ_Asia_Jerusalem, ntpServer);
для ESP32:
configTzTime(TZ_Asia_Jerusalem, NtpServer);
// Значение Tz было скопировано в код
- Как справиться с rollover millis()?
- Как получить текущее время и дату в Arduino без внешнего источника?
- Преобразование в Unix Timestamp и обратно
- Как запустить цикл на определенное время?
- Почему мои часы реального времени показывают неверное время с моего ПК?
- Разница между «time_t» и «DateTime»
- Точность часов времени Arduino
- Как преобразовать время EPOCH во время и дату на Arduino?
SDK настраивается автоматически. Я использую только `configTime(TZ_Europe_Bratislava, "pool.ntp.org"); Константы TZ находятся в TZ.h в ядре esp8266, @Juraj
@Juraj Я предполагаю, что "TZ_Europe_Bratislava" инкапсулирует такие же константы, как и у меня. Но все равно моя синхронизация времени не обновилась, @Guy . D
информация о DST не поступает с сервера NTP. мои часы esp8266 изменили время с 3 до 2 часов ночи, но они синхронизируются с NTP только один раз в день, @Juraj
@Juraj Я использовал свою константу TZ, и она сработала, как вы сказали. Не могли бы вы объяснить, пожалуйста, почему мой метод не сработал должным образом?, @Guy . D
@Juraj Что мне делать в ESP32 ?, @Guy . D
@Juraj NTP не был сдвинут по мере необходимости, @Guy . D
@Juraj TNX, и это относится к моему вопросу об ESP32 ( поскольку "TZ.h "принадлежит" ESP8266.h"), @Guy . D
esp32 имеет функцию configTzTime для часового пояса. в нем отсутствует файл TZ.h. вы можете скопировать файл TZ.h или только строку с определением зоны для вашего часового пояса., @Juraj
Для справки: https://github.com/esp8266/Arduino/blob/14c3798d4ff959254599f2904579412acba3f175/cores/esp8266/TZ.h#L338, @Nick Bolton