Добавляем поддержку IoTRTC в основной цикл

This commit is contained in:
2022-04-24 11:59:52 +03:00
parent f563a773e1
commit 0d596da39f

View File

@@ -1,7 +1,16 @@
#include "Main.h"
#include "classes/IoTRTC.h"
#include <time.h>
IoTScenario iotScen; // объект управления сценарием
IoTRTC *watch; // объект хранения времени, при старте часы 00:00
time_t iotTimeNow;
String volStrForSave = "";
unsigned long currentMillis;
unsigned long prevMillis;
void setup() {
Serial.begin(115200);
Serial.flush();
@@ -23,6 +32,28 @@ void setup() {
//подключаемся к роутеру
routerConnect();
// настраиваем получение времени из сети Интернет
String ntpServer = jsonReadStr(settingsFlashJson, F("ntp"));
int timezone = jsonReadInt(settingsFlashJson, F("timezone"));
configTime(3600*timezone, 0, ntpServer.c_str(), "ru.pool.ntp.org", "pool.ntp.org");
Serial.print("Syncing NTP time");
int i = 0;
while (isNetworkActive() && iotTimeNow < 1510592825 && i < 200)
{
time(&iotTimeNow);
delay(300);
Serial.print(".");
i++;
}
Serial.println();
// настраиваем локальный RTC
watch = new IoTRTC(0); // создаем объект главного хранилища времени, но с заглушкой (0) для получения системного времени
watch->period(60); // время в минутах для синхронизации с часами реального времени или системным
watch->begin();
Serial.print(F("Time from Local: "));
Serial.println(watch->gettime("d-m-Y, H:i:s, M"));
//инициализация асинхронного веб сервера и веб сокетов
#ifdef ASYNC_WEB_SERVER
asyncWebServerInit();
@@ -83,6 +114,13 @@ void setup() {
}
void loop() {
// if(millis()%2000==0){
// //watch->settimeUnix(time(&iotTimeNow));
// Serial.println(watch->gettime("d-m-Y, H:i:s, M"));
// delay(1);
// }
//обновление задач таскера
ts.update();
@@ -118,5 +156,24 @@ void loop() {
handleEvent();
// iotScen.ExecScenario();
// сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение)
currentMillis = millis();
if (currentMillis - prevMillis >= 1000) {
prevMillis = millis();
volStrForSave = "";
for (std::list<IoTItem*>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->needSave) {
(*it)->needSave = false;
volStrForSave = volStrForSave + (*it)->getID() + "=" + (*it)->getValue() + ";";
}
}
if (volStrForSave != "") {
Serial.print("volStrForSave: ");
Serial.println(volStrForSave.c_str());
}
}
}