Установить время настенных часов или изменить смещение 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();
}
@John F. Miller, 👍0
Обсуждение1 ответ
Лучший ответ:
Функции configTime и GetLocalTime взяты из файла ESP32 core esp32-hal-time.c. Это обертывает функции ESP32 SDK. Вы можете использовать функции SDK для установки времени и пояса. Они работают с периферийным устройством RTC ESP32.
Вы можете использовать setTimeZone для установки часового пояса.
Время.h-стандартная библиотека времени C. ESP32 SDK позволяет работать со встроенным RTC (reference). Установить время становится сложнее. Вам придется использовать недокументированные функции времени SDK.
- Документация ESP32 для "time.h"
- ESP32 секунды от эпохи
- Как установить RTC в ES32 с помощью NTP-сервера?
- Ошибка при передаче `time_t` и `struct tm`, ESP32
- Обратная связь ESP32 от NTP
- (Почему) успешное завершение getLocalTime() на ESP32 занимает несколько секунд
- Не удалось преобразовать time_T из прошлого в структуру tm
- Размер структуры tm (datetime) отличается в ESP32 от linux64x
Проверьте эту библиотеку, которую я написал https://github.com/fbiego/ESP32Time, @fbiego