Je suis allé voir dans le code de NTPClient et j’ai trouvé cela
unsigned long NTPClient::getEpochTime() const { return this->_timeOffset + // User offset this->_currentEpoc + // Epoc returned by the NTP server ((millis() – this->_lastUpdate) / 1000); // Time since last update
}
Donc l’auteur a déjà prévu la synchro.
On ne devrait lire qu’une seule fois sur le serveur de Temps au boot par exemple. Puis ensuite utiliser getEpochTime() car l’heure est à jour.
Modulo la dérive de millis() qui doit être assez faible sur une journée. Valeur à trouver…
Je ne parlais pas d’un composant externe RTC mais quand l’ESP est en mode deepSleep, seul le module dit ‘RTC’ de l’ESP reste actif. Il y a un compteur qui tourne.
Le but serait d’exploiter ce compteur pour ajuster millis() avec le temps passé en deepSleep. Mais comme le systeme fait un reboot en sortant d’un deepSleep…