From 799118d763ef7461120a81f788325d3400f9b6e8 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Fri, 4 Sep 2020 18:58:03 +0300 Subject: [PATCH] Changes --- include/BufferExecute.h | 8 + include/Class/ScenarioClass.h | 2 +- include/Cmd.h | 6 +- include/Consts.h | 2 +- include/Global.h | 6 +- include/{items/itemsGlobal.h => ItemsCmd.h} | 0 include/Module/Runner.h | 2 +- include/SSDP.h | 3 +- src/BufferExecute.cpp | 71 ++++ src/Init.cpp | 2 +- src/ItemsCmd.cpp | 318 ++++++++++++++++ src/ItemsGlobal.cpp | 386 -------------------- src/PushingBox.cpp | 10 +- src/SSDP.cpp | 47 +-- src/Scenario.cpp | 2 +- src/Sensors.cpp | 360 +++++++++--------- src/Upgrade.cpp | 6 +- src/WebServer.cpp | 4 +- src/items/ButtonInClass.cpp | 2 +- src/items/ButtonOutClass.cpp | 2 +- src/items/InputDigitClass.cpp | 2 +- src/items/InputTimeClass.cpp | 2 +- src/items/OutputTextClass.cpp | 2 +- src/items/PwmOutClass.cpp | 2 +- src/items/SensorAnalogClass.cpp | 2 +- src/items/SensorDallasClass.cpp | 2 +- src/items/SensorDhtClass.cpp | 2 +- src/items/SensorUltrasonicClass.cpp | 2 +- src/main.cpp | 8 +- 29 files changed, 630 insertions(+), 633 deletions(-) create mode 100644 include/BufferExecute.h rename include/{items/itemsGlobal.h => ItemsCmd.h} (100%) create mode 100644 src/BufferExecute.cpp create mode 100644 src/ItemsCmd.cpp delete mode 100644 src/ItemsGlobal.cpp diff --git a/include/BufferExecute.h b/include/BufferExecute.h new file mode 100644 index 00000000..85252a36 --- /dev/null +++ b/include/BufferExecute.h @@ -0,0 +1,8 @@ +#pragma once +#include + +extern void loopCmdAdd(const String &cmdStr); +extern void fileCmdExecute(const String &filename); +extern void csvCmdExecute(String &cmdStr); +extern void spaceCmdExecute(String &cmdStr); +extern void loopCmdExecute(); \ No newline at end of file diff --git a/include/Class/ScenarioClass.h b/include/Class/ScenarioClass.h index a1499b55..66e15ca3 100644 --- a/include/Class/ScenarioClass.h +++ b/include/Class/ScenarioClass.h @@ -98,7 +98,7 @@ class Scenario { if (this->isConditionSatisfied()) { //если вошедшее событие выполняет условие сценария _scenBlok = deleteBeforeDelimiter(_scenBlok, "\n"); //Serial.println(" [>] Making: " + _scenBlok); - spaceExecute(_scenBlok); + spaceCmdExecute(_scenBlok); } } this->delOneScenBlock(); //удалим использованный блок diff --git a/include/Cmd.h b/include/Cmd.h index 311169d1..eb27380d 100644 --- a/include/Cmd.h +++ b/include/Cmd.h @@ -60,6 +60,6 @@ extern void firmwareVersion(); extern void firmwareUpdate(); extern void loadScenario(); -extern void fileExecute(const String& filename); -extern void csvExecute(String& cmdStr); -extern void spaceExecute(String& cmdStr); \ No newline at end of file +extern void fileCmdExecute(const String& filename); +extern void csvCmdExecute(String& cmdStr); +extern void spaceCmdExecute(String& cmdStr); \ No newline at end of file diff --git a/include/Consts.h b/include/Consts.h index 9dfb2bb3..3fe9b2f8 100644 --- a/include/Consts.h +++ b/include/Consts.h @@ -30,7 +30,7 @@ //#define WEBSOCKET_ENABLED //#define LAYOUT_IN_RAM //#define UDP_ENABLED -#define SSDP +#define SSDP_EN /* * Sensor diff --git a/include/Global.h b/include/Global.h index f9c829b2..0441ee1f 100644 --- a/include/Global.h +++ b/include/Global.h @@ -139,11 +139,7 @@ extern void udpInit(); extern void do_udp_data_parse(); extern void do_mqtt_send_settings_to_udp(); -extern void addCommandLoop(const String& cmdStr); -extern void loopSerial(); -extern void loopCmd(); -extern void loopScenario(); -extern void loopUdp(); + extern void do_update(); diff --git a/include/items/itemsGlobal.h b/include/ItemsCmd.h similarity index 100% rename from include/items/itemsGlobal.h rename to include/ItemsCmd.h diff --git a/include/Module/Runner.h b/include/Module/Runner.h index 6d6c97ec..45ca7403 100644 --- a/include/Module/Runner.h +++ b/include/Module/Runner.h @@ -12,6 +12,6 @@ class CmdRunner : public Runner { public: void run(const char* cmd, Print* out) override { String cmdStr{cmd}; - csvExecute(cmdStr); + csvCmdExecute(cmdStr); } }; \ No newline at end of file diff --git a/include/SSDP.h b/include/SSDP.h index 110b765b..0b13d706 100644 --- a/include/SSDP.h +++ b/include/SSDP.h @@ -1,6 +1,7 @@ #pragma once -#ifdef SSDP +#include "Global.h" #include +#ifdef SSDP_EN extern void SsdpInit(); extern String xmlNode(String tags, String data); extern String decToHex(uint32_t decValue, byte desiredStringLength); diff --git a/src/BufferExecute.cpp b/src/BufferExecute.cpp new file mode 100644 index 00000000..cb312eb7 --- /dev/null +++ b/src/BufferExecute.cpp @@ -0,0 +1,71 @@ +#include "BufferExecute.h" +#include "Global.h" +#include "Module/Terminal.h" +#include "Errors.h" + +static const char *MODULE = "Cmd"; + +void loopCmdAdd(const String &cmdStr) { + orderBuf += cmdStr; + if (!cmdStr.endsWith(",")) { + orderBuf += ","; + } +} + +void fileCmdExecute(const String &filename) { + String cmdStr = readFile(filename, 2048); + csvCmdExecute(cmdStr); +} + +void csvCmdExecute(String &cmdStr) { + cmdStr.replace(";", " "); + cmdStr += "\r\n"; + cmdStr.replace("\r\n", "\n"); + cmdStr.replace("\r", "\n"); + int count = 0; + while (cmdStr.length()) { + String buf = selectToMarker(cmdStr, "\n"); + count++; + if (count > 1) sCmd.readStr(buf); + cmdStr = deleteBeforeDelimiter(cmdStr, "\n"); + } +} + +void spaceCmdExecute(String &cmdStr) { + cmdStr += "\r\n"; + cmdStr.replace("\r\n", "\n"); + cmdStr.replace("\r", "\n"); + while (cmdStr.length()) { + String buf = selectToMarker(cmdStr, "\n"); + sCmd.readStr(buf); + cmdStr = deleteBeforeDelimiter(cmdStr, "\n"); + } +} + +void loopCmdExecute() { + if (orderBuf.length()) { + String tmp = selectToMarker(orderBuf, ","); //выделяем первую команду rel 5 1, + pm.info("do: " + tmp); + sCmd.readStr(tmp); //выполняем + orderBuf = deleteBeforeDelimiter(orderBuf, ","); //осекаем + } +} + +void sensorsInit() { + ts.add( + SENSORS, 10000, [&](void *) { + String buf = sensorReadingMap; + while (buf.length()) { + String tmp = selectToMarker(buf, ","); + sCmd.readStr(tmp); + buf = deleteBeforeDelimiter(buf, ","); + } + }, + nullptr, true); +} + +//void loopSerial() { +// if (term) { +// term->loop(); +// } +//} diff --git a/src/Init.cpp b/src/Init.cpp index 85630012..e64e590f 100644 --- a/src/Init.cpp +++ b/src/Init.cpp @@ -64,7 +64,7 @@ void Device_init() { #endif - fileExecute(String(DEVICE_CONFIG_FILE)); + fileCmdExecute(String(DEVICE_CONFIG_FILE)); //outcoming_date(); } //-------------------------------сценарии----------------------------------------------------- diff --git a/src/ItemsCmd.cpp b/src/ItemsCmd.cpp new file mode 100644 index 00000000..7ebc8f10 --- /dev/null +++ b/src/ItemsCmd.cpp @@ -0,0 +1,318 @@ +#include "ItemsCmd.h" + +#include "BufferExecute.h" +#include "Class/NotAsinc.h" +#include "Cmd.h" +#include "Global.h" +#include "Module/Terminal.h" +#include "Servo/Servos.h" + +Terminal *term = nullptr; + +boolean but[NUM_BUTTONS]; +Bounce *buttons = new Bounce[NUM_BUTTONS]; + +#ifdef ESP8266 +SoftwareSerial *mySerial = nullptr; +#else +HardwareSerial *mySerial = nullptr; +#endif + +void getData(); + +void cmd_init() { + sCmd.addCommand("button-out", buttonOut); + sCmd.addCommand("pwm-out", pwmOut); + sCmd.addCommand("button-in", buttonIn); + + sCmd.addCommand("input-digit", inputDigit); + sCmd.addCommand("input-time", inputTime); + sCmd.addCommand("output-text", textOut); + + sCmd.addCommand("analog-adc", analogAdc); + sCmd.addCommand("ultrasonic-cm", ultrasonicCm); + sCmd.addCommand("dallas-temp", dallasTemp); + + sCmd.addCommand("dht-temp", dhtTemp); + sCmd.addCommand("dht-hum", dhtHum); + + + handle_time_init(); +} + +// sCmd.addCommand("timerStart", timerStart_); +// sCmd.addCommand("timerStop", timerStop_); + +//#ifdef DHT_ENABLED +// sCmd.addCommand("dhtT", dhtT); +// sCmd.addCommand("dhtH", dhtH); +// sCmd.addCommand("dhtPerception", dhtP); +// sCmd.addCommand("dhtComfort", dhtC); +// sCmd.addCommand("dhtDewpoint", dhtD); +//#endif + +//#ifdef BMP_ENABLED +// sCmd.addCommand("bmp280T", bmp280T); +// sCmd.addCommand("bmp280P", bmp280P); +//#endif +// +//#ifdef BME_ENABLED +// sCmd.addCommand("bme280T", bme280T); +// sCmd.addCommand("bme280P", bme280P); +// sCmd.addCommand("bme280H", bme280H); +// sCmd.addCommand("bme280A", bme280A); +//#endif +// +//#ifdef STEPPER_ENABLED +// sCmd.addCommand("stepper", stepper); +// sCmd.addCommand("stepperSet", stepperSet); +//#endif +// +//#ifdef SERVO_ENABLED +// sCmd.addCommand("servo", servo_); +// sCmd.addCommand("servoSet", servoSet); +//#endif +// +//#ifdef SERIAL_ENABLED +// sCmd.addCommand("serialBegin", serialBegin); +// sCmd.addCommand("serialWrite", serialWrite); +// sCmd.addCommand("getData", getData); +//#endif +// +//#ifdef LOGGING_ENABLED +// sCmd.addCommand("logging", logging); +//#endif +// +// sCmd.addCommand("mqtt", mqttOrderSend); +// sCmd.addCommand("http", httpOrderSend); +// +//#ifdef PUSH_ENABLED +// sCmd.addCommand("push", pushControl); +//#endif +// +// sCmd.addCommand("firmwareUpdate", firmwareUpdate); +// sCmd.addCommand("firmwareVersion", firmwareVersion); + +//void text() { +// String number = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String page_number = sCmd.next(); +// +// createWidget(widget_name, page_name, page_number, "anydata", "text" + number); +//} +// +//void textSet() { +// String number = sCmd.next(); +// String text = sCmd.next(); +// text.replace("_", " "); +// +// if (text.indexOf("-time") >= 0) { +// text.replace("-time", ""); +// text.replace("#", " "); +// text = text + " " + timeNow->getDateTimeDotFormated(); +// } +// +// jsonWriteStr(configLiveJson, "text" + number, text); +// MqttClient::publishStatus("text" + number, text); +//} +//===================================================================================================================================== +////=========================================Модуль шагового мотора====================================================================== +//#ifdef STEPPER_ENABLED +////stepper 1 12 13 +//void stepper() { +// String stepper_number = sCmd.next(); +// String pin_step = sCmd.next(); +// String pin_dir = sCmd.next(); +// +// jsonWriteStr(configOptionJson, "stepper" + stepper_number, pin_step + " " + pin_dir); +// pinMode(pin_step.toInt(), OUTPUT); +// pinMode(pin_dir.toInt(), OUTPUT); +//} +// +////stepperSet 1 100 5 +//void stepperSet() { +// String stepper_number = sCmd.next(); +// String steps = sCmd.next(); +// jsonWriteStr(configOptionJson, "steps" + stepper_number, steps); +// String stepper_speed = sCmd.next(); +// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper" + stepper_number), " "); +// String pin_dir = deleteBeforeDelimiter(jsonReadStr(configOptionJson, "stepper" + stepper_number), " "); +// Serial.println(pin_step); +// Serial.println(pin_dir); +// if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH); +// if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW); +// if (stepper_number == "1") { +// ts.add( +// STEPPER1, stepper_speed.toInt(), [&](void *) { +// int steps_int = abs(jsonReadInt(configOptionJson, "steps1") * 2); +// static int count; +// count++; +// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper1"), " "); +// digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); +// yield(); +// if (count > steps_int) { +// digitalWrite(pin_step.toInt(), LOW); +// ts.remove(STEPPER1); +// count = 0; +// } +// }, +// nullptr, true); +// } +// if (stepper_number == "2") { +// ts.add( +// STEPPER2, stepper_speed.toInt(), [&](void *) { +// int steps_int = abs(jsonReadInt(configOptionJson, "steps2") * 2); +// static int count; +// count++; +// String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper2"), " "); +// digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); +// yield(); +// if (count > steps_int) { +// digitalWrite(pin_step.toInt(), LOW); +// ts.remove(STEPPER2); +// count = 0; +// } +// }, +// nullptr, true); +// } +//} +//#endif +////==================================================================================================================================================== +////=================================================================Сервоприводы======================================================================= +//#ifdef SERVO_ENABLED +////servo 1 13 50 Мой#сервопривод Сервоприводы 0 100 0 180 2 +//void servo_() { +// String number = sCmd.next(); +// uint8_t pin = String(sCmd.next()).toInt(); +// int value = String(sCmd.next()).toInt(); +// +// String widget = sCmd.next(); +// String page = sCmd.next(); +// +// int min_value = String(sCmd.next()).toInt(); +// int max_value = String(sCmd.next()).toInt(); +// int min_deg = String(sCmd.next()).toInt(); +// int max_deg = String(sCmd.next()).toInt(); +// +// String pageNumber = sCmd.next(); +// +// jsonWriteStr(configOptionJson, "servo_pin" + number, String(pin, DEC)); +// +// value = map(value, min_value, max_value, min_deg, max_deg); +// +// Servo *servo = myServo.create(number.toInt(), pin); +// servo->write(value); +//#ifdef ESP32 +// myServo1.attach(servo_pin.toInt(), 500, 2400); +// myServo1.write(start_state_int); +//#endif +// +// jsonWriteInt(configOptionJson, "s_min_val" + number, min_value); +// jsonWriteInt(configOptionJson, "s_max_val" + number, max_value); +// jsonWriteInt(configOptionJson, "s_min_deg" + number, min_deg); +// jsonWriteInt(configOptionJson, "s_max_deg" + number, max_deg); +// +// jsonWriteInt(configLiveJson, "servo" + number, value); +// +// createWidgetParam(widget, page, pageNumber, "range", "servo" + number, "min", String(min_value), "max", String(max_value), "k", "1"); +//} +// +//void servoSet() { +// String number = sCmd.next(); +// int value = String(sCmd.next()).toInt(); +// +// value = map(value, +// jsonReadInt(configOptionJson, "s_min_val" + number), +// jsonReadInt(configOptionJson, "s_max_val" + number), +// jsonReadInt(configOptionJson, "s_min_deg" + number), +// jsonReadInt(configOptionJson, "s_max_deg" + number)); +// +// Servo *servo = myServo.get(number.toInt()); +// if (servo) { +// servo->write(value); +// } +// +// eventGen("servo", number); +// jsonWriteInt(configLiveJson, "servo" + number, value); +// MqttClient::publishStatus("servo" + number, String(value, DEC)); +//} +//#endif +////==================================================================================================================================================== +////=============================================================Модуль сериал порта======================================================================= +// +//#ifdef SERIAL_ENABLED +//void serialBegin() { +// String s_speed = sCmd.next(); +// String rxPin = sCmd.next(); +// String txPin = sCmd.next(); +// +// if (mySerial) { +// delete mySerial; +// } +// +//#ifdef ESP8266 +// mySerial = new SoftwareSerial(rxPin.toInt(), txPin.toInt()); +// mySerial->begin(s_speed.toInt()); +//#else +// mySerial = new HardwareSerial(2); +// mySerial->begin(rxPin.toInt(), txPin.toInt()); +//#endif +// +// term = new Terminal(mySerial); +// term->setEOL(LF); +// term->enableColors(false); +// term->enableControlCodes(false); +// term->enableEcho(false); +// term->setOnReadLine([](const char *str) { +// String line = String(str); +// loopCmdAdd(line); +// }); +//} +// +//void getData() { +// String param = sCmd.next(); +// String res = param.length() ? jsonReadStr(configLiveJson, param) : configLiveJson; +// if (term) { +// term->println(res.c_str()); +// } +//} +// +//void serialWrite() { +// String payload = sCmd.next(); +// if (term) { +// term->println(payload.c_str()); +// } +//} +//#endif +////==================================================================================================================================================== +////=================================================Глобальные команды удаленного управления=========================================================== +// +//void mqttOrderSend() { +// String id = sCmd.next(); +// String order = sCmd.next(); +// +// String all_line = jsonReadStr(configSetupJson, "mqttPrefix") + "/" + id + "/order"; +// mqtt.publish(all_line.c_str(), order.c_str(), false); +//} +// +//void httpOrderSend() { +// String ip = sCmd.next(); +// String order = sCmd.next(); +// order.replace("_", "%20"); +// String url = "http://" + ip + "/cmd?command=" + order; +// getURL(url); +//} +// +//void firmwareUpdate() { +// myNotAsincActions->make(do_UPGRADE); +//} +// +//void firmwareVersion() { +// String widget = sCmd.next(); +// String page = sCmd.next(); +// String pageNumber = sCmd.next(); +// +// jsonWriteStr(configLiveJson, "firmver", FIRMWARE_VERSION); +// createWidget(widget, page, pageNumber, "anydata", "firmver"); +//} diff --git a/src/ItemsGlobal.cpp b/src/ItemsGlobal.cpp deleted file mode 100644 index 1d1b7e21..00000000 --- a/src/ItemsGlobal.cpp +++ /dev/null @@ -1,386 +0,0 @@ -#include "Cmd.h" -#include "items/ItemsGlobal.h" -#include "Class/NotAsinc.h" -#include "Global.h" -#include "Module/Terminal.h" -#include "Servo/Servos.h" - -static const char *MODULE = "Cmd"; - -Terminal *term = nullptr; - -boolean but[NUM_BUTTONS]; -Bounce *buttons = new Bounce[NUM_BUTTONS]; - -#ifdef ESP8266 -SoftwareSerial *mySerial = nullptr; -#else -HardwareSerial *mySerial = nullptr; -#endif - -void getData(); - -void cmd_init() { - sCmd.addCommand("button-out", buttonOut); - sCmd.addCommand("pwm-out", pwmOut); - sCmd.addCommand("button-in", buttonIn); - - sCmd.addCommand("input-digit", inputDigit); - sCmd.addCommand("input-time", inputTime); - sCmd.addCommand("output-text", textOut); - - sCmd.addCommand("analog-adc", analogAdc); - sCmd.addCommand("ultrasonic-cm", ultrasonicCm); - sCmd.addCommand("dallas-temp", dallasTemp); - - sCmd.addCommand("dht-temp", dhtTemp); - sCmd.addCommand("dht-hum", dhtHum); - - - - - - - - sCmd.addCommand("timerStart", timerStart_); - sCmd.addCommand("timerStop", timerStop_); - -//#ifdef DHT_ENABLED -// sCmd.addCommand("dhtT", dhtT); -// sCmd.addCommand("dhtH", dhtH); -// sCmd.addCommand("dhtPerception", dhtP); -// sCmd.addCommand("dhtComfort", dhtC); -// sCmd.addCommand("dhtDewpoint", dhtD); -//#endif - -#ifdef BMP_ENABLED - sCmd.addCommand("bmp280T", bmp280T); - sCmd.addCommand("bmp280P", bmp280P); -#endif - -#ifdef BME_ENABLED - sCmd.addCommand("bme280T", bme280T); - sCmd.addCommand("bme280P", bme280P); - sCmd.addCommand("bme280H", bme280H); - sCmd.addCommand("bme280A", bme280A); -#endif - -#ifdef STEPPER_ENABLED - sCmd.addCommand("stepper", stepper); - sCmd.addCommand("stepperSet", stepperSet); -#endif - -#ifdef SERVO_ENABLED - sCmd.addCommand("servo", servo_); - sCmd.addCommand("servoSet", servoSet); -#endif - -#ifdef SERIAL_ENABLED - sCmd.addCommand("serialBegin", serialBegin); - sCmd.addCommand("serialWrite", serialWrite); - sCmd.addCommand("getData", getData); -#endif - -#ifdef LOGGING_ENABLED - sCmd.addCommand("logging", logging); -#endif - - sCmd.addCommand("mqtt", mqttOrderSend); - sCmd.addCommand("http", httpOrderSend); - -#ifdef PUSH_ENABLED - sCmd.addCommand("push", pushControl); -#endif - - sCmd.addCommand("firmwareUpdate", firmwareUpdate); - sCmd.addCommand("firmwareVersion", firmwareVersion); - - handle_time_init(); -} - - - - - - - - - - - - -//void text() { -// String number = sCmd.next(); -// String widget_name = sCmd.next(); -// String page_name = sCmd.next(); -// String page_number = sCmd.next(); -// -// createWidget(widget_name, page_name, page_number, "anydata", "text" + number); -//} -// -//void textSet() { -// String number = sCmd.next(); -// String text = sCmd.next(); -// text.replace("_", " "); -// -// if (text.indexOf("-time") >= 0) { -// text.replace("-time", ""); -// text.replace("#", " "); -// text = text + " " + timeNow->getDateTimeDotFormated(); -// } -// -// jsonWriteStr(configLiveJson, "text" + number, text); -// MqttClient::publishStatus("text" + number, text); -//} -//===================================================================================================================================== -//=========================================Модуль шагового мотора====================================================================== -#ifdef STEPPER_ENABLED -//stepper 1 12 13 -void stepper() { - String stepper_number = sCmd.next(); - String pin_step = sCmd.next(); - String pin_dir = sCmd.next(); - - jsonWriteStr(configOptionJson, "stepper" + stepper_number, pin_step + " " + pin_dir); - pinMode(pin_step.toInt(), OUTPUT); - pinMode(pin_dir.toInt(), OUTPUT); -} - -//stepperSet 1 100 5 -void stepperSet() { - String stepper_number = sCmd.next(); - String steps = sCmd.next(); - jsonWriteStr(configOptionJson, "steps" + stepper_number, steps); - String stepper_speed = sCmd.next(); - String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper" + stepper_number), " "); - String pin_dir = deleteBeforeDelimiter(jsonReadStr(configOptionJson, "stepper" + stepper_number), " "); - Serial.println(pin_step); - Serial.println(pin_dir); - if (steps.toInt() > 0) digitalWrite(pin_dir.toInt(), HIGH); - if (steps.toInt() < 0) digitalWrite(pin_dir.toInt(), LOW); - if (stepper_number == "1") { - ts.add( - STEPPER1, stepper_speed.toInt(), [&](void *) { - int steps_int = abs(jsonReadInt(configOptionJson, "steps1") * 2); - static int count; - count++; - String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper1"), " "); - digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); - yield(); - if (count > steps_int) { - digitalWrite(pin_step.toInt(), LOW); - ts.remove(STEPPER1); - count = 0; - } - }, - nullptr, true); - } - if (stepper_number == "2") { - ts.add( - STEPPER2, stepper_speed.toInt(), [&](void *) { - int steps_int = abs(jsonReadInt(configOptionJson, "steps2") * 2); - static int count; - count++; - String pin_step = selectToMarker(jsonReadStr(configOptionJson, "stepper2"), " "); - digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); - yield(); - if (count > steps_int) { - digitalWrite(pin_step.toInt(), LOW); - ts.remove(STEPPER2); - count = 0; - } - }, - nullptr, true); - } -} -#endif -//==================================================================================================================================================== -//=================================================================Сервоприводы======================================================================= -#ifdef SERVO_ENABLED -//servo 1 13 50 Мой#сервопривод Сервоприводы 0 100 0 180 2 -void servo_() { - String number = sCmd.next(); - uint8_t pin = String(sCmd.next()).toInt(); - int value = String(sCmd.next()).toInt(); - - String widget = sCmd.next(); - String page = sCmd.next(); - - int min_value = String(sCmd.next()).toInt(); - int max_value = String(sCmd.next()).toInt(); - int min_deg = String(sCmd.next()).toInt(); - int max_deg = String(sCmd.next()).toInt(); - - String pageNumber = sCmd.next(); - - jsonWriteStr(configOptionJson, "servo_pin" + number, String(pin, DEC)); - - value = map(value, min_value, max_value, min_deg, max_deg); - - Servo *servo = myServo.create(number.toInt(), pin); - servo->write(value); -#ifdef ESP32 - myServo1.attach(servo_pin.toInt(), 500, 2400); - myServo1.write(start_state_int); -#endif - - jsonWriteInt(configOptionJson, "s_min_val" + number, min_value); - jsonWriteInt(configOptionJson, "s_max_val" + number, max_value); - jsonWriteInt(configOptionJson, "s_min_deg" + number, min_deg); - jsonWriteInt(configOptionJson, "s_max_deg" + number, max_deg); - - jsonWriteInt(configLiveJson, "servo" + number, value); - - createWidgetParam(widget, page, pageNumber, "range", "servo" + number, "min", String(min_value), "max", String(max_value), "k", "1"); -} - -void servoSet() { - String number = sCmd.next(); - int value = String(sCmd.next()).toInt(); - - value = map(value, - jsonReadInt(configOptionJson, "s_min_val" + number), - jsonReadInt(configOptionJson, "s_max_val" + number), - jsonReadInt(configOptionJson, "s_min_deg" + number), - jsonReadInt(configOptionJson, "s_max_deg" + number)); - - Servo *servo = myServo.get(number.toInt()); - if (servo) { - servo->write(value); - } - - eventGen("servo", number); - jsonWriteInt(configLiveJson, "servo" + number, value); - MqttClient::publishStatus("servo" + number, String(value, DEC)); -} -#endif -//==================================================================================================================================================== -//=============================================================Модуль сериал порта======================================================================= - -#ifdef SERIAL_ENABLED -void serialBegin() { - String s_speed = sCmd.next(); - String rxPin = sCmd.next(); - String txPin = sCmd.next(); - - if (mySerial) { - delete mySerial; - } - -#ifdef ESP8266 - mySerial = new SoftwareSerial(rxPin.toInt(), txPin.toInt()); - mySerial->begin(s_speed.toInt()); -#else - mySerial = new HardwareSerial(2); - mySerial->begin(rxPin.toInt(), txPin.toInt()); -#endif - - term = new Terminal(mySerial); - term->setEOL(LF); - term->enableColors(false); - term->enableControlCodes(false); - term->enableEcho(false); - term->setOnReadLine([](const char *str) { - String line = String(str); - addCommandLoop(line); - }); -} - -void getData() { - String param = sCmd.next(); - String res = param.length() ? jsonReadStr(configLiveJson, param) : configLiveJson; - if (term) { - term->println(res.c_str()); - } -} - -void serialWrite() { - String payload = sCmd.next(); - if (term) { - term->println(payload.c_str()); - } -} -#endif -//==================================================================================================================================================== -//=================================================Глобальные команды удаленного управления=========================================================== - -void mqttOrderSend() { - String id = sCmd.next(); - String order = sCmd.next(); - - String all_line = jsonReadStr(configSetupJson, "mqttPrefix") + "/" + id + "/order"; - mqtt.publish(all_line.c_str(), order.c_str(), false); -} - -void httpOrderSend() { - String ip = sCmd.next(); - String order = sCmd.next(); - order.replace("_", "%20"); - String url = "http://" + ip + "/cmd?command=" + order; - getURL(url); -} - -void firmwareUpdate() { - myNotAsincActions->make(do_UPGRADE); -} - -void firmwareVersion() { - String widget = sCmd.next(); - String page = sCmd.next(); - String pageNumber = sCmd.next(); - - jsonWriteStr(configLiveJson, "firmver", FIRMWARE_VERSION); - createWidget(widget, page, pageNumber, "anydata", "firmver"); -} - -void addCommandLoop(const String &cmdStr) { - orderBuf += cmdStr; - if (!cmdStr.endsWith(",")) { - orderBuf += ","; - } -} - -void fileExecute(const String &filename) { - String cmdStr = readFile(filename, 2048); - csvExecute(cmdStr); -} - -void csvExecute(String &cmdStr) { - cmdStr.replace(";", " "); - cmdStr += "\r\n"; - cmdStr.replace("\r\n", "\n"); - cmdStr.replace("\r", "\n"); - int count = 0; - while (cmdStr.length()) { - String buf = selectToMarker(cmdStr, "\n"); - count++; - if (count > 1) sCmd.readStr(buf); - cmdStr = deleteBeforeDelimiter(cmdStr, "\n"); - } -} - -void spaceExecute(String &cmdStr) { - cmdStr += "\r\n"; - cmdStr.replace("\r\n", "\n"); - cmdStr.replace("\r", "\n"); - while (cmdStr.length()) { - String buf = selectToMarker(cmdStr, "\n"); - sCmd.readStr(buf); - cmdStr = deleteBeforeDelimiter(cmdStr, "\n"); - } -} - -void loopCmd() { - if (orderBuf.length()) { - String tmp = selectToMarker(orderBuf, ","); //выделяем первую команду rel 5 1, - pm.info("do: " + tmp); - sCmd.readStr(tmp); //выполняем - orderBuf = deleteBeforeDelimiter(orderBuf, ","); //осекаем - } -} - -void loopSerial() { - if (term) { - term->loop(); - } -} diff --git a/src/PushingBox.cpp b/src/PushingBox.cpp index c5c37a79..67e2be14 100644 --- a/src/PushingBox.cpp +++ b/src/PushingBox.cpp @@ -46,11 +46,11 @@ void pushControl() { Serial.println("- sending data..."); - client_push.print("POST /pushingbox HTTP/1.1\n"); - client_push.print("Host: api.pushingbox.com\n"); - client_push.print("Connection: close\n"); - client_push.print("Content-Type: application/x-www-form-urlencoded\n"); - client_push.print("Content-Length: "); + client_push.print(F("POST /pushingbox HTTP/1.1\n")); + client_push.print(F("Host: api.pushingbox.com\n")); + client_push.print(F("Connection: close\n")); + client_push.print(F("Content-Type: application/x-www-form-urlencoded\n")); + client_push.print(F("Content-Length: ")); client_push.print(postStr.length()); client_push.print("\n\n"); client_push.print(postStr); diff --git a/src/SSDP.cpp b/src/SSDP.cpp index 3f0d4544..108bef62 100644 --- a/src/SSDP.cpp +++ b/src/SSDP.cpp @@ -1,36 +1,37 @@ -#ifdef SSDP + +#include +#include "Global.h" +#ifdef SSDP_EN #ifdef ESP8266 #include #endif #ifdef ESP32 #include #endif - -#include -#include "Global.h" - +//39164 +//457684 void SsdpInit() { server.on("/description.xml", HTTP_GET, [](AsyncWebServerRequest* request) { - String ssdpSend = ""; - String ssdpHeder = xmlNode("major", "1"); - ssdpHeder += xmlNode("minor", "0"); - ssdpHeder = xmlNode("specVersion", ssdpHeder); - ssdpHeder += xmlNode("URLBase", "http://" + WiFi.localIP().toString()); - String ssdpDescription = xmlNode("deviceType", "upnp:rootdevice"); - ssdpDescription += xmlNode("friendlyName", jsonReadStr(configSetupJson, "name")); - ssdpDescription += xmlNode("presentationURL", "/"); - ssdpDescription += xmlNode("serialNumber", getChipId()); + String ssdpSend = F(""); + String ssdpHeder = xmlNode(F("major"), "1"); + ssdpHeder += xmlNode(F("minor"), "0"); + ssdpHeder = xmlNode(F("specVersion"), ssdpHeder); + ssdpHeder += xmlNode(F("URLBase"), "http://" + WiFi.localIP().toString()); + String ssdpDescription = xmlNode(F("deviceType"), F("upnp:rootdevice")); + ssdpDescription += xmlNode(F("friendlyName"), jsonReadStr(configSetupJson, F("name"))); + ssdpDescription += xmlNode(F("presentationURL"), "/"); + ssdpDescription += xmlNode(F("serialNumber"), getChipId()); #ifdef ESP8266 - ssdpDescription += xmlNode("modelName", "ESP8266"); + ssdpDescription += xmlNode(F("modelName"), F("ESP8266")); #endif #ifdef ESP32 - ssdpDescription += xmlNode("modelName", "ESP32"); + ssdpDescription += xmlNode(F("modelName"), F("ESP32")); #endif - ssdpDescription += xmlNode("modelNumber", getChipId()); - ssdpDescription += xmlNode("modelURL", "https://github.com/IoTManagerProject/IoTManager/wiki"); - ssdpDescription += xmlNode("manufacturer", "Borisenko Dmitry"); - ssdpDescription += xmlNode("manufacturerURL", "https://github.com/IoTManagerProject/IoTManager"); - ssdpDescription += xmlNode("UDN", "uuid:38323636-4558-4dda-9188-cda0e6" + decToHex(ESP.getChipId(), 6)); + ssdpDescription += xmlNode(F("modelNumber"), getChipId()); + ssdpDescription += xmlNode(F("modelURL"), F("https://github.com/IoTManagerProject/IoTManager/wiki")); + ssdpDescription += xmlNode(F("manufacturer"), F("Borisenko Dmitry")); + ssdpDescription += xmlNode(F("manufacturerURL"), F("https://github.com/IoTManagerProject/IoTManager")); + ssdpDescription += xmlNode(F("UDN"), "uuid:38323636-4558-4dda-9188-cda0e6" + decToHex(ESP.getChipId(), 6)); ssdpDescription = xmlNode("device", ssdpDescription); ssdpHeder += ssdpDescription; ssdpSend += ssdpHeder; @@ -39,8 +40,8 @@ void SsdpInit() { request->send(200, "text/xml", ssdpSend); }); //Если версия 2.0.0 закаментируйте следующую строчку - SSDP.setDeviceType("upnp:rootdevice"); - SSDP.setSchemaURL("description.xml"); + SSDP.setDeviceType(F("upnp:rootdevice")); + SSDP.setSchemaURL(F("description.xml")); SSDP.begin(); } diff --git a/src/Scenario.cpp b/src/Scenario.cpp index 06bf5fa8..00aaa0fc 100644 --- a/src/Scenario.cpp +++ b/src/Scenario.cpp @@ -59,7 +59,7 @@ void loopScenario() { if (flag) { scenBlok = deleteBeforeDelimiter(scenBlok, "\n"); // удаляем строку самого сценария оставляя только команды pm.info("do: " + scenBlok); - spaceExecute(scenBlok); // выполняем все команды + spaceCmdExecute(scenBlok); // выполняем все команды } } } diff --git a/src/Sensors.cpp b/src/Sensors.cpp index 5eb87641..7285c055 100644 --- a/src/Sensors.cpp +++ b/src/Sensors.cpp @@ -1,35 +1,23 @@ -#include "Cmd.h" -#include "Global.h" +//#include "Cmd.h" +//#include "Global.h" -GMedian<10, int> medianFilter; -//DHTesp dht; +//GMedian<10, int> medianFilter; +// +//Adafruit_BMP280 bmp; +//Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor(); +//Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor(); +// +//Adafruit_BME280 bme; +//Adafruit_Sensor *bme_temp = bme.getTemperatureSensor(); +//Adafruit_Sensor *bme_pressure = bme.getPressureSensor(); +//Adafruit_Sensor *bme_humidity = bme.getHumiditySensor(); -Adafruit_BMP280 bmp; -Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor(); -Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor(); +///const String perceptionStr(byte value); +///const String comfortStr(ComfortState value); -Adafruit_BME280 bme; -Adafruit_Sensor *bme_temp = bme.getTemperatureSensor(); -Adafruit_Sensor *bme_pressure = bme.getPressureSensor(); -Adafruit_Sensor *bme_humidity = bme.getHumiditySensor(); +//void bmp280T_reading(); -const String perceptionStr(byte value); -const String comfortStr(ComfortState value); -void bmp280T_reading(); - -void sensorsInit() { - ts.add( - SENSORS, 10000, [&](void *) { - String buf = sensorReadingMap; - while (buf.length()) { - String tmp = selectToMarker(buf, ","); - sCmd.readStr(tmp); - buf = deleteBeforeDelimiter(buf, ","); - } - }, - nullptr, true); -} @@ -256,162 +244,162 @@ void sensorsInit() { //========================================================================================================================================= //=========================================Модуль сенсоров bmp280========================================================================== -//bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1 -void bmp280T() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bmp280T_value_name = value_name; - createWidgetByType(widget_name, page_name, page_number, type, value_name); - bmp.begin(hexStringToUint8(address)); - bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ - Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ - Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ - Adafruit_BMP280::FILTER_X16, /* Filtering. */ - Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ - //bmp_temp->printSensorDetails(); - //sensors_reading_map[9] = 1; -} - -void bmp280T_reading() { - float value = 0; - sensors_event_t temp_event; - bmp_temp->getEvent(&temp_event); - value = temp_event.temperature; - //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value)); - //eventGen(bmp280T_value_name, ""); - //MqttClient::publishStatus(bmp280T_value_name, String(value)); - //Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value)); -} - -//bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2 -void bmp280P() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bmp280P_value_name = value_name; - createWidgetByType(widget_name, page_name, page_number, type, value_name); - bmp.begin(hexStringToUint8(address)); - bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ - Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ - Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ - Adafruit_BMP280::FILTER_X16, /* Filtering. */ - Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ - //bmp_temp->printSensorDetails(); - //sensors_reading_map[10] = 1; -} - -void bmp280P_reading() { - float value = 0; - sensors_event_t pressure_event; - bmp_pressure->getEvent(&pressure_event); - value = pressure_event.pressure; - value = value / 1.333224; - //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value)); - //eventGen(bmp280P_value_name, ""); - //MqttClient::publishStatus(bmp280P_value_name, String(value)); - //Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value)); -} - -//========================================================================================================================================= -//=============================================Модуль сенсоров bme280====================================================================== -//bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1 -void bme280T() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bme280T_value_name = value_name; - //createWidgetByType(widget_name, page_name, page_number, type, value_name); - //bme.begin(hexStringToUint8(address)); - //sensors_reading_map[11] = 1; -} - -void bme280T_reading() { - float value = 0; - value = bme.readTemperature(); - //jsonWriteStr(configLiveJson, bme280T_value_name, String(value)); - //eventGen(bme280T_value_name, ""); - //MqttClient::publishStatus(bme280T_value_name, String(value)); - //Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value)); -} - -//bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1 -void bme280P() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bme280P_value_name = value_name; - //createWidgetByType(widget_name, page_name, page_number, type, value_name); - //bme.begin(hexStringToUint8(address)); - //sensors_reading_map[12] = 1; -} - -void bme280P_reading() { - float value = 0; - value = bme.readPressure(); - value = value / 1.333224 / 100; - //jsonWriteStr(configLiveJson, bme280P_value_name, String(value)); - //eventGen(bme280P_value_name, ""); - //MqttClient::publishStatus(bme280P_value_name, String(value)); - //Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value)); -} - -//bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1 -void bme280H() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bme280H_value_name = value_name; - createWidgetByType(widget_name, page_name, page_number, type, value_name); - bme.begin(hexStringToUint8(address)); - //sensors_reading_map[13] = 1; -} - -void bme280H_reading() { - float value = 0; - value = bme.readHumidity(); - //jsonWriteStr(configLiveJson, bme280H_value_name, String(value)); - //eventGen(bme280H_value_name, ""); - //MqttClient::publishStatus(bme280H_value_name, String(value)); - //Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value)); -} - -//bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1 -void bme280A() { - String value_name = sCmd.next(); - String address = sCmd.next(); - String widget_name = sCmd.next(); - String page_name = sCmd.next(); - String type = sCmd.next(); - String page_number = sCmd.next(); - //bme280A_value_name = value_name; - createWidgetByType(widget_name, page_name, page_number, type, value_name); - bme.begin(hexStringToUint8(address)); - //sensors_reading_map[14] = 1; -} - -void bme280A_reading() { - float value = bme.readAltitude(1013.25); - //jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2)); - - //eventGen(bme280A_value_name, ""); - - //MqttClient::publishStatus(bme280A_value_name, String(value)); - - //Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value)); -} +////bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1 +//void bmp280T() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bmp280T_value_name = value_name; +// createWidgetByType(widget_name, page_name, page_number, type, value_name); +// bmp.begin(hexStringToUint8(address)); +// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ +// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ +// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ +// Adafruit_BMP280::FILTER_X16, /* Filtering. */ +// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ +// //bmp_temp->printSensorDetails(); +// //sensors_reading_map[9] = 1; +//} +// +//void bmp280T_reading() { +// float value = 0; +// sensors_event_t temp_event; +// bmp_temp->getEvent(&temp_event); +// value = temp_event.temperature; +// //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value)); +// //eventGen(bmp280T_value_name, ""); +// //MqttClient::publishStatus(bmp280T_value_name, String(value)); +// //Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value)); +//} +// +////bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2 +//void bmp280P() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bmp280P_value_name = value_name; +// createWidgetByType(widget_name, page_name, page_number, type, value_name); +// bmp.begin(hexStringToUint8(address)); +// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */ +// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */ +// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */ +// Adafruit_BMP280::FILTER_X16, /* Filtering. */ +// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */ +// //bmp_temp->printSensorDetails(); +// //sensors_reading_map[10] = 1; +//} +// +//void bmp280P_reading() { +// float value = 0; +// sensors_event_t pressure_event; +// bmp_pressure->getEvent(&pressure_event); +// value = pressure_event.pressure; +// value = value / 1.333224; +// //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value)); +// //eventGen(bmp280P_value_name, ""); +// //MqttClient::publishStatus(bmp280P_value_name, String(value)); +// //Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value)); +//} +// +////========================================================================================================================================= +////=============================================Модуль сенсоров bme280====================================================================== +////bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1 +//void bme280T() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bme280T_value_name = value_name; +// //createWidgetByType(widget_name, page_name, page_number, type, value_name); +// //bme.begin(hexStringToUint8(address)); +// //sensors_reading_map[11] = 1; +//} +// +//void bme280T_reading() { +// float value = 0; +// value = bme.readTemperature(); +// //jsonWriteStr(configLiveJson, bme280T_value_name, String(value)); +// //eventGen(bme280T_value_name, ""); +// //MqttClient::publishStatus(bme280T_value_name, String(value)); +// //Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value)); +//} +// +////bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1 +//void bme280P() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bme280P_value_name = value_name; +// //createWidgetByType(widget_name, page_name, page_number, type, value_name); +// //bme.begin(hexStringToUint8(address)); +// //sensors_reading_map[12] = 1; +//} +// +//void bme280P_reading() { +// float value = 0; +// value = bme.readPressure(); +// value = value / 1.333224 / 100; +// //jsonWriteStr(configLiveJson, bme280P_value_name, String(value)); +// //eventGen(bme280P_value_name, ""); +// //MqttClient::publishStatus(bme280P_value_name, String(value)); +// //Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value)); +//} +// +////bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1 +//void bme280H() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bme280H_value_name = value_name; +// createWidgetByType(widget_name, page_name, page_number, type, value_name); +// bme.begin(hexStringToUint8(address)); +// //sensors_reading_map[13] = 1; +//} +// +//void bme280H_reading() { +// float value = 0; +// value = bme.readHumidity(); +// //jsonWriteStr(configLiveJson, bme280H_value_name, String(value)); +// //eventGen(bme280H_value_name, ""); +// //MqttClient::publishStatus(bme280H_value_name, String(value)); +// //Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value)); +//} +// +////bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1 +//void bme280A() { +// String value_name = sCmd.next(); +// String address = sCmd.next(); +// String widget_name = sCmd.next(); +// String page_name = sCmd.next(); +// String type = sCmd.next(); +// String page_number = sCmd.next(); +// //bme280A_value_name = value_name; +// createWidgetByType(widget_name, page_name, page_number, type, value_name); +// bme.begin(hexStringToUint8(address)); +// //sensors_reading_map[14] = 1; +//} +// +//void bme280A_reading() { +// float value = bme.readAltitude(1013.25); +// //jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2)); +// +// //eventGen(bme280A_value_name, ""); +// +// //MqttClient::publishStatus(bme280A_value_name, String(value)); +// +// //Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value)); +//} diff --git a/src/Upgrade.cpp b/src/Upgrade.cpp index effac97c..6885c4e9 100644 --- a/src/Upgrade.cpp +++ b/src/Upgrade.cpp @@ -56,10 +56,10 @@ void upgrade_firmware() { WiFiClient wifiClient; #ifdef ESP8266 ESPhttpUpdate.rebootOnUpdate(false); - t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs(wifiClient, "http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin"); + t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs(wifiClient, F("http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin")); #else httpUpdate.rebootOnUpdate(false); - t_httpUpdate_return ret = httpUpdate.updateSpiffs(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin"); + t_httpUpdate_return ret = httpUpdate.updateSpiffs(client_for_upgrade, F("http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin")); #endif if (ret == HTTP_UPDATE_OK) { writeFile(String(DEVICE_SCENARIO_FILE), scanerioBackup); @@ -76,7 +76,7 @@ void upgrade_firmware() { Serial.println("update firmware"); #ifdef ESP8266 - ret = ESPhttpUpdate.update(wifiClient, "http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.ino.bin"); + ret = ESPhttpUpdate.update(wifiClient, F("http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.ino.bin")); #else ret = httpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin"); #endif diff --git a/src/WebServer.cpp b/src/WebServer.cpp index cf4ef379..e6b10f90 100644 --- a/src/WebServer.cpp +++ b/src/WebServer.cpp @@ -1,5 +1,5 @@ #include "HttpServer.h" - +#include "BufferExecute.h" #include "Utils/FileUtils.h" #include "Utils/WebUtils.h" #include "FSEditor.h" @@ -61,7 +61,7 @@ void init() { server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest *request) { String cmdStr = request->getParam("command")->value(); pm.info("do: " + cmdStr); - addCommandLoop(cmdStr); + loopCmdAdd(cmdStr); request->send(200, "text/html", "OK"); }); diff --git a/src/items/ButtonInClass.cpp b/src/items/ButtonInClass.cpp index d8b7270e..6f48a834 100644 --- a/src/items/ButtonInClass.cpp +++ b/src/items/ButtonInClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/ButtonInClass.h" //==========================================Модуль физических кнопок======================================== //button-in switch1 toggle Кнопки Свет 1 pin[2] db[20] diff --git a/src/items/ButtonOutClass.cpp b/src/items/ButtonOutClass.cpp index e78f86ab..6f2b5d03 100644 --- a/src/items/ButtonOutClass.cpp +++ b/src/items/ButtonOutClass.cpp @@ -1,6 +1,6 @@ #include "items/ButtonOutClass.h" -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" //==========================================Модуль кнопок=================================================== //button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1] //========================================================================================================== diff --git a/src/items/InputDigitClass.cpp b/src/items/InputDigitClass.cpp index 4a83ba4f..ff221740 100644 --- a/src/items/InputDigitClass.cpp +++ b/src/items/InputDigitClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/InputClass.h" //==========================================Модуль ввода цифровых значений================================== //input-digit digit1 inputDigit Ввод Введите.цифру 4 st[60] diff --git a/src/items/InputTimeClass.cpp b/src/items/InputTimeClass.cpp index 7be81be8..c996e5b7 100644 --- a/src/items/InputTimeClass.cpp +++ b/src/items/InputTimeClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/InputClass.h" //==========================================Модуль ввода времени============================================ //input-time time1 inputTime Ввод Введите.время 4 st[10-00-00] diff --git a/src/items/OutputTextClass.cpp b/src/items/OutputTextClass.cpp index d25fb8ef..89c6d322 100644 --- a/src/items/OutputTextClass.cpp +++ b/src/items/OutputTextClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/OutputTextClass.h" //===============================================Модуль вывода текста============================================ //output-text;id;anydata;Вывод;Сигнализация;order;st[Обнаружено.движение] diff --git a/src/items/PwmOutClass.cpp b/src/items/PwmOutClass.cpp index 606aff33..42d63d6f 100644 --- a/src/items/PwmOutClass.cpp +++ b/src/items/PwmOutClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/PwmOutClass.h" //==========================================Модуль управления ШИМ=================================================== //pwm-out volume range Кнопки Свет 1 pin[12] st[500] diff --git a/src/items/SensorAnalogClass.cpp b/src/items/SensorAnalogClass.cpp index 8f750db3..103bd368 100644 --- a/src/items/SensorAnalogClass.cpp +++ b/src/items/SensorAnalogClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/SensorAnalogClass.h" #ifdef ANALOG_ENABLED //==============================================Модуль аналогового сенсора=========================================================================================== diff --git a/src/items/SensorDallasClass.cpp b/src/items/SensorDallasClass.cpp index fa0d7681..f0fe6dba 100644 --- a/src/items/SensorDallasClass.cpp +++ b/src/items/SensorDallasClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/SensorDallasClass.h" //#ifdef SensorDallasEnabled //=========================================Модуль ультрозвукового дальномера================================================================== diff --git a/src/items/SensorDhtClass.cpp b/src/items/SensorDhtClass.cpp index c26c7a1c..d323eebd 100644 --- a/src/items/SensorDhtClass.cpp +++ b/src/items/SensorDhtClass.cpp @@ -1,6 +1,6 @@ #include "items/SensorDhtClass.h" -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" //#ifdef SensorDhtEnabled //=========================================DHT Sensor================================================================== //dht-temp;id;anydata;Сенсоры;Температура;order;pin;type[dht11];c[1] diff --git a/src/items/SensorUltrasonicClass.cpp b/src/items/SensorUltrasonicClass.cpp index 3ae3f062..6de999eb 100644 --- a/src/items/SensorUltrasonicClass.cpp +++ b/src/items/SensorUltrasonicClass.cpp @@ -1,4 +1,4 @@ -#include "items/ItemsGlobal.h" +#include "ItemsCmd.h" #include "items/SensorUltrasonicClass.h" //#ifdef SensorUltrasonicEnabled //=========================================Модуль ультрозвукового дальномера================================================================== diff --git a/src/main.cpp b/src/main.cpp index 1a7c31b0..e3c17122 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,6 @@ #include - +#include "BufferExecute.h" #include "Class/CallBackTest.h" #include "Class/NotAsinc.h" #include "Class/ScenarioClass.h" @@ -73,7 +73,7 @@ void setup() { pm.info("Broadcast UDP"); udpInit(); #endif -#ifdef SSDP +#ifdef SSDP_EN pm.info("Ssdp Init"); SsdpInit(); #endif @@ -105,8 +105,8 @@ void loop() { MqttClient::loop(); myButtonIn.loop(); myScenario->loop(); - loopCmd(); - loopSerial(); + loopCmdExecute(); + //loopSerial(); myNotAsincActions->loop(); ts.update();