Interne Uhr geht um mehrere Sekunden pro Minute nach

Es sollte nicht schaden, diese sekündlich abzufragen.

Ungetestet: Stattdessen könntest Du die Berechnung kalibrieren. In \libraries\Time\Time.cpp mal mit dem Wert 1000 spielen:

time_t now() {
	// calculate number of seconds passed since last call to now()
  while (millis() - prevMillis >= 1000) {
		// millis() and prevMillis are both unsigned ints thus the subtraction will always be the absolute value of the difference
    sysTime++;
    prevMillis += 1000;	

Das setzt natürlich voraus, Dein Programm enthält keinen Zeitfresser. Kommentiere beispielsweise mal strip.show(); aus, ob dadurch millis() beeinflußt wird, schließlich werden ja bei der Datenausgabe die Interrupts gesperrt.