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

View File

@@ -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);

View File

@@ -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<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() {
return nullptr;
}
@@ -119,4 +114,26 @@ externalVariable::~externalVariable() {
void externalVariable::doByInterval() { // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения
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;
}