wie könnte ich das umstricken das wenn er das ganz sicher ausführt... falls er mal wegen etwas rechenintensivem zu diesem Zeitpunkt blockiert wurde
Üblicherweise merkt man sich, wann etwas zuletzt passiert ist (hätte passieren sollen), und wenn seitdem ein Zyklus vorbei ist, macht man es wieder. (BlinkWithoutDelay lässt sich etwas verfeinern, um nicht bei Verzögerungen wegzudriften)
Etwas schwieriger wird es, wenn du auf Uhrzeiten, die asynchron modifiziert werden könnten, angewiesen bist. Dein dayrotate ist schonmal nicht verkehrt. Wenn du aber Aussetzer von einer ganzen Sekunde Dauer oder mehr hast, reicht es nicht ganz.
Ist zwar nicht der Fehler hier, aber sei vorsichtig bei führenden Nullen mit Integer Lateralen. Das bedeutet dass die Zahl Oktal ist. Bei 0 oder 1 spielt das keine Rolle, aber Zahlen > 7 macht das nicht was du willst
Ok, die timelib.h Funktionen wie day() month() hour() usw liefern aber eben wie 0 immer mit... ich kann ja jetzt nicht alt bewährte libs umändern. Oder gibt es "etwas" um das zu entschärfen?
Nein. 0 ist 0. Du darfst das nicht mit der Serial Ausgabe verwechseln. Wenn du das per sprintf() so formatierst dass führende Nullen gedrückt werden hat das rein gar nichts damit zu tun wie die Zahl im Contoller gespeichert wird.