mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
Добавляем системные вызовы setInterval и doByInterval
Для возможности изменения интервала выполнения doByInterval и вызова его вне плана
This commit is contained in:
@@ -291,10 +291,8 @@ class CallExprAST : public ExprAST {
|
|||||||
ret.valD = Item->getIntFromNet();
|
ret.valD = Item->getIntFromNet();
|
||||||
ret.isDecimal = true;
|
ret.isDecimal = true;
|
||||||
return &ret;
|
return &ret;
|
||||||
}
|
|
||||||
|
} else if (Cmd == F("doByInterval")) { // вызываем системную функцию периодического выполнения вне таймера
|
||||||
// вызываем системную функцию периодического выполнения вне таймера
|
|
||||||
if (Cmd == F("doByInterval")) {
|
|
||||||
Item->doByInterval();
|
Item->doByInterval();
|
||||||
ret = Item->value;
|
ret = Item->value;
|
||||||
return &ret;
|
return &ret;
|
||||||
@@ -311,6 +309,15 @@ class CallExprAST : public ExprAST {
|
|||||||
return nullptr; // ArgsAsIoTValue.push_back(zeroIotVal);
|
return nullptr; // ArgsAsIoTValue.push_back(zeroIotVal);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Cmd == F("setInterval")) { // меняем интервал выполнения задач модуля налету
|
||||||
|
if (ArgsAsIoTValue.size() == 1) {
|
||||||
|
Item->setInterval(ArgsAsIoTValue[0].valD);
|
||||||
|
ret.valD = Item->getInterval();
|
||||||
|
ret.isDecimal = true;
|
||||||
|
return &ret;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ret = Item->execute(Cmd, ArgsAsIoTValue); // вызываем команду из модуля напрямую с передачей всех аргументов
|
ret = Item->execute(Cmd, ArgsAsIoTValue); // вызываем команду из модуля напрямую с передачей всех аргументов
|
||||||
|
|
||||||
// if (ret.isDecimal) Serial.printf("Call from CallExprAST ID = %s, Command = %s, exec result = %f\n", Callee.c_str(), Cmd.c_str(), ret.valD);
|
// if (ret.isDecimal) Serial.printf("Call from CallExprAST ID = %s, Command = %s, exec result = %f\n", Callee.c_str(), Cmd.c_str(), ret.valD);
|
||||||
@@ -350,7 +357,8 @@ enum SysOp {
|
|||||||
sysop_mqttPub,
|
sysop_mqttPub,
|
||||||
sysop_getUptime,
|
sysop_getUptime,
|
||||||
sysop_mqttIsConnect,
|
sysop_mqttIsConnect,
|
||||||
sysop_wifiIsConnect
|
sysop_wifiIsConnect,
|
||||||
|
sysop_setInterval
|
||||||
};
|
};
|
||||||
|
|
||||||
IoTValue sysExecute(SysOp command, std::vector<IoTValue> ¶m) {
|
IoTValue sysExecute(SysOp command, std::vector<IoTValue> ¶m) {
|
||||||
@@ -456,7 +464,12 @@ IoTValue sysExecute(SysOp command, std::vector<IoTValue> ¶m) {
|
|||||||
break;
|
break;
|
||||||
case sysop_wifiIsConnect:
|
case sysop_wifiIsConnect:
|
||||||
value.valD = isNetworkActive();
|
value.valD = isNetworkActive();
|
||||||
break;
|
break;
|
||||||
|
case sysop_setInterval:
|
||||||
|
if (param.size() == 1) {
|
||||||
|
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return value;
|
return value;
|
||||||
@@ -515,6 +528,8 @@ class SysCallExprAST : public ExprAST {
|
|||||||
operation = sysop_mqttIsConnect;
|
operation = sysop_mqttIsConnect;
|
||||||
else if (Callee == F("wifiIsConnect"))
|
else if (Callee == F("wifiIsConnect"))
|
||||||
operation = sysop_wifiIsConnect;
|
operation = sysop_wifiIsConnect;
|
||||||
|
else if (Callee == F("setInterval"))
|
||||||
|
operation = sysop_setInterval;
|
||||||
else
|
else
|
||||||
operation = sysop_notfound;
|
operation = sysop_notfound;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -14,6 +14,12 @@
|
|||||||
"descr": "Получаем количество секунд доверия к значениям элемента. При -2 доверие полное, при -1 время доверия истекло. При >0 время обратного отсчета. Используется только совместно с ИД элемента: ID.getIntFromNet()",
|
"descr": "Получаем количество секунд доверия к значениям элемента. При -2 доверие полное, при -1 время доверия истекло. При >0 время обратного отсчета. Используется только совместно с ИД элемента: ID.getIntFromNet()",
|
||||||
"params": []
|
"params": []
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "setInterval",
|
||||||
|
"descr": "Меняем интервал выполнения периодиеских операций элемента в секундах. Используется только совместно с ИД элемента: ID.setInterval(5)",
|
||||||
|
"params": ["Секунды"],
|
||||||
|
"return": "установленный интервал"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "doByInterval",
|
"name": "doByInterval",
|
||||||
"descr": "Выполняем интервальное действие модуля вне плана. Используется только совместно с ИД элемента: ID.doByInterval()",
|
"descr": "Выполняем интервальное действие модуля вне плана. Используется только совместно с ИД элемента: ID.doByInterval()",
|
||||||
|
|||||||
Reference in New Issue
Block a user