Beispiel für NTP Synchronisation und Erhaltung der Systemzeit nach dem Deep Sleep und wakeup.
Eigentlich wird nach erfolgreicher Zeit Synchronisation mit dem NTP Server automatisch die Systemzeit in RTC Timer geladen. Nach dem Reset oder wakeup is die Systemzeit eingestellt. Einziges was fehlt ist die Einstellung der Zeitzone. Die Zeitzone muss nach dem wakeup neu eingestellt werden.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
#include <WiFi.h> #define SchlafZeit 3E7 // Mikrosekunden hier 3s #define NTP_SERVER "de.pool.ntp.org" #define TZ_INFO "WEST-1DWEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00" // Western European Time RTC_DATA_ATTR int bootZaeler = 0; // Variable in RTC Speicher bleibt erhalten nach Reset void ErsteStart() { Serial.println("Start nach dem Reset"); WiFi.mode(WIFI_STA); WiFi.begin("WlanName", "Pass"); Serial.println(""); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.print("IP Addresse: "); Serial.println(WiFi.localIP()); Serial.println("Hole NTP Zeit"); struct tm local; configTzTime(TZ_INFO, NTP_SERVER); // ESP32 Systemzeit mit NTP Synchronisieren getLocalTime(&local, 10000); // Versuche 10 s zu Synchronisieren WiFi.mode(WIFI_OFF); } void setup() { esp_sleep_wakeup_cause_t wakeup_cause; // Variable für wakeup Ursache setenv("TZ", TZ_INFO, 1); // Zeitzone muss nach dem reset neu eingestellt werden tzset(); Serial.begin(115200); Serial.println(""); ++bootZaeler; Serial.println("Start Nr.: " + String(bootZaeler)); wakeup_cause = esp_sleep_get_wakeup_cause(); // wakeup Ursache holen if (wakeup_cause != 3) ErsteStart(); // Wenn wakeup durch Reset } void loop() { tm local; getLocalTime(&local); Serial.println(&local, "Datum: %d.%m.%y Zeit: %H:%M:%S"); // Zeit Datum Print Ausgabe formatieren Serial.println("Deep Sleep - Gehe schlafen \r\n \r\n"); esp_sleep_enable_timer_wakeup(SchlafZeit); // Deep Sleep Zeit einstellen esp_deep_sleep_start(); // Starte Deep Sleep } |