#include "time_sync.h" #include static bool timeReady = false; void timeSyncBegin() { // UTC, без летнего времени — платформа хранит и парсит время в UTC. configTime(0, 0, "pool.ntp.org", "time.nist.gov"); Serial.print("[time] syncing via NTP"); time_t now = time(nullptr); unsigned long start = millis(); // 8 * 3600 — грубая нижняя граница правдоподобного unix-времени, // пока NTP не ответит time() возвращает эпоху около 0. while (now < 8 * 3600 && millis() - start < 15000) { delay(250); Serial.print("."); now = time(nullptr); } Serial.println(); timeReady = now >= 8 * 3600; if (timeReady) { Serial.println("[time] synced"); } else { Serial.println("[time] sync timed out, will retry in background"); } } bool timeSyncIsReady() { if (!timeReady) { time_t now = time(nullptr); timeReady = now >= 8 * 3600; } return timeReady; } String nowRFC3339() { time_t now = time(nullptr); struct tm tmStruct; gmtime_r(&now, &tmStruct); char buf[21]; strftime(buf, sizeof(buf), "%Y-%m-%dT%H:%M:%SZ", &tmStruct); return String(buf); }