diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index 342bc02f..794dae73 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -24,6 +24,7 @@ class IoTItem { String getSubtype(); String getID(); + bool isStrInID(const String& str); int getIntFromNet(); virtual String getValue(); long getInterval(); @@ -91,6 +92,7 @@ class IoTItem { }; IoTItem* findIoTItem(const String& name); // поиск экземпляра элемента модуля по имени +IoTItem* findIoTItemByPartOfName(const String& partName); // поиск элемента модуля в существующей конфигурации по части имени String getItemValue(const String& name); // поиск плюс получение значения bool isItemExist(const String& name); // существует ли айтем //StaticJsonDocument* getLocalItemsAsJSON(); // сбор всех локальных значений Items diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 26fb41d1..3a5c9a7d 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -200,6 +200,10 @@ String IoTItem::getID() { return _id; }; +bool IoTItem::isStrInID(const String& str) { + return _id.indexOf(str) != -1; +} + void IoTItem::setInterval(long interval) { _interval = interval; } @@ -245,6 +249,17 @@ IoTItem* findIoTItem(const String& name) { return nullptr; } + +// поиск элемента модуля в существующей конфигурации по части имени +IoTItem* findIoTItemByPartOfName(const String& partName) { + if (partName == "") return nullptr; + for (std::list::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) { + if ((*it)->isStrInID(partName)) return *it; + } + + return nullptr; +} + // поиск плюс получение значения String getItemValue(const String& name) { IoTItem* tmp = findIoTItem(name);