Авто переведення часу для Arduino на C++

Сьогодні я зіткнувся з проблемою що коли переводять годинник мої Arduino пристрої починають показувати неточний час і я знайшов рішення цієї проблеми

Код

#include <NTPClient.h>
#include <WiFiUdp.h>

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP, "ua.pool.ntp.org", 7200);

void initTime() {
  // Встановлюємо початкове значення літнього часу на false
  bool isDaylightSaving = false;

  // Отримуємо поточну дату та час з сервера NTP
  timeClient.begin();
  timeClient.update();
  String formattedTime = timeClient.getFormattedTime();

  // Розбиваємо рядок з форматованим часом на складові
  int day, month, year, hour, minute, second;
  sscanf(formattedTime.c_str(), "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &minute, &second);

  // Перевіряємо, чи поточний місяць знаходиться в інтервалі березень-жовтень
  if (month > 3 && month <= 10) {
    // Якщо так, встановлюємо літній час на true
    isDaylightSaving = true;
  }

  // Встановлюємо зміщення часового поясу для врахування літнього часу
  if (isDaylightSaving) {
    timeClient.setTimeOffset(14400); // UTC+3 для України
  } else {
    timeClient.setTimeOffset(10800); // UTC+2 для України
  }
}

void setup() {
  // Підключення до WiFi і налаштування часу
  ...

  initTime();
}

void loop() {
  // Оновлюємо час з сервера NTP
  timeClient.update();

  // Решта коду для програми
  ...
}

Тестовано на esp32.

Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Д
Данило@S.D.L

1.3KПрочитань
2Автори
5Читачі
Підтримати
На Друкарні з 15 квітня

Більше від автора

Вам також сподобається

  • Метод 5 хвилин — порятунок від ліні

    У вас буває таке, що список справ зростає, а ви не можете змусити себе почати? Маленькі завдання накопичуються, і вже здається, що ви завалені роботою. Але є один простий спосіб, який допоможе впоратися з цим. Це – метод 5 хвилин.

    Теми цього довгочиту:

    Мотивація
  • Встигнути все: як калькулятор днів допомагає оптимізувати час і гроші

    Час — це ресурс, який неможливо відновити. Ми часто чуємо фразу "час — гроші", але наскільки добре ми дійсно вміємо керувати ним? У сучасному ритмі життя дедлайни, важливі події, фінансові зобов'язання чи навіть святкові дати іноді вислизають із нашої уваги.

    Теми цього довгочиту:

    Час
  • Arduino уроки для початківців: Урок 1. Вступний урок. Що ж таке Arduino?

    Пивіт всім! Вивчаючи електроніку можна зробити висновок що українського матеріалу на просторах інтернета досить мало, тому я вирішив створити курс по вивченню досить простої та одночасно потужної платформи для любителів програмувння та електронікі — Arduino.

    Теми цього довгочиту:

    Arduino

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Вам також сподобається

  • Метод 5 хвилин — порятунок від ліні

    У вас буває таке, що список справ зростає, а ви не можете змусити себе почати? Маленькі завдання накопичуються, і вже здається, що ви завалені роботою. Але є один простий спосіб, який допоможе впоратися з цим. Це – метод 5 хвилин.

    Теми цього довгочиту:

    Мотивація
  • Встигнути все: як калькулятор днів допомагає оптимізувати час і гроші

    Час — це ресурс, який неможливо відновити. Ми часто чуємо фразу "час — гроші", але наскільки добре ми дійсно вміємо керувати ним? У сучасному ритмі життя дедлайни, важливі події, фінансові зобов'язання чи навіть святкові дати іноді вислизають із нашої уваги.

    Теми цього довгочиту:

    Час
  • Arduino уроки для початківців: Урок 1. Вступний урок. Що ж таке Arduino?

    Пивіт всім! Вивчаючи електроніку можна зробити висновок що українського матеріалу на просторах інтернета досить мало, тому я вирішив створити курс по вивченню досить простої та одночасно потужної платформи для любителів програмувння та електронікі — Arduino.

    Теми цього довгочиту:

    Arduino