• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

ESP time.h изменить время

krivmst

New member
Всем привет!
Не получается изменить время, библиотека time.h
Делаю через компилятор Arduino, для ESp8266.
Получаю время так:
Код:
void timeSynch(int zone){
    // Настройка соединения с NTP сервером
    configTime(zone * 3600, 0, "pool.ntp.org", "ru.pool.ntp.org");
    int i = 0;
    while (!time(nullptr) && i < 10) {
      Serial.print(".");
      i++;
      delay(1000);
    }
 
}
Вывожу так:
Код:
String GetTime() {
 time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
 String Time = ""; // Строка для результатов времени
 Time += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017
 int i = Time.indexOf(":"); //Ишем позицию первого символа :
 Time = Time.substring(i - 2, i + 6); // Выделяем из строки 2 символа перед символом : и 6 символов после
 return Time; // Возврашаем полученное время
}
А вот в ручную изменить полученное время не могу. Подскажите пожалуйста, как можно это сделать?
 

enjoynering

Well-known member
Зачем вы используете эту унылую копипасту time.h из прошлого века. Библиотека time.h хорошее решение для AVR где нет WiFi и встроенного RTC. У вас же ESP8266. Не надо повторять чужой кривой код. Включайте мозг.

В Arduino ESP8266 Core давно все есть тз коробки. Раз в час ESP8266 стучится на один из трех NTP серверов, получает точное время и корректирует встроенный в ESP8266 RTC. Все это делается 3-я строчками кода!!! И ни каких тебе DS1307, DS3231, GPS NMEA и time.h.

смотрите пример - Arduino/libraries/esp8266/examples/NTP-TZ-DST/NTP-TZ-DST.ino
исходный код функций для лучшего понимания - Arduino/cores/esp8266/time.cpp
 

krivmst

New member
проблема в том, что когда не может постучаться, надо в ручную поменять
 
Сверху Снизу