wieso sollte die sleep routine nur möglichst kurz laufen? Was wäre dann die Alternative dazu?
wakeUpNow() ist ein InterruptHandler. Auf das bezog sich mein Kommentar.
ISR laufen vorrangig vor anderem Code und können daher keine delay() oder Serial.write() etc. enthalten.
Da nach wakeUpNow() dein sleepNow() wieder aufgewacht ist und weiterläuft, kann eigentlich alles nötige auch dort enthalten sein.