Für ein Uhrenprojekt möchte ich die ESP32-interne RTC und eine DS3231 RTC ein paar Mal pro Tag via NTP synchronisieren.
Es gibt die configTime()-Funktion, die bei aktiven WLAN über den Parameter sntp_set_sync_interval() regelmäßig die Zeit synchronisiert. Nachteil ist, dass der ESP dafür immer mit dem WLAN verbunden ist.
Da mir 1-2 mal reicht, die Zeit zu synchronisieren, würde ich WLAN nach der Aktualisierung deaktivieren und vor der nächsten Synchronisierung wieder Einschalten.
Macht man das so, oder lasst ihr den ESP32 ständig mit dem WLAN verbunden?
Die externe RTC deshalb, weil das WLAN offline sein kann oder der Empfang gestört ist.
Die Idee ist: beim Einschalten wird die interne ESP32-Uhr über die RTC oder wenn verfügbar über NTP aktualisiert. Im lfd. Betrieb wird die ESP32-Uhr alle paar Minuten über die RTC DS3231 upgedated. Beide RTC-Uhren werden 1 - 2 Mal am Tag über NTP gestellt.
Damit reduziere ich den Internet-Traffic und habe trotzdem eine hochgenaue Uhr.
Wenn Du ohne die Backup-Sicherheit der RTC (DS3231/3232) leben kannst und halt mal keine aktuelle Uhrzeit (auf dieser einen Uhr) hast, wenn das Netz weg ist, dann kannst Du auf die RTC verzichten.
Alle 6-12 Stunden per NTP synchronisieren genügt (je nach Anforderung an die Genauigkeit) völlig.
Hmm - ich würde die Frage vielleicht anders herum stellen:
Warum eine externe RTC dranhängen, wenn es eine interne gibt und NTP verfügbar ist?
Ich lasse ihn verbunden. Wenn er eh' durchlaufen soll, um die Uhrzeit anzuzeigen und alle Viertelstunde die Spritpreise abzufragen, kann der Funkteil auch anbleiben.
Habe genau ein Mini-Projekt auf dem Schreibtisch, das mit einem Akku und einem ePaper-Display (Update bestenfalls alle 30min) betrieben werden soll, da will ich den ESP jeweils schlafen legen.
Ich habe eine DS3231 seit über einem Jahr nicht neu gestellt läuft jetzt 1,5min vor. Habe gerade geschaut genau sind es 1Jahr 8 Mon. und die ist im Gartenschuppen wo die Temperatur ist und war -12°C und jetzt +38°
Die Dinger sind schon sehr genau für den Preis
Von der DS3231 scheint es mindestens 2 Versionen zu geben, die sich in der Genauigkeit unterscheiden. Die genauere DS3231SN und die etwas ungenauere DS3231M.
Diskussion dazu hier.
Danke für die Recherche wusste gar nicht
Habe zu hause noch zwei Module muss mal schauen was da verbaut ist, nach dem was ich festgestellt habe muss im Garten eine SN verbaut sein, genaueres weis ich im Herbst wen das ganze umgebaut wird.
Manchmal kommen die findige Chinesen an B Ware dran was irgend wie funktioniert leider nicht wie sol,l habe gerade vor ein parr Tage das erlebt mit SI4703 Modulen von 3 funktioniert nur einer wie es soll, die zwei andere gingen zurück, heißt durfte die endsorgen, Geld zurück erhalten.
Die NTP-Zeit ist ja „nur“ sekundengenau. Kann aber um etliche hundert ms von der tatsächlichen Zeit abweichen, je nachdem wann die NTP-Zeit abgegriffen wurde.
12:10:04:001 und 12:10:04.999 ergeben beides 12 Uhr, 10 Minuten und 4 Sekunden.
Das war bei DCF77 einfacher, da man dort lfd. in der loop() die DCF-Zeit im ms-Intervall abfragen konnte. Bei NTP eher schwierig.
Wie bekommt man es hin, die interne RTC bzw. eine DS3231 ms-genau zu synchronisieren?