iot manager 2.0 support

This commit is contained in:
Dmitry Borisenko
2020-02-08 02:45:35 +03:00
parent 4e211ecca5
commit 8c3111cfa8
26 changed files with 92 additions and 350 deletions

View File

@@ -13,26 +13,20 @@ void handleScenario() {
if (tmp == "") return;
i++;
if (scenario_line_status[i] == 1) {
if (scenario_line_status[i] == 1) {
//Serial.println(i);
String condition = selectToMarker (tmp, "\n"); //выделяем первую строку самого сценария button1 = 1 (условие)
String param_name = selectFromMarkerToMarker(condition, " " , 0); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
String num1 = param_name.substring(param_name.length() - 1);
String num2 = param_name.substring(param_name.length() - 2, param_name.length() - 1);
if (isDigitStr(num1) && isDigitStr(num2)) {
param_name = param_name.substring(0, param_name.length() - 2) + "Set" + num2 + num1;
} else {
if (isDigitStr(num1)) {
param_name = param_name.substring(0, param_name.length() - 1) + "Set" + num1;
}
} //преобразуем из button1 в вид buttonSet1 ,param_name = buttonSet1
String param_name = selectFromMarkerToMarker(condition, " " , 0);
param_name = add_set(param_name); //из первой страки берем имя параметра button1 и вставляем в него Set и получаем buttonSet1
String order = jsonRead(optionJson, "scenario_status"); //читаем весь файл событий
String param = selectToMarker (order, ","); //читаем первое событие из файла событий
if (param_name == param) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
String sign = selectFromMarkerToMarker(condition, " " , 1); //читаем знак (=)
String value = selectFromMarkerToMarker(condition, " " , 2); //читаем значение (1)
if (value.indexOf("value") != -1) {
if (value.indexOf("digit") != -1) {
value = add_set(value);
value = jsonRead(configJson, value);
}
boolean flag = false; //если одно из значений совпало то только тогда начинаем выполнять комнады
@@ -43,22 +37,22 @@ void handleScenario() {
if (jsonRead(configJson, param_name) != value) flag = true;
}
if (sign == "<") {
if (jsonRead(configJson, param_name).toFloat() < value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() < value.toInt()) flag = true;
}
if (sign == ">") {
if (jsonRead(configJson, param_name).toFloat() > value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() > value.toInt()) flag = true;
}
if (sign == ">=") {
if (jsonRead(configJson, param_name).toFloat() >= value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() >= value.toInt()) flag = true;
}
if (sign == "<=") {
if (jsonRead(configJson, param_name).toFloat() <= value.toFloat()) flag = true;
if (jsonRead(configJson, param_name).toInt() <= value.toInt()) flag = true;
}
if (flag) {
tmp = deleteBeforeDelimiter(tmp, "\n"); //удаляем строку самого сценария оставляя только команды
stringExecution(tmp); //выполняем все команды
Serial.println("[SCENARIO] '" + condition + "'");
//Serial.println(" " + tmp);
}
@@ -75,7 +69,7 @@ void handleScenario() {
}
}
void eventGen (String event_name, String number) { //событие выглядит как имя плюс set плюс номер: button+Set+1
void eventGen (String event_name, String number) { //событие выглядит как имя плюс set плюс номер: button+Set+1
if (jsonRead(configSetup, "scenario") == "1") {
String tmp = jsonRead(optionJson, "scenario_status") ; //генерирование события
@@ -83,3 +77,16 @@ void eventGen (String event_name, String number) { //событие выгля
jsonWrite(optionJson, "scenario_status", tmp + event_name + number + ",");
}
}
String add_set(String param_name) {
String num1 = param_name.substring(param_name.length() - 1);
String num2 = param_name.substring(param_name.length() - 2, param_name.length() - 1);
if (isDigitStr(num1) && isDigitStr(num2)) {
param_name = param_name.substring(0, param_name.length() - 2) + "Set" + num2 + num1;
} else {
if (isDigitStr(num1)) {
param_name = param_name.substring(0, param_name.length() - 1) + "Set" + num1;
}
}
return param_name;
}