From 50ad50efb238ee17eb46067151ad4ce1b21fe30d Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Fri, 13 Nov 2020 17:13:50 +0300 Subject: [PATCH] ButtonOut changed (not working version) --- include/BufferExecute.h | 3 - include/Class/ScenarioClass2.h | 69 ----------------- include/Consts.h | 8 +- include/Global.h | 9 ++- include/MqttClient.h | 2 + include/items/ButtonOut.h | 32 ++++++++ include/items/ButtonOutClass.h | 82 ++++++++++----------- include/items/{LoggingClass.h => Logging.h} | 0 src/BufferExecute.cpp | 3 + src/Class/ScenarioClass3.cpp | 11 +-- src/Global.cpp | 10 ++- src/Init.cpp | 15 +++- src/MqttClient.cpp | 18 +++-- src/Web.cpp | 2 +- src/items/ButtonOut.cpp | 64 ++++++++++++++++ src/items/ButtonOutClass.cpp | 46 ++++++------ src/items/ImpulsOutClass.cpp | 6 +- src/items/{LoggingClass.cpp => Logging.cpp} | 2 +- src/main.cpp | 2 +- 19 files changed, 216 insertions(+), 168 deletions(-) delete mode 100644 include/Class/ScenarioClass2.h create mode 100644 include/items/ButtonOut.h rename include/items/{LoggingClass.h => Logging.h} (100%) create mode 100644 src/items/ButtonOut.cpp rename src/items/{LoggingClass.cpp => Logging.cpp} (99%) diff --git a/include/BufferExecute.h b/include/BufferExecute.h index 238844f5..77996ee6 100644 --- a/include/BufferExecute.h +++ b/include/BufferExecute.h @@ -9,9 +9,6 @@ extern void loopCmdExecute(); extern void addKey(String& key, String& keyNumberTable, int number); extern int getKeyNum(String& key, String& keyNumberTable); -extern void buttonOut(); -extern void buttonOutSet(); - extern void pwmOut(); extern void pwmOutSet(); diff --git a/include/Class/ScenarioClass2.h b/include/Class/ScenarioClass2.h deleted file mode 100644 index 6dc84eb6..00000000 --- a/include/Class/ScenarioClass2.h +++ /dev/null @@ -1,69 +0,0 @@ -#pragma once -#include -#include "Cmd.h" -#include "Global.h" - -class Scenario { - -public: - - void loop() { - - String allBlocks = scenario; - allBlocks.replace("\r\n", "\n"); - allBlocks.replace("\r", "\n"); - allBlocks += "\n"; - - String incommingEvent = selectToMarker(eventBuf, ","); - - while (allBlocks.length() > 1) { - String oneBlock = selectToMarker(allBlocks, "end\n"); - String condition = selectToMarker(oneBlock, "\n"); - - String setEvent = selectFromMarkerToMarker(condition, " ", 0); - String setEventSign = selectFromMarkerToMarker(condition, " ", 1); - String setEventValue = selectFromMarkerToMarker(condition, " ", 2); - if (!isDigitStr(setEventValue)) setEventValue = jsonReadStr(configLiveJson, setEventValue); - - String incommingEventValue = jsonReadStr(configLiveJson, incommingEvent); - - if (incommingEvent == setEvent) { - - boolean flag = false; - - if (setEventSign == "=") { - flag = incommingEventValue == setEventValue; - } - else if (setEventSign == "!=") { - flag = incommingEventValue != setEventValue; - } - else if (setEventSign == "<") { - flag = incommingEventValue.toFloat() < setEventValue.toFloat(); - } - else if (setEventSign == ">") { - flag = incommingEventValue.toFloat() > setEventValue.toFloat(); - } - else if (setEventSign == ">=") { - flag = incommingEventValue.toFloat() >= setEventValue.toFloat(); - } - else if (setEventSign == "<=") { - flag = incommingEventValue.toFloat() <= setEventValue.toFloat(); - } - - if (flag) { - //SerialPrint("I", "Scenario", "incomming Event Value: " + incommingEventValue); - //SerialPrint("I", "Scenario", "set Event Value: " + setEventValue); - - oneBlock = deleteBeforeDelimiter(oneBlock, "\n"); - oneBlock.replace("end", ""); - SerialPrint("I", "Scenario", condition + " set:\n" + oneBlock); - spaceCmdExecute(oneBlock); - } - } - allBlocks = deleteBeforeDelimiter(allBlocks, "end\n"); - } - eventBuf = deleteBeforeDelimiter(eventBuf, ","); - } -}; - -extern Scenario* myScenario; \ No newline at end of file diff --git a/include/Consts.h b/include/Consts.h index b5bc2220..e8e7f96d 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -105,7 +105,11 @@ enum ConfigType_t { CT_CONFIG, CT_SCENARIO }; - +//history //07.11.2020 (SSDP OFF, UDP OFF) //RAM: [===== ] 46.8% (used 38376 bytes from 81920 bytes) -//Flash: [===== ] 54.2% (used 566004 bytes from 1044464 bytes) \ No newline at end of file +//Flash: [===== ] 54.2% (used 566004 bytes from 1044464 bytes) + +//13.11.2020 (SSDP OFF, UDP OFF) +//RAM: [===== ] 46.6% (used 38208 bytes from 81920 bytes) +//Flash: [===== ] 54.2% (used 566388 bytes from 1044464 bytes) \ No newline at end of file diff --git a/include/Global.h b/include/Global.h index 59226d64..12adbee7 100644 --- a/include/Global.h +++ b/include/Global.h @@ -67,8 +67,13 @@ extern String itemsFile; extern String itemsLine; //key lists and numbers -extern String impulsKeyList; -extern int impulsEnterCounter; +//========================================= +extern String impuls_KeyList; +extern int impuls_EnterCounter; +//========================================= +extern String buttonOut_KeyList; +extern int buttonOut_EnterCounter; +//========================================= // Sensors extern String sensorReadingMap10sec; diff --git a/include/MqttClient.h b/include/MqttClient.h index 7656ced5..1acc89b3 100644 --- a/include/MqttClient.h +++ b/include/MqttClient.h @@ -2,6 +2,8 @@ #include +extern String mqttPrefix; +extern String mqttRootDevice; void mqttInit(); boolean mqttConnect(); diff --git a/include/items/ButtonOut.h b/include/items/ButtonOut.h new file mode 100644 index 00000000..6d3a1863 --- /dev/null +++ b/include/items/ButtonOut.h @@ -0,0 +1,32 @@ +#pragma once +#include + +#include "Global.h" + +class ButtonOut; + +typedef std::vector MyButtonOutVector; + +class ButtonOut { + public: + + ButtonOut(unsigned int pin, boolean inv, String key); + + ~ButtonOut(); + + void init(); + void execute(String state); + + private: + + unsigned int _pin; + boolean _inv; + String _key; + + void addNewDelOldData(const String filename, size_t maxPoints, String payload); +}; + +extern MyButtonOutVector* myButtonOut; + +extern void buttonOut(); +extern void buttonOutExecute(); diff --git a/include/items/ButtonOutClass.h b/include/items/ButtonOutClass.h index 1afebc63..dca5fadb 100644 --- a/include/items/ButtonOutClass.h +++ b/include/items/ButtonOutClass.h @@ -1,41 +1,41 @@ -#pragma once -#include - -#include "Class/LineParsing.h" -#include "Global.h" - -class ButtonOutClass : public LineParsing { -public: - ButtonOutClass() : LineParsing() {}; - - void init() { - if (_pin != "") { - pinMode(_pin.toInt(), OUTPUT); - } - jsonWriteStr(configOptionJson, _key + "_pin", _pin); - jsonWriteStr(configOptionJson, _key + "_inv", _inv); - } - - void pinStateSetDefault() { - pinChange(_key, _state); - } - - - void pinChange(String key, String state) { - String pin = jsonReadStr(configOptionJson, key + "_pin"); - String inv = jsonReadStr(configOptionJson, key + "_inv"); - int pinInt = pin.toInt(); - - if (inv == "") { - digitalWrite(pinInt, state.toInt()); - } - else { - digitalWrite(pinInt, !state.toInt()); - } - eventGen2(key, state); - jsonWriteInt(configLiveJson, key, state.toInt()); - publishStatus(key, state); - } -}; - -extern ButtonOutClass myButtonOut; \ No newline at end of file +//#pragma once +//#include +// +//#include "Class/LineParsing.h" +//#include "Global.h" +// +//class ButtonOutClass : public LineParsing { +//public: +// ButtonOutClass() : LineParsing() {}; +// +// void init() { +// if (_pin != "") { +// pinMode(_pin.toInt(), OUTPUT); +// } +// jsonWriteStr(configOptionJson, _key + "_pin", _pin); +// jsonWriteStr(configOptionJson, _key + "_inv", _inv); +// } +// +// void pinStateSetDefault() { +// pinChange(_key, _state); +// } +// +// +// void pinChange(String key, String state) { +// String pin = jsonReadStr(configOptionJson, key + "_pin"); +// String inv = jsonReadStr(configOptionJson, key + "_inv"); +// int pinInt = pin.toInt(); +// +// if (inv == "") { +// digitalWrite(pinInt, state.toInt()); +// } +// else { +// digitalWrite(pinInt, !state.toInt()); +// } +// eventGen2(key, state); +// jsonWriteInt(configLiveJson, key, state.toInt()); +// publishStatus(key, state); +// } +//}; +// +//extern ButtonOutClass myButtonOut; \ No newline at end of file diff --git a/include/items/LoggingClass.h b/include/items/Logging.h similarity index 100% rename from include/items/LoggingClass.h rename to include/items/Logging.h diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp index ecba8a91..16584f2c 100644 --- a/src/BufferExecute.cpp +++ b/src/BufferExecute.cpp @@ -1,5 +1,8 @@ #include "BufferExecute.h" +// #include "items/SensorDallas.h" +#include "items/ButtonOut.h" +// #include "Global.h" #include "Module/Terminal.h" diff --git a/src/Class/ScenarioClass3.cpp b/src/Class/ScenarioClass3.cpp index 1876711f..91776583 100644 --- a/src/Class/ScenarioClass3.cpp +++ b/src/Class/ScenarioClass3.cpp @@ -1,18 +1,13 @@ #include "Class/ScenarioClass3.h" +#include "MqttClient.h" Scenario* myScenario; -//void eventGen(String event_name, String number) { -// if (!jsonReadBool(configSetupJson, "scen")) { -// return; -// } -// SerialPrint("", "", event_name); -// eventBuf += event_name + number + ","; -//} - void eventGen2(String eventName, String eventValue) { if (!jsonReadBool(configSetupJson, "scen")) { return; } //Serial.println(eventName + " " + eventValue); eventBuf += eventName + " " + eventValue + ","; + + //publish(mqttPrefix, eventName + " " + eventValue + ","); } \ No newline at end of file diff --git a/src/Global.cpp b/src/Global.cpp index 75203c97..22731505 100644 --- a/src/Global.cpp +++ b/src/Global.cpp @@ -38,9 +38,13 @@ String itemsFile = ""; String itemsLine = ""; //key lists and numbers -String impulsKeyList = ""; -int impulsEnterCounter = -1; - +//========================================= +String impuls_KeyList = ""; +int impuls_EnterCounter = -1; +//========================================= +String buttonOut_KeyList = ""; +int buttonOut_EnterCounter = -1; +//========================================= // Sensors String sensorReadingMap10sec; diff --git a/src/Init.cpp b/src/Init.cpp index f49654c4..fe97b678 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -2,8 +2,9 @@ #include "BufferExecute.h" #include "Cmd.h" #include "Global.h" -#include "items/LoggingClass.h" +#include "items/Logging.h" #include "items/ImpulsOutClass.h" +#include "items/ButtonOut.h" #include "items/SensorDallas.h" void loadConfig() { @@ -44,9 +45,15 @@ void Device_init() { if (myImpulsOut != nullptr) { myImpulsOut->clear(); } - impulsKeyList = ""; - impulsEnterCounter = -1; - //================================ + impuls_KeyList = ""; + impuls_EnterCounter = -1; + //======clear buttonOut params======= + if (myButtonOut != nullptr) { + myButtonOut->clear(); + } + buttonOut_KeyList = ""; + buttonOut_EnterCounter = -1; + //=================================== #ifdef LAYOUT_IN_RAM diff --git a/src/MqttClient.cpp b/src/MqttClient.cpp index 2210cbb3..bbe52dc2 100644 --- a/src/MqttClient.cpp +++ b/src/MqttClient.cpp @@ -1,7 +1,7 @@ #include "MqttClient.h" #include -#include "items/LoggingClass.h" +#include "items/Logging.h" #include "Class/NotAsync.h" #include "Global.h" #include "Init.h" @@ -62,10 +62,9 @@ void mqttSubscribe() { SerialPrint("I", "MQTT", "subscribe"); mqtt.subscribe(mqttPrefix.c_str()); mqtt.subscribe((mqttRootDevice + "/+/control").c_str()); - mqtt.subscribe((mqttRootDevice + "/order").c_str()); mqtt.subscribe((mqttRootDevice + "/update").c_str()); - mqtt.subscribe((mqttRootDevice + "/devc").c_str()); - mqtt.subscribe((mqttRootDevice + "/devs").c_str()); + //mqtt.subscribe((mqttRootDevice + "/order").c_str()); + //mqtt.subscribe((mqttPrefix + "/event").c_str()); } boolean mqttConnect() { @@ -131,11 +130,16 @@ void mqttCallback(char* topic, uint8_t* payload, size_t length) { } else if (topicStr.indexOf("order")) { - payloadStr.replace("_", " "); - orderBuf += payloadStr; - orderBuf += ","; + //payloadStr.replace("_", " "); + //orderBuf += payloadStr; + //orderBuf += ","; } + + //else if (topicStr.indexOf("event")) { + // eventBuf += payloadStr; + //} + else if (topicStr.indexOf("update")) { if (payloadStr == "1") { myNotAsyncActions->make(do_UPGRADE); diff --git a/src/Web.cpp b/src/Web.cpp index d2f53825..cd90a2ca 100644 --- a/src/Web.cpp +++ b/src/Web.cpp @@ -3,7 +3,7 @@ #include "Global.h" #include "Init.h" #include "ItemsList.h" -#include "items/LoggingClass.h" +#include "items/Logging.h" #include "Telegram.h" bool parseRequestForPreset(AsyncWebServerRequest* request, uint8_t& preset) { diff --git a/src/items/ButtonOut.cpp b/src/items/ButtonOut.cpp new file mode 100644 index 00000000..26d574a2 --- /dev/null +++ b/src/items/ButtonOut.cpp @@ -0,0 +1,64 @@ +#include "items/ButtonOut.h" + +#include + +#include "Class/LineParsing.h" +#include "Global.h" +#include "BufferExecute.h" + +ButtonOut::ButtonOut(unsigned int pin, boolean inv, String key) { + _pin = pin; + _inv = inv; + _key = key; +} +ButtonOut::~ButtonOut() {} + +void ButtonOut::init() { + pinMode(_pin, OUTPUT); +} + +void ButtonOut::execute(String state) { + //if (_inv) { + // digitalWrite(_pin, !state.toInt()); + //} + //else { + digitalWrite(_pin, state.toInt()); + //} + eventGen2(_key, state); + jsonWriteInt(configLiveJson, _key, state.toInt()); + publishStatus(_key, state); +} + +MyButtonOutVector* myButtonOut = nullptr; + +void buttonOut() { + myLineParsing.update(); + String key = myLineParsing.gkey(); + String pin = myLineParsing.gpin(); + String inv = myLineParsing.ginv(); + myLineParsing.clear(); + + buttonOut_EnterCounter++; + addKey(key, buttonOut_KeyList, buttonOut_EnterCounter); + + static bool firstTime = true; + if (firstTime) myButtonOut = new MyButtonOutVector(); + firstTime = false; + myButtonOut->push_back(ButtonOut(pin.toInt(), inv.toInt(), key)); + + sCmd.addCommand(key.c_str(), buttonOutExecute); +} + +void buttonOutExecute() { + String key = sCmd.order(); + String state = sCmd.next(); + + int number = getKeyNum(key, buttonOut_KeyList); + + if (myButtonOut != nullptr) { + if (number != -1) { + myButtonOut->at(number).execute(state); + } + } +} + diff --git a/src/items/ButtonOutClass.cpp b/src/items/ButtonOutClass.cpp index ba674e0d..5de6ca5e 100644 --- a/src/items/ButtonOutClass.cpp +++ b/src/items/ButtonOutClass.cpp @@ -1,23 +1,23 @@ -#include "items/ButtonOutClass.h" - -#include "BufferExecute.h" -//==========================================Модуль кнопок=================================================== -//button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1] -//========================================================================================================== -ButtonOutClass myButtonOut; -void buttonOut() { - myButtonOut.update(); - String key = myButtonOut.gkey(); - String pin = myButtonOut.gpin(); - String inv = myButtonOut.ginv(); - sCmd.addCommand(key.c_str(), buttonOutSet); - myButtonOut.init(); - myButtonOut.pinStateSetDefault(); - myButtonOut.clear(); -} - -void buttonOutSet() { - String key = sCmd.order(); - String state = sCmd.next(); - myButtonOut.pinChange(key, state); -} +//#include "items/ButtonOutClass.h" +// +//#include "BufferExecute.h" +////==========================================Модуль кнопок=================================================== +////button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1] +////========================================================================================================== +//ButtonOutClass myButtonOut; +//void buttonOut() { +// myButtonOut.update(); +// String key = myButtonOut.gkey(); +// String pin = myButtonOut.gpin(); +// String inv = myButtonOut.ginv(); +// sCmd.addCommand(key.c_str(), buttonOutSet); +// myButtonOut.init(); +// myButtonOut.pinStateSetDefault(); +// myButtonOut.clear(); +//} +// +//void buttonOutSet() { +// String key = sCmd.order(); +// String state = sCmd.next(); +// myButtonOut.pinChange(key, state); +//} diff --git a/src/items/ImpulsOutClass.cpp b/src/items/ImpulsOutClass.cpp index 4cab6494..172e89e4 100644 --- a/src/items/ImpulsOutClass.cpp +++ b/src/items/ImpulsOutClass.cpp @@ -44,8 +44,8 @@ void impuls() { String pin = myLineParsing.gpin(); myLineParsing.clear(); - impulsEnterCounter++; - addKey(key, impulsKeyList, impulsEnterCounter); + impuls_EnterCounter++; + addKey(key, impuls_KeyList, impuls_EnterCounter); static bool firstTime = true; if (firstTime) myImpulsOut = new MyImpulsOutVector(); @@ -60,7 +60,7 @@ void impulsExecute() { String impulsPeriod = sCmd.next(); String impulsCount = sCmd.next(); - int number = getKeyNum(key, impulsKeyList); + int number = getKeyNum(key, impuls_KeyList); if (myImpulsOut != nullptr) { if (number != -1) { diff --git a/src/items/LoggingClass.cpp b/src/items/Logging.cpp similarity index 99% rename from src/items/LoggingClass.cpp rename to src/items/Logging.cpp index e01e01f5..2f178d23 100644 --- a/src/items/LoggingClass.cpp +++ b/src/items/Logging.cpp @@ -1,4 +1,4 @@ -#include "items/LoggingClass.h" +#include "items/Logging.h" #include diff --git a/src/main.cpp b/src/main.cpp index 08c03929..4a809cbd 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,7 +15,7 @@ #include "Utils/Timings.h" #include "Utils/WebUtils.h" #include "items/ButtonInClass.h" -#include "items/LoggingClass.h" +#include "items/Logging.h" #include "items/ImpulsOutClass.h" #include "items/SensorDallas.h" #include "Telegram.h"