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

Делюсь опытом Библиотека для работы со временем

Добрый день всем!

Для тех, кто делает часы на ESP8266, сделал простую библиотеку для работы со временем.

Как с ней работать:
Код:
#include <TimeLib.h>

TimeLib tt;

Serial.print ( tt.tmDate() );
Serial.print ( tt.tmTime() );
Вот ссылка на github, сильно не пинайте за кривой код.
OlegReshetnik/ESP8266_Libraries

Библиотека для работы со временем ESP8266
 

valerivp

Member
Там какой-то странный time.h, я имею ввиду Arduino SDK, в нем только миллисекунды и микросекунды,
а мое "творчество" - это результат ковыряния исходников SDK Exspressif.
Что же умеет ваша библиотека? Опишите как вы себе это видите.

Мне кажется, что функция strftime умеет чуть больше
 
Что же умеет ваша библиотека? Опишите как вы себе это видите.е кажется, что функция strftime умеет чуть больше
Очень просто:
1. Подключаете к проекту и всегда имеете точно время.
2. Не нужно мучиться с синхронизацией, т.к. она происходит автоматически в фоновом режиме.
3. Не нужны никакие дополнительные функции для форматного вывода времени.

Вот полный пример:
Код:
#include <ESP8266WiFi.h>
#include <TimeLib.h>

TimeLib tt;

void InitWiFi()
{
    const char * WiFi_Name = "********";
    const char * WiFi_Pass = "********";
    WiFi.begin( WiFi_Name, WiFi_Pass );
    while(WiFi.waitForConnectResult() != WL_CONNECTED) WiFi.begin( WiFi_Name, WiFi_Pass );
}

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

void loop()
{
    Serial.print( tt.tmDate() );
    Serial.print( " " );
    Serial.println( tt.tmTime() );

    delay(2000);
}
 

valerivp

Member
2. Т.е. библиотека скрывает возможности SDK ESP для работы с NTP, устанавливая сервера, которые нравится именно вам.
3. Позволяет вывести дату и время в формате, который нравится именно вам.

Все верно?
 

nikolz

Well-known member
Для дуриншиков в самый раз, так как там в основном низкий уровень знаний и высокий уровень жажды халявы.
 
2. Т.е. библиотека скрывает возможности SDK ESP для работы с NTP, устанавливая сервера, которые нравится именно вам.
3. Позволяет вывести дату и время в формате, который нравится именно вам.

Все верно?
Да, Вы правы.

В свое оправдание могу сказать, что код моего "поделия" очень простой, всегда можно подправить что-то под себя.
 
Для дуриншиков в самый раз, так как там в основном низкий уровень знаний и высокий уровень жажды халявы.
Я не знаю, чем вызвал Ваш такой резкий комментарий.

Я, что касается микроконтроллеров, обычно программирую в Atmel Studio,
потому, что разрабатываю некие приборы.

В данном случае нужно было очень быстро сделать часы.
Самым удачным вариантом показалось сделать это на ESP8266,
т.к. кроме, собственно, платы Wemos ничего не нужно, да и была у меня одна.

С ESP8266 раньше не работал, поэтому для быстрого старта Arduino - это самое оно.

Посмотрел много готовых проектов, и увидел, что везде работа со временем
происходит очень странно, в одном проекте даже разбирался заголовок ответа
сервера google.com:
HTTP/1.1 200 OKb
Date: Thu, 31 May 2018 17:47:41 GMT
Expires: -1
Cache-Control: private, max-age=0 и т.д.

Поэтому решил свою проблему и облегчил, я надеюсь, жизнь другим.
 

nikolz

Well-known member
Я не знаю, чем вызвал Ваш такой резкий комментарий.

Я, что касается микроконтроллеров, обычно программирую в Atmel Studio,
потому, что разрабатываю некие приборы.

В данном случае нужно было очень быстро сделать часы.
Самым удачным вариантом показалось сделать это на ESP8266,
т.к. кроме, собственно, платы Wemos ничего не нужно, да и была у меня одна.

С ESP8266 раньше не работал, поэтому для быстрого старта Arduino - это самое оно.

Посмотрел много готовых проектов, и увидел, что везде работа со временем
происходит очень странно, в одном проекте даже разбирался заголовок ответа
сервера google.com:
HTTP/1.1 200 OKb
Date: Thu, 31 May 2018 17:47:41 GMT
Expires: -1
Cache-Control: private, max-age=0 и т.д.

Поэтому решил свою проблему и облегчил, я надеюсь, жизнь другим.
Я лишь похвалил вас, так как это для тех кто не умеет писать на СИ. Таких на форуме большинство.
 

valerivp

Member

Вложения

nikolz, nikolz,

Легче написать свое, чем править то что вы сделали.
Мое видение этого функционала я вложил
Извините, конечно, коллега, при всем уважении к Вам, речь не идет о том,
чтобы Вы что-то правили.
У Вас есть своя библиотека, со своим функционалом.

Моя библиотека возвращает не только время Unix, т.е. число секунд,
но еще и структуру:
Код:
struct tm
{
  int    tm_sec;
  int    tm_min;
  int    tm_hour;
  int    tm_mday;
  int    tm_mon;
  int    tm_year;
  int    tm_wday;
  int    tm_yday;
  int    tm_isdst;
};
а также представление времени в человеко-читаемом виде.
В моем проекте часов анализируется поля tm_min, tm_hour и tm_mon для установки яркости часов
в зависимости от времени суток и месяца года.
Также в моей библиотеке отсутствует привязка к таймерам и файловой системе.

Повторяю еще раз: - моя библиотека для чайников, таких как я сам.
Библиотека доступна на github, снабжена примером, все, что нужно начинающему.
 
Я лишь похвалил вас, так как это для тех кто не умеет писать на СИ. Таких на форуме большинство.
Спасибо за похвалу!

Я сам это знаю.
Ищешь нужный материал в интернете и натыкаешься на такую чепуху,
которую несут чайники с умным видом, что становится прямо стыдно за них.

Но, нужно отдать должное, что-то разработать гораздо проще,
чем потом об этом подробно написать, задокументировать, отвечать на вопросы.
Особенно сделать грамотное видео.

Мое отношение простое: все когда-то были чайниками, поэтому нужно быть
снисходительнее к другим.
 

nikolz

Well-known member
Спасибо за похвалу!

Я сам это знаю.
Ищешь нужный материал в интернете и натыкаешься на такую чепуху,
которую несут чайники с умным видом, что становится прямо стыдно за них.

Но, нужно отдать должное, что-то разработать гораздо проще,
чем потом об этом подробно написать, задокументировать, отвечать на вопросы.
Особенно сделать грамотное видео.

Мое отношение простое: все когда-то были чайниками, поэтому нужно быть
снисходительнее к другим.
чайник - это не халявщик.
 

Сергей_Ф

Moderator
Команда форума
@valerivp не тяжеловато для просто времени? Уж очень много вы туда запихали. Делали явно для себя, под проект.
 

valerivp

Member
@valerivp не тяжеловато для просто времени? Уж очень много вы туда запихали. Делали явно для себя, под проект.
Вроде нормально. В зависимости от настроек проекта используются или RTC или NTP, практически прозрачно для остальных блоков.
Просто библиотека которая отдает текущее время.
 
Сверху Снизу