В настоящее время я разрабатываю решение для синхронизации часов на оборудовании. Каждый раз, когда оборудование включается после отключения питания, его часы точно равны «01:01». Для синхронизации этого оборудования у меня есть дистанционный переключатель NEXA и дуэт Telldus. Дуэт Telldus подключен к серверу, который является сервером NTP с источником GPS и PPS.
Теперь о проблеме: в настоящее время часы синхронизируются, просто отключив питание, запланированное на 01:00, а затем включив питание 01:01, в результате чего часы на оборудовании всегда будут работать правильно.
Но проблема заключается в днях изменения DST. Если есть день смены летнего времени, который говорит, что часы должны быть переведены на 1 час вперед с 02:00 до 03:00, то часы на оборудовании будут отставать на 1 час в течение одного полного дня. Если есть день смены летнего времени, который говорит, что часы должны быть переведены НАЗАД на 1 час, тогда оборудование будет работать на 1 час слишком быстро.
Таким образом, в дни DST FORWARD мне нужно запланировать выключение оборудования в 00:00 и включение в 00:01. Тогда оборудование будет 01:01, когда часы 00:01. Если часы установлены на 02:00 и заменены на 03:00, оборудование будет уже в 03:00, таким образом, оборудование будет иметь неправильные часы только на 2 часа.
А в дни DST BACK мне нужно запланировать выключение оборудования в 02:00 и включение в 02:01. Таким образом, оборудование будет 02:00, когда часы 03:00, а DST вернется к 02:00, поэтому в этом случае часы оборудования будут неправильными только в течение 1 часа.
У меня есть полная возможность написать сценарий, который выполнит это, дал, что:
Я знаю команду, которая может сказать мне, если СЕГОДНЯ это день, когда произойдет изменение летнего времени, и в каком направлении (с 02:00 до 03:00 или с 03:00 до 02:00) это произойдет.
Это означает, что мне нужна либо какая-то специальная команда DST, либо возможность "смотреть в будущее", например: «Что такое часы, когда прошло 4 часа, учитывая DST?». (Тогда я мог бы проверить, если разница между текущим и возвращенным часами составляет 3 часа, то это день DST-BACK, 4 часа, затем день NO-DST и 5 часов, а затем день DST-FORWARD)
У кого-нибудь есть идея такой команды?