Ti devo fare i complimenti, ci ho messo un po per capire cosa fa il codice.
Lo trovo un modo contorto di fare ma questo indica grande lucidità.
Ok, il controllo dell'ora e minuti ecc dovrebbero stare all'interno della funzione loop().
Urca questa ci ho messo ancora di più a capirla.
if (time > 0 && setModeTime < (millis() - time) ) { setMode( now ); }
Ciao.