diff --git a/src/rtctime.cpp b/src/rtctime.cpp index 50ee9fb4..4fe5ca47 100644 --- a/src/rtctime.cpp +++ b/src/rtctime.cpp @@ -97,14 +97,16 @@ time_t get_rtctime(void) { } // get_rtctime() void sync_rtctime(void) { - if (timeStatus() != timeSet) { - ESP_LOGE(TAG, "Unable to sync with the RTC"); - } else { - time_t t = now(); - setTime(t); - ESP_LOGI(TAG, "RTC has set system time to %02d/%02d/%d %02d:%02d:%02d", - month(t), day(t), year(t), hour(t), minute(t), second(t)); + if (timeStatus() != timeSet) { // do we need time sync? + time_t t = get_rtctime(); + if (t) { // do we have valid time by RTC? + setTime(t); + ESP_LOGI(TAG, "RTC has set system time to %02d/%02d/%d %02d:%02d:%02d", + month(t), day(t), year(t), hour(t), minute(t), second(t)); + } else + ESP_LOGE(TAG, "RTC has no confident time, not synced"); } + #ifdef TIME_SYNC_INTERVAL_RTC setSyncProvider(&get_rtctime); setSyncInterval(TIME_SYNC_INTERVAL_RTC);