fixed some bugs

This commit is contained in:
Dmitry Borisenko
2020-11-02 04:09:15 +03:00
parent 0bfc876c65
commit 50590bc90e
6 changed files with 92 additions and 88 deletions

View File

@@ -1 +1 @@
0;button-out;id;toggleSunMoon;Кнопки;Освещение;order;st[0] 0;button-out;id;toggle;Кнопки;Освещение;order;st[0]

View File

@@ -72,15 +72,18 @@ class Scenario {
} else if (_conditionSign == "!=") { } else if (_conditionSign == "!=") {
flag = _eventValue != _conditionValue; flag = _eventValue != _conditionValue;
} else if (_conditionSign == "<") { } else if (_conditionSign == "<") {
flag = _eventValue.toInt() < _conditionValue.toInt(); flag = _eventValue.toFloat() < _conditionValue.toFloat();
} else if (_conditionSign == ">") { } else if (_conditionSign == ">") {
flag = _eventValue.toInt() > _conditionValue.toInt(); flag = _eventValue.toFloat() > _conditionValue.toFloat();
} else if (_conditionSign == ">=") { } else if (_conditionSign == ">=") {
flag = _eventValue.toInt() >= _conditionValue.toInt(); flag = _eventValue.toFloat() >= _conditionValue.toFloat();
} else if (_conditionSign == "<=") { } else if (_conditionSign == "<=") {
flag = _eventValue.toInt() <= _conditionValue.toInt(); flag = _eventValue.toFloat() <= _conditionValue.toFloat();
} }
Serial.println("event Value: " + _eventValue);
Serial.println("cond Value: " + _conditionValue);
if (flag) Serial.println("I Scenario event: " + _condition); if (flag) Serial.println("I Scenario event: " + _condition);
return flag; return flag;
@@ -97,7 +100,7 @@ class Scenario {
this->calculate2(); this->calculate2();
if (this->isConditionSatisfied()) { //если вошедшее событие выполняет условие сценария if (this->isConditionSatisfied()) { //если вошедшее событие выполняет условие сценария
_scenBlok = deleteBeforeDelimiter(_scenBlok, "\n"); _scenBlok = deleteBeforeDelimiter(_scenBlok, "\n");
//Serial.println(" [>] Making: " + _scenBlok); Serial.println(" [>] Making: " + _scenBlok);
spaceCmdExecute(_scenBlok); spaceCmdExecute(_scenBlok);
} }
} }

View File

@@ -31,7 +31,7 @@
//#define MDNS_ENABLED //#define MDNS_ENABLED
//#define WEBSOCKET_ENABLED //#define WEBSOCKET_ENABLED
//#define LAYOUT_IN_RAM //#define LAYOUT_IN_RAM
#define UDP_ENABLED //#define UDP_ENABLED
//#define SSDP_ENABLED //#define SSDP_ENABLED
//=========Sensors enable/disable================================================================================================================================= //=========Sensors enable/disable=================================================================================================================================

View File

@@ -5,8 +5,8 @@
#include "Global.h" #include "Global.h"
class ButtonOutClass : public LineParsing { class ButtonOutClass : public LineParsing {
public: public:
ButtonOutClass() : LineParsing(){}; ButtonOutClass() : LineParsing() {};
void init() { void init() {
if (_pin != "") { if (_pin != "") {
@@ -28,12 +28,13 @@ class ButtonOutClass : public LineParsing {
if (inv == "") { if (inv == "") {
digitalWrite(pinInt, state.toInt()); digitalWrite(pinInt, state.toInt());
} else { }
else {
digitalWrite(pinInt, !state.toInt()); digitalWrite(pinInt, !state.toInt());
} }
eventGen(key, ""); eventGen(key, "");
jsonWriteInt(configLiveJson, key, state.toInt()); jsonWriteInt(configLiveJson, key, state.toInt());
publishStatus(key, state); publishStatus(key, state);
} }
}; };

View File

@@ -5,8 +5,8 @@
#include "items/SensorConvertingClass.h" #include "items/SensorConvertingClass.h"
class SensorDallasClass : public SensorConvertingClass { class SensorDallasClass : public SensorConvertingClass {
public: public:
SensorDallasClass() : SensorConvertingClass(){}; SensorDallasClass() : SensorConvertingClass() {};
void SensorDallasInit() { void SensorDallasInit() {
oneWire = new OneWire((uint8_t)_pin.toInt()); oneWire = new OneWire((uint8_t)_pin.toInt());
@@ -36,7 +36,7 @@ class SensorDallasClass : public SensorConvertingClass {
float valueFl = this->correction(key, value); float valueFl = this->correction(key, value);
eventGen(key, ""); eventGen(key, "");
jsonWriteStr(configLiveJson, key, String(valueFl)); jsonWriteStr(configLiveJson, key, String(valueFl));
publishStatus(key, String(valueFl)); publishStatus(key, String(valueFl));
SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl)); SerialPrint("I", "Sensor", "'" + key + "' data: " + String(valueFl));
} }
} }

View File

@@ -8,68 +8,68 @@ boolean isScenarioEnabled() {
return jsonReadBool(configSetupJson, "scen") && eventBuf != ""; return jsonReadBool(configSetupJson, "scen") && eventBuf != "";
} }
void loopScenario() { //void loopScenario() {
if (!isScenarioEnabled()) { // if (!isScenarioEnabled()) {
return; // return;
} // }
String scenarioTmp = scenario; // String scenarioTmp = scenario;
scenarioTmp += "\n"; // scenarioTmp += "\n";
scenarioTmp.replace("\r\n", "\n"); // scenarioTmp.replace("\r\n", "\n");
scenarioTmp.replace("\r", "\n"); // scenarioTmp.replace("\r", "\n");
//
while (scenarioTmp.length()) { // while (scenarioTmp.length()) {
String scenBlok = selectToMarker(scenarioTmp, "end"); //выделяем первый сценарий // String scenBlok = selectToMarker(scenarioTmp, "end"); //выделяем первый сценарий
if (!scenBlok.length()) { // if (!scenBlok.length()) {
return; // return;
} // }
//
size_t i = 0; // size_t i = 0;
i++; // i++;
if (scenario_line_status[i] == 1) { // if (scenario_line_status[i] == 1) {
String condition = selectToMarker(scenBlok, "\n"); //выделяем условие // String condition = selectToMarker(scenBlok, "\n"); //выделяем условие
//
String conditionParam = selectFromMarkerToMarker(condition, " ", 0); //выделяем параметр условия // String conditionParam = selectFromMarkerToMarker(condition, " ", 0); //выделяем параметр условия
String order = eventBuf; // String order = eventBuf;
String eventParam = selectToMarker(order, ","); //выделяем параметр события // String eventParam = selectToMarker(order, ","); //выделяем параметр события
//
if (conditionParam == eventParam) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку // if (conditionParam == eventParam) { //если поступившее событие равно событию заданному buttonSet1 в файле начинаем его обработку
//
String conditionSign = selectFromMarkerToMarker(condition, " ", 1); //выделяем знак (=) // String conditionSign = selectFromMarkerToMarker(condition, " ", 1); //выделяем знак (=)
//
String conditionValue = selectFromMarkerToMarker(condition, " ", 2); //выделяем значение (1) // String conditionValue = selectFromMarkerToMarker(condition, " ", 2); //выделяем значение (1)
//
boolean flag = false; // boolean flag = false;
//
String eventParam = jsonReadStr(configLiveJson, conditionParam); //получаем значение этого параметра события из json // String eventParam = jsonReadStr(configLiveJson, conditionParam); //получаем значение этого параметра события из json
//
if (conditionSign == "=") { // if (conditionSign == "=") {
flag = eventParam == conditionValue; // flag = eventParam == conditionValue;
} else if (conditionSign == "!=") { // } else if (conditionSign == "!=") {
flag = eventParam != conditionValue; // flag = eventParam != conditionValue;
} else if (conditionSign == "<") { // } else if (conditionSign == "<") {
flag = eventParam.toInt() < conditionValue.toInt(); // flag = eventParam.toInt() < conditionValue.toInt();
} else if (conditionSign == ">") { // } else if (conditionSign == ">") {
flag = eventParam.toInt() > conditionValue.toInt(); // flag = eventParam.toInt() > conditionValue.toInt();
} else if (conditionSign == ">=") { // } else if (conditionSign == ">=") {
flag = eventParam.toInt() >= conditionValue.toInt(); // flag = eventParam.toInt() >= conditionValue.toInt();
} else if (conditionSign == "<=") { // } else if (conditionSign == "<=") {
flag = eventParam.toInt() <= conditionValue.toInt(); // flag = eventParam.toInt() <= conditionValue.toInt();
} // }
//
if (flag) { // if (flag) {
scenBlok = deleteBeforeDelimiter(scenBlok, "\n"); // удаляем строку самого сценария оставляя только команды // scenBlok = deleteBeforeDelimiter(scenBlok, "\n"); // удаляем строку самого сценария оставляя только команды
SerialPrint("I","module","do: " + scenBlok); // SerialPrint("I","module","do: " + scenBlok);
spaceCmdExecute(scenBlok); // выполняем все команды // spaceCmdExecute(scenBlok); // выполняем все команды
} // }
} // }
} // }
scenarioTmp = deleteBeforeDelimiter(scenarioTmp, "end\n"); //удаляем первый сценарий // scenarioTmp = deleteBeforeDelimiter(scenarioTmp, "end\n"); //удаляем первый сценарий
} // }
//
String eventBufTmp = eventBuf; //читаем файл событий // String eventBufTmp = eventBuf; //читаем файл событий
eventBufTmp = deleteBeforeDelimiter(eventBufTmp, ","); //удаляем выполненное событие // eventBufTmp = deleteBeforeDelimiter(eventBufTmp, ","); //удаляем выполненное событие
eventBuf = eventBufTmp; //записываем обновленный файл событий // eventBuf = eventBufTmp; //записываем обновленный файл событий
} //}
void eventGen(String event_name, String number) { void eventGen(String event_name, String number) {
if (!jsonReadBool(configSetupJson, "scen")) { if (!jsonReadBool(configSetupJson, "scen")) {
@@ -78,18 +78,18 @@ void eventGen(String event_name, String number) {
eventBuf = event_name + number + ","; eventBuf = event_name + number + ",";
} }
String add_set(String str) { //String add_set(String str) {
String num1 = str.substring(str.length() - 1); // String num1 = str.substring(str.length() - 1);
String num2 = str.substring(str.length() - 2, str.length() - 1); // String num2 = str.substring(str.length() - 2, str.length() - 1);
if (isDigitStr(num1) && isDigitStr(num2)) { // if (isDigitStr(num1) && isDigitStr(num2)) {
str = str.substring(0, str.length() - 2) + "Set" + num2 + num1; // str = str.substring(0, str.length() - 2) + "Set" + num2 + num1;
} else { // } else {
if (isDigitStr(num1)) { // if (isDigitStr(num1)) {
str = str.substring(0, str.length() - 1) + "Set" + num1; // str = str.substring(0, str.length() - 1) + "Set" + num1;
} // }
} // }
return str; // return str;
} //}
//button-out1 = 1 //button-out1 = 1
//button-out2 1 //button-out2 1