Ein paar Gedanken, die mir beim Frühstück gekommen sind:
Annahmen/Vorbedingungen
(a) Der als „Hauptuhr“ genutzte Shelly hat Internet-Zugang, eine bei der Konfiguration festgelegte Zeitzone und Zugriff auf einen Zeitserver.
(b) Es gibt im Netz verfügbare APIs zur Feststellung, ob gerade Sommerzeit oder Winterzeit ist und zur Umrechnung der Unixtime in die lokale Zeit und Vice versa.
(c) Es gibt die Möglichkeit, dem Script mitzuteilen, daß die Nebenuhren noch nicht initialisiert wurden und welche Zeit die Zeiger (in Ruhestellung der Nebenuhrwerke) zeigen.
Wenn dies gegeben ist (b siehe Google Timezone API), so könnte folgendes implementiert werden:
1. Beim ersten Start der Hauptuhr erfolgt zunächst ein schnelles Stellen der Nebenuhren, falls die Grundstellung der Zeiger in der Vergangenheit liegt. Liegt die Grundstellung der Zeiger in der Zukunft, wartet die Hauptuhr solange, bis der erste Implus abgegeben werden muß.
2. Die Hauptuhr legt mit jedem Zeitstempel, der minütlich gespeichert wird, auch die lokale Zeit inkl. der Info ab, ob gerade Sommer- oder Winterzeit ist.
3. Die Hauptuhr führt einen Zähler der abgegebenen Pulse („Istzeit, Anzeige der Nebenuhren“), die zu bestimmten Zeitpunkten mit der Sollzeit verglichen wird. Weichen die beiden Zeiten ab, beginnt der Prozess der Zeitkorrektur.
4. Bei der Zeitkorrektur bleiben die Nebenuhren solange stehen, bis Übereinstimmung mit der Sollzeit erreicht ist, wenn die Istzeit größer als die Sollzeit ist. Liegt die Istzeit hinter der Sollzeit, wird die Anzahl der Impulse bis zur Übereinstimmung in schneller Folge geliefert.
Damit wird erreicht, daß es keinen programmtechnischen Unterschied zwischen der Sommer-/Winterzeit-Umstellung und einem Stromausfall geben muß.