mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 06:32:19 +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,
|
||||
UPTIME,
|
||||
UDP, // UDPP
|
||||
TIMES,
|
||||
TIMES, // периодические секундные проверки
|
||||
PTASK,
|
||||
ST,
|
||||
END };
|
||||
END};
|
||||
|
||||
//задачи которые надо протащить через loop
|
||||
enum NotAsyncActions {
|
||||
|
||||
29
src/Main.cpp
29
src/Main.cpp
@@ -94,6 +94,22 @@ void setup() {
|
||||
|
||||
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
|
||||
Serial.println("-------test start--------");
|
||||
Serial.println("--------test end---------");
|
||||
@@ -149,19 +165,6 @@ void loop() {
|
||||
loopPeriod = millis() - st;
|
||||
if (loopPeriod > 2) Serial.println(loopPeriod);
|
||||
#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
|
||||
|
||||
@@ -167,11 +167,11 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
|
||||
String devId = selectFromMarkerToMarker(topicStr, "/", 2);
|
||||
String id = selectFromMarkerToMarker(topicStr, "/", 3);
|
||||
String valAsStr;
|
||||
jsonRead(payloadStr, F("val"), valAsStr, false);
|
||||
if (!jsonRead(payloadStr, F("val"), valAsStr, false)) valAsStr = payloadStr;
|
||||
|
||||
IoTItem* itemExist = findIoTItem(id);
|
||||
if (itemExist) {
|
||||
unsigned long interval;
|
||||
unsigned long interval = 0;
|
||||
jsonRead(payloadStr, F("int"), interval);
|
||||
itemExist->setInterval(interval); // устанавливаем такой же интервал как на источнике события
|
||||
itemExist->setValue(valAsStr, false); // только регистрируем изменения в интерфейсе без создания цикла сетевых событий
|
||||
|
||||
Reference in New Issue
Block a user