mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-29 15:42:20 +03:00
Merge pull request #222 from biveraxe/ver4dev
Исправляем ошибку с выполнением периодичных секундных операций
This commit is contained in:
@@ -54,10 +54,10 @@ enum TimerTask_t { WIFI_SCAN,
|
|||||||
TIME_SYNC,
|
TIME_SYNC,
|
||||||
UPTIME,
|
UPTIME,
|
||||||
UDP, // UDPP
|
UDP, // UDPP
|
||||||
TIMES,
|
TIMES, // периодические секундные проверки
|
||||||
PTASK,
|
PTASK,
|
||||||
ST,
|
ST,
|
||||||
END };
|
END};
|
||||||
|
|
||||||
//задачи которые надо протащить через loop
|
//задачи которые надо протащить через loop
|
||||||
enum NotAsyncActions {
|
enum NotAsyncActions {
|
||||||
|
|||||||
29
src/Main.cpp
29
src/Main.cpp
@@ -94,6 +94,22 @@ void setup() {
|
|||||||
|
|
||||||
stInit();
|
stInit();
|
||||||
|
|
||||||
|
// настраиваем секундные обслуживания системы
|
||||||
|
ts.add(
|
||||||
|
TIMES, 1000, [&](void*) {
|
||||||
|
// сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение)
|
||||||
|
if (needSaveValues) {
|
||||||
|
syncValuesFlashJson();
|
||||||
|
needSaveValues = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// проверяем все элементы на тухлость
|
||||||
|
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||||
|
(*it)->checkIntFromNet();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
nullptr, true);
|
||||||
|
|
||||||
// test
|
// test
|
||||||
Serial.println("-------test start--------");
|
Serial.println("-------test start--------");
|
||||||
Serial.println("--------test end---------");
|
Serial.println("--------test end---------");
|
||||||
@@ -149,19 +165,6 @@ void loop() {
|
|||||||
loopPeriod = millis() - st;
|
loopPeriod = millis() - st;
|
||||||
if (loopPeriod > 2) Serial.println(loopPeriod);
|
if (loopPeriod > 2) Serial.println(loopPeriod);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (millis()%1000 == 0) {
|
|
||||||
// сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение)
|
|
||||||
if (needSaveValues) {
|
|
||||||
syncValuesFlashJson();
|
|
||||||
needSaveValues = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// проверяем все элементы на тухлость
|
|
||||||
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
|
||||||
(*it)->checkIntFromNet();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//отправка json
|
//отправка json
|
||||||
|
|||||||
@@ -167,11 +167,11 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
|
|||||||
String devId = selectFromMarkerToMarker(topicStr, "/", 2);
|
String devId = selectFromMarkerToMarker(topicStr, "/", 2);
|
||||||
String id = selectFromMarkerToMarker(topicStr, "/", 3);
|
String id = selectFromMarkerToMarker(topicStr, "/", 3);
|
||||||
String valAsStr;
|
String valAsStr;
|
||||||
jsonRead(payloadStr, F("val"), valAsStr, false);
|
if (!jsonRead(payloadStr, F("val"), valAsStr, false)) valAsStr = payloadStr;
|
||||||
|
|
||||||
IoTItem* itemExist = findIoTItem(id);
|
IoTItem* itemExist = findIoTItem(id);
|
||||||
if (itemExist) {
|
if (itemExist) {
|
||||||
unsigned long interval;
|
unsigned long interval = 0;
|
||||||
jsonRead(payloadStr, F("int"), interval);
|
jsonRead(payloadStr, F("int"), interval);
|
||||||
itemExist->setInterval(interval); // устанавливаем такой же интервал как на источнике события
|
itemExist->setInterval(interval); // устанавливаем такой же интервал как на источнике события
|
||||||
itemExist->setValue(valAsStr, false); // только регистрируем изменения в интерфейсе без создания цикла сетевых событий
|
itemExist->setValue(valAsStr, false); // только регистрируем изменения в интерфейсе без создания цикла сетевых событий
|
||||||
|
|||||||
Reference in New Issue
Block a user