Установить время настенных часов или изменить смещение GMT без ntp-сервера?

Я смог получить текущее время с сервера NTP и установить то, что кажется внутренними часами, используя функцию configTime() из ядра ESP32. Затем я могу получить текущее время с помощью функции GetLocalTime().

Я хотел бы иметь возможность установить время, возвращаемое GetLocalTime() из пользовательского ввода, а не с сервера NTP. Я также хотел бы иметь возможность обновлять смещение GMT без необходимости повторного подключения к серверу.

Как мне взаимодействовать со значением часов, используемым GetLocalTime()? Есть ли где-нибудь документация на эти часы?


по запросу пример SimpleTime из установки ESP32:

#include <WiFi.h>
#include "time.h"

const char* ssid       = "YOUR_SSID";
const char* password   = "YOUR_PASS";

const char* ntpServer = "pool.ntp.org";
const long  gmtOffset_sec = 3600;
const int   daylightOffset_sec = 3600;

void printLocalTime()
{
  struct tm timeinfo;
  if(!getLocalTime(&timeinfo)){
    Serial.println("Failed to obtain time");
    return;
  }
  Serial.println(&timeinfo, "%A, %B %d %Y %H:%M:%S");
}

void setup()
{
  Serial.begin(115200);

  //подключение к Wi-Fi
  Serial.printf("Connecting to %s ", ssid);
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
      delay(500);
      Serial.print(".");
  }
  Serial.println(" CONNECTED");

  //init и получить время
  configTime(gmtOffset_sec, daylightOffset_sec, ntpServer);
  printLocalTime();

  //отключите Wi-Fi, так как он больше не нужен
  WiFi.disconnect(true);
  WiFi.mode(WIFI_OFF);
}

void loop()
{
  delay(1000);
  printLocalTime();
}

, 👍0

Обсуждение

Проверьте эту библиотеку, которую я написал https://github.com/fbiego/ESP32Time, @fbiego


1 ответ


Лучший ответ:

3

Функции configTime и GetLocalTime взяты из файла ESP32 core esp32-hal-time.c. Это обертывает функции ESP32 SDK. Вы можете использовать функции SDK для установки времени и пояса. Они работают с периферийным устройством RTC ESP32.

Вы можете использовать setTimeZone для установки часового пояса.

Время.h-стандартная библиотека времени C. ESP32 SDK позволяет работать со встроенным RTC (reference). Установить время становится сложнее. Вам придется использовать недокументированные функции времени SDK.

,