Пересматриваем модель формирования сетевых событий и их

контроль.
This commit is contained in:
2022-11-01 12:33:39 +03:00
parent 4cf666402c
commit fcf83c3f0d
9 changed files with 72 additions and 44 deletions

View File

@@ -169,22 +169,26 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) {
String valAsStr;
if (!jsonRead(payloadStr, F("val"), valAsStr, false)) valAsStr = payloadStr;
unsigned long interval = 0;
jsonRead(payloadStr, F("int"), interval);
IoTItem* itemExist = findIoTItem(id);
if (itemExist) {
unsigned long interval = 0;
jsonRead(payloadStr, F("int"), interval);
itemExist->setInterval(interval); // устанавливаем такой же интервал как на источнике события
itemExist->setValue(valAsStr, false); // только регистрируем изменения в интерфейсе без создания цикла сетевых событий
if (interval) itemExist->setIntFromNet(interval+5); // если пришедший интервал =0, значит не нужно контролировать доверие, иначе даем фору в 5 сек
// запустим проверку его в сценариях
generateEvent(id, valAsStr);
SerialPrint("i", F("=>MQTT"), "Received event from other device: '" + devId + "' " + id + " " + valAsStr);
} else {
// зафиксируем данные в базе, если локально элемент отсутствует
//itemExist = (IoTItem*)new externalVariable(payloadStr);
//IoTItems.push_back(itemExist);
itemExist = new IoTItem(payloadStr);
itemExist->setIntFromNet(interval+5); // устанавливаем время жизни 3 сек
itemExist->iAmLocal = false;
IoTItems.push_back(itemExist);
}
// запустим проверку его в сценариях
generateEvent(id, valAsStr);
SerialPrint("i", F("=>MQTT"), "Received event from other device: '" + devId + "' " + id + " " + valAsStr);
}
}