mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-27 14:42:18 +03:00
Merge branch 'ver4dev' into v4dev
This commit is contained in:
@@ -7,16 +7,16 @@
|
||||
#include "Global.h"
|
||||
#include "classes/IoTItem.h"
|
||||
|
||||
//!Здесь подключаем стороннюю библиотеку при необходимости (ExternalLibrary заменить)
|
||||
//#include <ExternalLibrary.h>
|
||||
#include "ExternalLibrary.h" //удалить, только для примера. Внешние библиотеки правильно в <>
|
||||
//! Здесь подключаем стороннюю библиотеку при необходимости (ExternalLibrary заменить)
|
||||
// #include <ExternalLibrary.h>
|
||||
#include "ExternalLibrary.h" //удалить, только для примера. Внешние библиотеки правильно в <>
|
||||
|
||||
//! Объяевляем класс IoTGpio для работы с GPIO
|
||||
//! Объяевляем класс IoTGpio для работы с GPIO
|
||||
extern IoTGpio IoTgpio;
|
||||
|
||||
//=========================================================================================================
|
||||
//=========================================================================================================
|
||||
// Объявление сторонней библиотекит с использованием глобавльных объектов
|
||||
// Объявление сторонней библиотекит с использованием глобавльных объектов
|
||||
//=======================================================================================================
|
||||
//! Объявляем стороннюю библиотеку при необходимости (ExternalLibrary заменить)
|
||||
// !!! ЗДЕСЬ И ДАЛЕЕ libXX НАЗВАТЬ уникальным именем)
|
||||
@@ -25,9 +25,15 @@ ExternalLibrary *libXX = nullptr;
|
||||
// Функция инициализации библиотечного класса, возвращает Единстрвенный указать на библиотеку
|
||||
// instanceLibXX НАЗВАТЬ по наименованию модуля (instanceДатчикХ)
|
||||
// ПРИ НЕОБХДИМОСТИ передаем любые нужные параметры для инициализации библиотеки (в данном случае PIN)
|
||||
// !!! ВЫзвать данную функцию нужно хотябы один раз,
|
||||
//
|
||||
// !!! ВЫзвать данную функцию нужно хотябы один раз,
|
||||
// но в каждом конструкторе класса модуля ExampleModule_A, ExampleModule_B и т.д.
|
||||
// или можно вывывать постоянно при обращении к библиотеке, типа: instanceLibXX().READ_LIB_DATA_OTHER();
|
||||
//
|
||||
// !!!!!! В деструкторах ~ExampleModule_B() и ~ExampleModule_A() надо УДАЛЯТЬ объект libXX, ЕСЛИ в функцию instanceLibXX чтото передается.
|
||||
// Удаляем класс библиотеки, а то при переконфигурации в нем не поменяются PIN и дугие параметры передаваемые в библиотеку.
|
||||
// P.S. Не для всех, если используется map или vector то лучше не надо.
|
||||
|
||||
ExternalLibrary *instanceLibXX(int pin)
|
||||
{
|
||||
if (!libXX)
|
||||
@@ -39,7 +45,6 @@ ExternalLibrary *instanceLibXX(int pin)
|
||||
return libXX;
|
||||
}
|
||||
|
||||
|
||||
//=========================================================================================================
|
||||
//=========================================================================================================
|
||||
// Первый класс модуля для определения 1-го элемента (параметра)
|
||||
@@ -69,7 +74,7 @@ public:
|
||||
// jsonReadStr, jsonReadBool, jsonReadInt
|
||||
ExampleModule_A(String parameters) : IoTItem(parameters)
|
||||
{
|
||||
//Читаем пользовательскую переменную PIN, должна быть объявлена в в modeinfo.json
|
||||
// Читаем пользовательскую переменную PIN, должна быть объявлена в в modeinfo.json
|
||||
_pin = jsonReadInt(parameters, "pin");
|
||||
// другой вариант чтения парметров модуля
|
||||
jsonRead(parameters, F("int"), _interval, false);
|
||||
@@ -105,7 +110,12 @@ public:
|
||||
IoTItem::loop();
|
||||
}
|
||||
|
||||
~ExampleModule_A(){};
|
||||
~ExampleModule_A()
|
||||
{
|
||||
// Удаляем класс библиотеки, а то при переконфигурации в нем не поменяются PIN и дугие параметры передаваемые в библиотеку.
|
||||
delete libXX;
|
||||
libXX = nullptr;
|
||||
};
|
||||
};
|
||||
|
||||
//=========================================================================================================
|
||||
@@ -120,14 +130,15 @@ public:
|
||||
class ExampleModule_B : public IoTItem
|
||||
{
|
||||
private:
|
||||
//Пользовательские переменные
|
||||
// Пользовательские переменные
|
||||
unsigned int _pin;
|
||||
|
||||
public:
|
||||
ExampleModule_B(String parameters) : IoTItem(parameters)
|
||||
{
|
||||
//Читаем пользовательскую переменную PIN, должна быть объявлена в в modeinfo.json
|
||||
// Читаем пользовательскую переменную PIN, должна быть объявлена в в modeinfo.json
|
||||
_pin = jsonReadInt(parameters, "pin");
|
||||
//Можно инициализировать библиотеку один раз, а потом используем указатель
|
||||
// Можно инициализировать библиотеку один раз, а потом используем указатель
|
||||
instanceLibXX(_pin);
|
||||
libXX->READ_LIB_DATA_OTHER();
|
||||
}
|
||||
@@ -140,7 +151,7 @@ public:
|
||||
regEvent(value.valD, "ExampleModule"); // обязательный вызов хотяб один для регистрации события в ядре IoTM
|
||||
}
|
||||
|
||||
//================ обработка кнопок из конфигурации ===================
|
||||
//================ обработка кнопок из конфигурации ===================
|
||||
// Хук (переопределение виртуальной функции) для обработки кнопки (в value будут данные с собственной панели ввода)
|
||||
// Что бы кнопка была без поля ввода, нужно в modeinfo.json указать "btn-Example": nil
|
||||
void onModuleOrder(String &key, String &value)
|
||||
@@ -152,7 +163,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
//================ обработка команд из сценария===================
|
||||
//================ обработка команд из сценария===================
|
||||
// Хук (переопределение виртуальной функции) для обработки команды из сценария (в param будут даныые переданные в функции в сценарии)
|
||||
IoTValue execute(String command, std::vector<IoTValue> ¶m)
|
||||
{
|
||||
@@ -198,10 +209,14 @@ public:
|
||||
// Прсото пример кокой-то функции
|
||||
}
|
||||
|
||||
~ExampleModule_B(){};
|
||||
~ExampleModule_B()
|
||||
{
|
||||
// Удаляем класс библиотеки, а то при переконфигурации в нем не поменяются PIN и дугие параметры передаваемые в библиотеку.
|
||||
delete libXX;
|
||||
libXX = nullptr;
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
//=========================================================================================================
|
||||
//=========================================================================================================
|
||||
// Функция для связи модуля с ядром IoTM
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"menuSection": "Сенсоры",
|
||||
"menuSection": "sensors",
|
||||
"configItem": [
|
||||
{
|
||||
"global": 0,
|
||||
@@ -24,9 +24,9 @@
|
||||
"page": "Сенсоры",
|
||||
"descr": "Давление",
|
||||
"int": 15,
|
||||
"pin": "32",
|
||||
"pin": "32",
|
||||
"round": 1,
|
||||
"btn-Example": 100
|
||||
"btn-Example": 100
|
||||
}
|
||||
],
|
||||
"about": {
|
||||
@@ -46,31 +46,37 @@
|
||||
"propInfo": {
|
||||
"pin": "Аналоговый GPIO номер, к которому подключен датчик.",
|
||||
"int": "Количество секунд между опросами датчика",
|
||||
"btn-Example": "Кнопка Example. В поле указать ......"
|
||||
"btn-Example": "Кнопка Example. В поле указать ......"
|
||||
},
|
||||
"funcInfo": [
|
||||
{
|
||||
"name": "expampleFunc",
|
||||
"descr": "Пример функции вызываемой из сценария. Принимает Id другого модуля и смотрит его значение",
|
||||
"params": ["ID стороннего модуля"]
|
||||
"params": [
|
||||
"ID стороннего модуля"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "expample2",
|
||||
"descr": "Второй Пример функции вызываемой из сценария.",
|
||||
"params": ["Описание педедаваемого параметра",
|
||||
"параметр 2"]
|
||||
"params": [
|
||||
"Описание педедаваемого параметра",
|
||||
"параметр 2"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "expampleAny",
|
||||
"descr": "Третий Пример функции вызываемой из сценария. С неограниченным числом параметров",
|
||||
"params": ["Описание педедаваемых параметров"]
|
||||
"params": [
|
||||
"Описание педедаваемых параметров"
|
||||
]
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"defActive": false,
|
||||
"usedLibs": {
|
||||
"esp32_4mb": [],
|
||||
"esp32s2_4mb": [],
|
||||
"esp32s2_4mb": [],
|
||||
"esp8266_4mb": [],
|
||||
"esp8266_1mb": [],
|
||||
"esp8266_1mb_ota": [],
|
||||
|
||||
Reference in New Issue
Block a user