Arduino--Debug aus der Ferne

Methode a:

if (millis() > (whileTime) + 4000)

Hier werden 2 Überläufe stattfinden!
Millis wird irgendwann überlaufen und die Addition auch.
Ein Überlauf kann kompensiert werden.
Der zweite bricht dir das Genick.

Methode b:

if (millis()-whileTime > 4000)

Hier kann nur der Millis Überlauf stattfinden.
Und dieser wird vom evtl auftretenden Unterlauf der Subtraktion kompensiert.

Methode a versagt nach ca 49 Tagen.
Methode b läuft unbeirrt und fehlerfrei durch, bis zum Weltuntergang.

das Teil läuft max 15 Stunden am Tag, dann schläft es und wenn es aufwacht beginnt alles bei 0

Seit wann geht bei einem sleep der millis() Wert verloren?
Der zählt, im Tiefschlaf, einfach nicht weiter, und das wars....
Oder?
Sämtliche Daten im Ram bleiben erhalten.