From 898af539708e6335c7c7d421b6ca0f51d6be08f3 Mon Sep 17 00:00:00 2001 From: biver Date: Sun, 30 Oct 2022 20:20:57 +0300 Subject: [PATCH 1/2] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D1=8F=D0=B5=D0=BC=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20?= =?UTF-8?q?=D1=81=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=BF=D0=B5=D1=80=D0=B8=D0=BE=D0=B4=D0=B8=D1=87?= =?UTF-8?q?=D0=BD=D1=8B=D1=85=20=D1=81=D0=B5=D0=BA=D1=83=D0=BD=D0=B4=D0=BD?= =?UTF-8?q?=D1=8B=D1=85=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/Const.h | 4 ++-- src/Main.cpp | 29 ++++++++++++++++------------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/include/Const.h b/include/Const.h index a4e065b4..4581349c 100644 --- a/include/Const.h +++ b/include/Const.h @@ -54,10 +54,10 @@ enum TimerTask_t { WIFI_SCAN, TIME_SYNC, UPTIME, UDP, // UDPP - TIMES, + TIMES, // периодические секундные проверки PTASK, ST, - END }; + END}; //задачи которые надо протащить через loop enum NotAsyncActions { diff --git a/src/Main.cpp b/src/Main.cpp index 31cda3b5..fa14d76e 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -94,6 +94,22 @@ void setup() { stInit(); + // настраиваем секундные обслуживания системы + ts.add( + TIMES, 1000, [&](void*) { + // сохраняем значения IoTItems в файл каждую секунду, если были изменения (установлены маркеры на сохранение) + if (needSaveValues) { + syncValuesFlashJson(); + needSaveValues = false; + } + + // проверяем все элементы на тухлость + for (std::list::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::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { - (*it)->checkIntFromNet(); - } - } } //отправка json From 32f09cd8e434af3981458b573eaefaccbb02a07c Mon Sep 17 00:00:00 2001 From: biver Date: Sun, 30 Oct 2022 20:50:05 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D0=B5=D0=BC=20=D0=BF=D1=80=D0=B8=D0=B5=D0=BC=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D1=85=20=D1=81=20=D1=82=D1=80=D0=B5=D1=82?= =?UTF-8?q?=D0=B5=D0=B9=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/MqttClient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 3be1f3ef..d527151d 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -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); // только регистрируем изменения в интерфейсе без создания цикла сетевых событий