mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
ButtonOut changed (not working version)
This commit is contained in:
@@ -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();
|
||||
|
||||
|
||||
@@ -1,69 +0,0 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
#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;
|
||||
@@ -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)
|
||||
//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)
|
||||
@@ -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;
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
extern String mqttPrefix;
|
||||
extern String mqttRootDevice;
|
||||
|
||||
void mqttInit();
|
||||
boolean mqttConnect();
|
||||
|
||||
32
include/items/ButtonOut.h
Normal file
32
include/items/ButtonOut.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
#include "Global.h"
|
||||
|
||||
class ButtonOut;
|
||||
|
||||
typedef std::vector<ButtonOut> 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();
|
||||
@@ -1,41 +1,41 @@
|
||||
#pragma once
|
||||
#include <Arduino.h>
|
||||
|
||||
#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;
|
||||
//#pragma once
|
||||
//#include <Arduino.h>
|
||||
//
|
||||
//#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;
|
||||
@@ -1,5 +1,8 @@
|
||||
#include "BufferExecute.h"
|
||||
//
|
||||
#include "items/SensorDallas.h"
|
||||
#include "items/ButtonOut.h"
|
||||
//
|
||||
#include "Global.h"
|
||||
#include "Module/Terminal.h"
|
||||
|
||||
|
||||
@@ -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 + ",");
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
15
src/Init.cpp
15
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
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#include "MqttClient.h"
|
||||
|
||||
#include <LittleFS.h>
|
||||
#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);
|
||||
|
||||
@@ -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) {
|
||||
|
||||
64
src/items/ButtonOut.cpp
Normal file
64
src/items/ButtonOut.cpp
Normal file
@@ -0,0 +1,64 @@
|
||||
#include "items/ButtonOut.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
#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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
//}
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#include "items/LoggingClass.h"
|
||||
#include "items/Logging.h"
|
||||
|
||||
#include <Arduino.h>
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user