Добавляем externalVariable для приема и фиксации на время значения события для использования в сценариях

This commit is contained in:
2022-02-25 13:20:03 +03:00
parent 9639b3eb88
commit fc7eb8acc9
2 changed files with 32 additions and 0 deletions

View File

@@ -27,6 +27,8 @@ class IoTItem {
unsigned long difference;
IoTValue value; // хранение основного значения, котрое обновляется из сценария, execute(), loop() или doByInterval()
bool iAmDead = false; // признак необходимости удалить объект из базы
virtual IoTGpio* getGpioDriver();
virtual void setValue(IoTValue Value);
@@ -46,3 +48,13 @@ class IoTItem {
};
IoTItem* findIoTItem(String name); // поиск экземпляра элемента модуля по имени
class externalVariable: IoTItem { // объект, создаваемый при получении информации о событии на другом контроллере для хранения информации о событии указанное время
public:
externalVariable(String parameters);
~externalVariable();
void doByInterval(); // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения
};

View File

@@ -15,6 +15,13 @@ IoTItem::IoTItem(String parameters) {
jsonRead(parameters, F("plus"), _plus, false);
jsonRead(parameters, F("round"), _round, false);
String valAsStr;
if (jsonRead(parameters, F("val"), valAsStr, false)) // значение переменной или датчика при инициализации если есть в конфигурации
if (value.isDecimal = isDigitDotCommaStr(valAsStr))
value.valD = valAsStr.toFloat();
else
value.valS = valAsStr;
String map;
jsonRead(parameters, F("map"), map, false);
if (map != "") {
@@ -96,4 +103,17 @@ void IoTItem::setValue(IoTValue Value) {
value = Value;
if (value.isDecimal) regEvent(value.valD, "");
else regEvent(value.valS, "");
}
externalVariable::externalVariable(String parameters) : IoTItem(parameters) {
Serial.printf("Call from externalVariable: parameters %s\n", parameters.c_str());
}
externalVariable::~externalVariable() {
Serial.printf("Call from ~externalVariable: Im dead\n");
}
void externalVariable::doByInterval() { // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения
iAmDead = true;
}