From 5d0d3274c5eda907954a392e2306be7d14944543 Mon Sep 17 00:00:00 2001 From: biver Date: Sat, 26 Feb 2022 22:42:57 +0300 Subject: [PATCH] =?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=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=83=D1=87=D0=B5=D0=BD=D0=B8=D1=8F=20JSON?= =?UTF-8?q?=20=D0=B2=D1=81=D0=B5=D1=85=20=D0=B7=D0=BD=D0=B0=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9=20Items?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/classes/IoTItem.h | 2 ++ src/Main.cpp | 4 ++++ src/classes/IoTItem.cpp | 37 +++++++++++++++++++++++++++---------- 3 files changed, 33 insertions(+), 10 deletions(-) diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index 337a9911..9ba3d501 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -20,6 +20,7 @@ class IoTItem { String getSubtype(); String getID(); + String getValue(); unsigned long currentMillis; unsigned long prevMillis; @@ -48,6 +49,7 @@ class IoTItem { }; IoTItem* findIoTItem(String name); // поиск экземпляра элемента модуля по имени +StaticJsonDocument* getLocalItemsAsJSON(); // сбор всех локальных занчений Items class externalVariable: IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время diff --git a/src/Main.cpp b/src/Main.cpp index f1ed3ea1..af7f5283 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -67,6 +67,10 @@ void setup() { IoTItems.push_back((IoTItem*) new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}")); + // пример получения JSON всех Items + serializeJson(*getLocalItemsAsJSON(), Serial); + Serial.println(""); + //тест перебора пинов из расширения // for (int i = 109; i < 112; i++) { // IoTgpio.pinMode(i, OUTPUT); diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index ab2de760..30f568d3 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -42,6 +42,11 @@ String IoTItem::getID() { return _id; }; +String IoTItem::getValue() { + if (value.isDecimal) return (String)value.valD; + else return value.valS; +} + void IoTItem::loop() { currentMillis = millis(); difference = currentMillis - prevMillis; @@ -86,16 +91,6 @@ void IoTItem::doByInterval() {} IoTValue IoTItem::execute(String command, std::vector& param) { return {}; } -IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации - for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { - if ((*it)->getID() == name) return *it; - } - - return nullptr; -} - -IoTItem* myIoTItem; - IoTGpio* IoTItem::getGpioDriver() { return nullptr; } @@ -119,4 +114,26 @@ externalVariable::~externalVariable() { void externalVariable::doByInterval() { // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения iAmDead = true; +} + + +IoTItem* myIoTItem; + +IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации + for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { + if ((*it)->getID() == name) return *it; + } + + return nullptr; +} + +StaticJsonDocument docForExport; + +StaticJsonDocument* getLocalItemsAsJSON () { + docForExport.clear(); + for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { + if ((*it)->iAmLocal) docForExport[(*it)->getID()] = (*it)->getValue(); + } + + return &docForExport; } \ No newline at end of file