Merge pull request #145 from biveraxe/ver4dev

Добавляем функцию получения JSON всех значений Items
This commit is contained in:
Dmitry Borisenko
2022-02-26 22:33:24 +01:00
committed by GitHub
3 changed files with 33 additions and 10 deletions

View File

@@ -20,6 +20,7 @@ class IoTItem {
String getSubtype(); String getSubtype();
String getID(); String getID();
String getValue();
unsigned long currentMillis; unsigned long currentMillis;
unsigned long prevMillis; unsigned long prevMillis;
@@ -48,6 +49,7 @@ class IoTItem {
}; };
IoTItem* findIoTItem(String name); // поиск экземпляра элемента модуля по имени IoTItem* findIoTItem(String name); // поиск экземпляра элемента модуля по имени
StaticJsonDocument<JSON_BUFFER_SIZE>* getLocalItemsAsJSON(); // сбор всех локальных занчений Items
class externalVariable: IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время class externalVariable: IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время

View File

@@ -67,6 +67,10 @@ void setup() {
IoTItems.push_back((IoTItem*) new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}")); 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++) { // for (int i = 109; i < 112; i++) {
// IoTgpio.pinMode(i, OUTPUT); // IoTgpio.pinMode(i, OUTPUT);

View File

@@ -42,6 +42,11 @@ String IoTItem::getID() {
return _id; return _id;
}; };
String IoTItem::getValue() {
if (value.isDecimal) return (String)value.valD;
else return value.valS;
}
void IoTItem::loop() { void IoTItem::loop() {
currentMillis = millis(); currentMillis = millis();
difference = currentMillis - prevMillis; difference = currentMillis - prevMillis;
@@ -86,16 +91,6 @@ void IoTItem::doByInterval() {}
IoTValue IoTItem::execute(String command, std::vector<IoTValue>& param) { return {}; } IoTValue IoTItem::execute(String command, std::vector<IoTValue>& param) { return {}; }
IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->getID() == name) return *it;
}
return nullptr;
}
IoTItem* myIoTItem;
IoTGpio* IoTItem::getGpioDriver() { IoTGpio* IoTItem::getGpioDriver() {
return nullptr; return nullptr;
} }
@@ -119,4 +114,26 @@ externalVariable::~externalVariable() {
void externalVariable::doByInterval() { // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения void externalVariable::doByInterval() { // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения
iAmDead = true; iAmDead = true;
}
IoTItem* myIoTItem;
IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->getID() == name) return *it;
}
return nullptr;
}
StaticJsonDocument<JSON_BUFFER_SIZE> docForExport;
StaticJsonDocument<JSON_BUFFER_SIZE>* getLocalItemsAsJSON () {
docForExport.clear();
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
if ((*it)->iAmLocal) docForExport[(*it)->getID()] = (*it)->getValue();
}
return &docForExport;
} }