mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Merge pull request #138 from biveraxe/ver4dev
Связываем Сенсор - Сценарий - Реле
This commit is contained in:
@@ -317,7 +317,7 @@
|
|||||||
"type": "Writing",
|
"type": "Writing",
|
||||||
"subtype": "ButtonOut",
|
"subtype": "ButtonOut",
|
||||||
"id": "btn",
|
"id": "btn",
|
||||||
"widget": "button",
|
"widget": "toggle",
|
||||||
"page": "Кнопки",
|
"page": "Кнопки",
|
||||||
"descr": "",
|
"descr": "",
|
||||||
"int": 0,
|
"int": 0,
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
if x > 3 then 1 else x()/2 * x+2; #обратите внимание на приоритет операций
|
#if x > 3 then 1 else x()/2 * x+2; #обратите внимание на приоритет операций
|
||||||
#if 1 < 3 then 1 else 2-1*1+2;
|
#if 1 < 3 then 1 else 2-1*1+2;
|
||||||
#if 5 < 3 then 1+4 else 2*1*1+2;
|
#if 5 < 3 then 1+4 else 2*1*1+2;
|
||||||
#if btn1=1 then rel2 = 1 else rel2 = 0;
|
#if btn1=1 then rel2 = 1 else rel2 = 0;
|
||||||
@@ -8,6 +8,7 @@ if x > 3 then 1 else x()/2 * x+2; #обратите внимание на пр
|
|||||||
#if rel3.run() > 30 then rel2.run(3, 45.1, "wert") else 3*1*1+2
|
#if rel3.run() > 30 then rel2.run(3, 45.1, "wert") else 3*1*1+2
|
||||||
#if rel2 == 24 then "true" else "false"
|
#if rel2 == 24 then "true" else "false"
|
||||||
|
|
||||||
if rel2 != 1 then {rel2 = 12 + 12; rel2 = rel2 + 10;}
|
#if rel2 != 1 then {rel2 = 12 + 12; rel2 = rel2 + 10;}
|
||||||
if rel2 != 24 then tablo.run("ddd") else "2222222222222"
|
#if rel2 != 24 then tablo.run("ddd") else "2222222222222"
|
||||||
|
if t22 > 10 then btn.change()
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
#include "EventsAndOrders.h"
|
#include "EventsAndOrders.h"
|
||||||
|
#include "classes/IoTScenario.h"
|
||||||
|
|
||||||
|
extern IoTScenario iotScen; // объект управления сценарием
|
||||||
|
|
||||||
// orderBuf - буфер прямых команд, которые нужно выпонить сразу, нажали на кнопку в приложении, сработало условие сценария
|
// orderBuf - буфер прямых команд, которые нужно выпонить сразу, нажали на кнопку в приложении, сработало условие сценария
|
||||||
//необходимо тут же изменить параметр, записать новое значение
|
//необходимо тут же изменить параметр, записать новое значение
|
||||||
@@ -7,6 +10,8 @@
|
|||||||
//его главное отличие от orderBuf в том что события в нем не для выполнения, а для проверки в условиях сценариев
|
//его главное отличие от orderBuf в том что события в нем не для выполнения, а для проверки в условиях сценариев
|
||||||
//события в нем лишь вызывают другие команды, помещенные в блоке сценария, если условие совпало.
|
//события в нем лишь вызывают другие команды, помещенные в блоке сценария, если условие совпало.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//эта функция будет вызываться:
|
//эта функция будет вызываться:
|
||||||
// 1.на приеме сообщений в mqtt (см mqttCallback строку 142 в mqttClient.cpp)
|
// 1.на приеме сообщений в mqtt (см mqttCallback строку 142 в mqttClient.cpp)
|
||||||
// 2.на приеме сообщений в ws
|
// 2.на приеме сообщений в ws
|
||||||
@@ -21,7 +26,17 @@ void handleOrder() {
|
|||||||
if (orderBuf.length()) {
|
if (orderBuf.length()) {
|
||||||
String order = selectToMarker(orderBuf, ",");
|
String order = selectToMarker(orderBuf, ",");
|
||||||
Serial.println("order: " + order);
|
Serial.println("order: " + order);
|
||||||
|
|
||||||
//здесь нужно перебрать все методы execute всех векторов и выполнить те id которых совпали с id события
|
//здесь нужно перебрать все методы execute всех векторов и выполнить те id которых совпали с id события
|
||||||
|
IoTItem* item = findIoTItem(selectToMarker(order, " "));
|
||||||
|
if (item) {
|
||||||
|
String valStr = selectToMarkerLast(order, " ");
|
||||||
|
IoTValue value;
|
||||||
|
if (value.isDecimal = isDigitStr(valStr)) value.valD = valStr.toFloat();
|
||||||
|
else value.valS = valStr;
|
||||||
|
item->setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
orderBuf = deleteBeforeDelimiter(orderBuf, ",");
|
orderBuf = deleteBeforeDelimiter(orderBuf, ",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -38,10 +53,13 @@ void handleEvent() {
|
|||||||
if (eventBuf.length()) {
|
if (eventBuf.length()) {
|
||||||
String event = selectToMarker(eventBuf, ",");
|
String event = selectToMarker(eventBuf, ",");
|
||||||
Serial.println("event: " + event);
|
Serial.println("event: " + event);
|
||||||
|
|
||||||
//здесь нужно пропускать данное событие через условия сценариев
|
//здесь нужно пропускать данное событие через условия сценариев
|
||||||
//и если оно есть в условии сценария и совподает
|
//и если оно есть в условии сценария и совподает
|
||||||
//то нужно поместить все команды этого блока сценария в generateOrder(order1, order2, ....)
|
//то нужно поместить все команды этого блока сценария в generateOrder(order1, order2, ....)
|
||||||
//который в свою очередь их выполнит
|
//который в свою очередь их выполнит
|
||||||
|
iotScen.ExecScenario();
|
||||||
|
|
||||||
eventBuf = deleteBeforeDelimiter(eventBuf, ",");
|
eventBuf = deleteBeforeDelimiter(eventBuf, ",");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user