добавил получение времени NTP

This commit is contained in:
Dmitry Borisenko
2022-08-18 14:49:11 +02:00
parent ff5b9e8a9b
commit b458758a54
9 changed files with 160 additions and 167 deletions

View File

@@ -35,6 +35,9 @@
#define USE_LITTLEFS false
#endif
#define MIN_DATETIME 1575158400
#define LEAP_YEAR(Y) (((1970 + Y) > 0) && !((1970 + Y) % 4) && (((1970 + Y) % 100) || !((1970 + Y) % 400)))
//задачи таскера
enum TimerTask_t { WIFI_SCAN,
WIFI_MQTT_CONNECTION_CHECK,

View File

@@ -115,6 +115,23 @@ extern String prex;
extern String all_widgets;
extern String scenario;
// Time
struct Time_t {
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t day_of_week;
uint8_t day_of_month;
uint8_t month;
uint16_t day_of_year;
uint16_t year;
unsigned long days;
unsigned long valid;
};
extern Time_t _time_local;
extern Time_t _time_utc;
// extern DynamicJsonDocument settingsFlashJsonDoc;
// extern DynamicJsonDocument paramsFlashJsonDoc;
// extern DynamicJsonDocument paramsHeapJsonDoc;

View File

@@ -13,3 +13,4 @@
#include "PeriodicTasks.h"
#include "classes/IoTScenario.h"
#include "EventsAndOrders.h"
#include "NTP.h"

13
include/NTP.h Normal file
View File

@@ -0,0 +1,13 @@
#pragma once
#include "Arduino.h"
#include "Global.h"
static const uint8_t days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
extern void breakEpochToTime(unsigned long epoch, Time_t& tm);
extern void ntpInit();
extern time_t getSystemTime();
extern void synchTime();
extern const String getTimeLocal_hhmm();
extern const String getTimeLocal_hhmmss();
extern const String getDateTimeDotFormated();

View File

@@ -1,65 +1,5 @@
#pragma once
#include <Arduino.h>
#include "Global.h"
#define ONE_MINUTE_s 60
#define ONE_HOUR_m 60
#define ONE_HOUR_s 60 * ONE_MINUTE_s
#define LEAP_YEAR(Y) (((1970 + Y) > 0) && !((1970 + Y) % 4) && (((1970 + Y) % 100) || !((1970 + Y) % 400)))
#define MIN_DATETIME 1575158400
#define ONE_SECOND_ms 1000
/*
* Время (мс) прошедщее с @since
*/
unsigned long millis_since(unsigned long sinse);
/*
* Интерввал времени (мс) между @start и @finish
*/
unsigned long millis_passed(unsigned long start, unsigned long finish);
/*
* Форматиронное время интервала (мс)
* "чч:мм:cc",
* "дд чч:мм", если > 24 часов
*/
const String prettyMillis(unsigned long time_ms = millis());
/*
* Форматиронное время интервала (c)
* "чч:мм:cc",
* "дд чч:мм", если > 24 часов
*/
const String prettySeconds(unsigned long time_s);
/*
* Тайм зона в секундах
*/
int getOffsetInSeconds(int timezone);
/*
* Тайм зона в минутах
*/
int getOffsetInMinutes(int timezone);
/*
* Разбивает время на составляющие
*/
struct Time_t {
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t day_of_week;
uint8_t day_of_month;
uint8_t month;
uint16_t day_of_year;
uint16_t year;
unsigned long days;
unsigned long valid;
};
void breakEpochToTime(unsigned long epoch, Time_t& tm);
// void timeInit();
extern const String prettySeconds(unsigned long time_s);
extern const String prettyMillis(unsigned long time_ms);