mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Changes
This commit is contained in:
8
include/BufferExecute.h
Normal file
8
include/BufferExecute.h
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
#pragma once
|
||||||
|
#include <Arduino.h>
|
||||||
|
|
||||||
|
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();
|
||||||
@@ -98,7 +98,7 @@ class Scenario {
|
|||||||
if (this->isConditionSatisfied()) { //если вошедшее событие выполняет условие сценария
|
if (this->isConditionSatisfied()) { //если вошедшее событие выполняет условие сценария
|
||||||
_scenBlok = deleteBeforeDelimiter(_scenBlok, "\n");
|
_scenBlok = deleteBeforeDelimiter(_scenBlok, "\n");
|
||||||
//Serial.println(" [>] Making: " + _scenBlok);
|
//Serial.println(" [>] Making: " + _scenBlok);
|
||||||
spaceExecute(_scenBlok);
|
spaceCmdExecute(_scenBlok);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this->delOneScenBlock(); //удалим использованный блок
|
this->delOneScenBlock(); //удалим использованный блок
|
||||||
|
|||||||
@@ -60,6 +60,6 @@ extern void firmwareVersion();
|
|||||||
extern void firmwareUpdate();
|
extern void firmwareUpdate();
|
||||||
extern void loadScenario();
|
extern void loadScenario();
|
||||||
|
|
||||||
extern void fileExecute(const String& filename);
|
extern void fileCmdExecute(const String& filename);
|
||||||
extern void csvExecute(String& cmdStr);
|
extern void csvCmdExecute(String& cmdStr);
|
||||||
extern void spaceExecute(String& cmdStr);
|
extern void spaceCmdExecute(String& cmdStr);
|
||||||
@@ -30,7 +30,7 @@
|
|||||||
//#define WEBSOCKET_ENABLED
|
//#define WEBSOCKET_ENABLED
|
||||||
//#define LAYOUT_IN_RAM
|
//#define LAYOUT_IN_RAM
|
||||||
//#define UDP_ENABLED
|
//#define UDP_ENABLED
|
||||||
#define SSDP
|
#define SSDP_EN
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Sensor
|
* Sensor
|
||||||
|
|||||||
@@ -139,11 +139,7 @@ extern void udpInit();
|
|||||||
extern void do_udp_data_parse();
|
extern void do_udp_data_parse();
|
||||||
extern void do_mqtt_send_settings_to_udp();
|
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();
|
extern void do_update();
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,6 @@ class CmdRunner : public Runner {
|
|||||||
public:
|
public:
|
||||||
void run(const char* cmd, Print* out) override {
|
void run(const char* cmd, Print* out) override {
|
||||||
String cmdStr{cmd};
|
String cmdStr{cmd};
|
||||||
csvExecute(cmdStr);
|
csvCmdExecute(cmdStr);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -1,6 +1,7 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#ifdef SSDP
|
#include "Global.h"
|
||||||
#include <Arduino.h>
|
#include <Arduino.h>
|
||||||
|
#ifdef SSDP_EN
|
||||||
extern void SsdpInit();
|
extern void SsdpInit();
|
||||||
extern String xmlNode(String tags, String data);
|
extern String xmlNode(String tags, String data);
|
||||||
extern String decToHex(uint32_t decValue, byte desiredStringLength);
|
extern String decToHex(uint32_t decValue, byte desiredStringLength);
|
||||||
|
|||||||
71
src/BufferExecute.cpp
Normal file
71
src/BufferExecute.cpp
Normal file
@@ -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();
|
||||||
|
// }
|
||||||
|
//}
|
||||||
@@ -64,7 +64,7 @@ void Device_init() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
fileExecute(String(DEVICE_CONFIG_FILE));
|
fileCmdExecute(String(DEVICE_CONFIG_FILE));
|
||||||
//outcoming_date();
|
//outcoming_date();
|
||||||
}
|
}
|
||||||
//-------------------------------сценарии-----------------------------------------------------
|
//-------------------------------сценарии-----------------------------------------------------
|
||||||
|
|||||||
318
src/ItemsCmd.cpp
Normal file
318
src/ItemsCmd.cpp
Normal file
@@ -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");
|
||||||
|
//}
|
||||||
@@ -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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -46,11 +46,11 @@ void pushControl() {
|
|||||||
|
|
||||||
Serial.println("- sending data...");
|
Serial.println("- sending data...");
|
||||||
|
|
||||||
client_push.print("POST /pushingbox HTTP/1.1\n");
|
client_push.print(F("POST /pushingbox HTTP/1.1\n"));
|
||||||
client_push.print("Host: api.pushingbox.com\n");
|
client_push.print(F("Host: api.pushingbox.com\n"));
|
||||||
client_push.print("Connection: close\n");
|
client_push.print(F("Connection: close\n"));
|
||||||
client_push.print("Content-Type: application/x-www-form-urlencoded\n");
|
client_push.print(F("Content-Type: application/x-www-form-urlencoded\n"));
|
||||||
client_push.print("Content-Length: ");
|
client_push.print(F("Content-Length: "));
|
||||||
client_push.print(postStr.length());
|
client_push.print(postStr.length());
|
||||||
client_push.print("\n\n");
|
client_push.print("\n\n");
|
||||||
client_push.print(postStr);
|
client_push.print(postStr);
|
||||||
|
|||||||
47
src/SSDP.cpp
47
src/SSDP.cpp
@@ -1,36 +1,37 @@
|
|||||||
#ifdef SSDP
|
|
||||||
|
#include <SSDP.h>
|
||||||
|
#include "Global.h"
|
||||||
|
#ifdef SSDP_EN
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
#include <ESP8266SSDP.h>
|
#include <ESP8266SSDP.h>
|
||||||
#endif
|
#endif
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
#include <ESP32SSDP.h>
|
#include <ESP32SSDP.h>
|
||||||
#endif
|
#endif
|
||||||
|
//39164
|
||||||
#include <SSDP.h>
|
//457684
|
||||||
#include "Global.h"
|
|
||||||
|
|
||||||
void SsdpInit() {
|
void SsdpInit() {
|
||||||
server.on("/description.xml", HTTP_GET, [](AsyncWebServerRequest* request) {
|
server.on("/description.xml", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||||
String ssdpSend = "<root xmlns=\"urn:schemas-upnp-org:device-1-0\">";
|
String ssdpSend = F("<root xmlns=\"urn:schemas-upnp-org:device-1-0\">");
|
||||||
String ssdpHeder = xmlNode("major", "1");
|
String ssdpHeder = xmlNode(F("major"), "1");
|
||||||
ssdpHeder += xmlNode("minor", "0");
|
ssdpHeder += xmlNode(F("minor"), "0");
|
||||||
ssdpHeder = xmlNode("specVersion", ssdpHeder);
|
ssdpHeder = xmlNode(F("specVersion"), ssdpHeder);
|
||||||
ssdpHeder += xmlNode("URLBase", "http://" + WiFi.localIP().toString());
|
ssdpHeder += xmlNode(F("URLBase"), "http://" + WiFi.localIP().toString());
|
||||||
String ssdpDescription = xmlNode("deviceType", "upnp:rootdevice");
|
String ssdpDescription = xmlNode(F("deviceType"), F("upnp:rootdevice"));
|
||||||
ssdpDescription += xmlNode("friendlyName", jsonReadStr(configSetupJson, "name"));
|
ssdpDescription += xmlNode(F("friendlyName"), jsonReadStr(configSetupJson, F("name")));
|
||||||
ssdpDescription += xmlNode("presentationURL", "/");
|
ssdpDescription += xmlNode(F("presentationURL"), "/");
|
||||||
ssdpDescription += xmlNode("serialNumber", getChipId());
|
ssdpDescription += xmlNode(F("serialNumber"), getChipId());
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
ssdpDescription += xmlNode("modelName", "ESP8266");
|
ssdpDescription += xmlNode(F("modelName"), F("ESP8266"));
|
||||||
#endif
|
#endif
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
ssdpDescription += xmlNode("modelName", "ESP32");
|
ssdpDescription += xmlNode(F("modelName"), F("ESP32"));
|
||||||
#endif
|
#endif
|
||||||
ssdpDescription += xmlNode("modelNumber", getChipId());
|
ssdpDescription += xmlNode(F("modelNumber"), getChipId());
|
||||||
ssdpDescription += xmlNode("modelURL", "https://github.com/IoTManagerProject/IoTManager/wiki");
|
ssdpDescription += xmlNode(F("modelURL"), F("https://github.com/IoTManagerProject/IoTManager/wiki"));
|
||||||
ssdpDescription += xmlNode("manufacturer", "Borisenko Dmitry");
|
ssdpDescription += xmlNode(F("manufacturer"), F("Borisenko Dmitry"));
|
||||||
ssdpDescription += xmlNode("manufacturerURL", "https://github.com/IoTManagerProject/IoTManager");
|
ssdpDescription += xmlNode(F("manufacturerURL"), F("https://github.com/IoTManagerProject/IoTManager"));
|
||||||
ssdpDescription += xmlNode("UDN", "uuid:38323636-4558-4dda-9188-cda0e6" + decToHex(ESP.getChipId(), 6));
|
ssdpDescription += xmlNode(F("UDN"), "uuid:38323636-4558-4dda-9188-cda0e6" + decToHex(ESP.getChipId(), 6));
|
||||||
ssdpDescription = xmlNode("device", ssdpDescription);
|
ssdpDescription = xmlNode("device", ssdpDescription);
|
||||||
ssdpHeder += ssdpDescription;
|
ssdpHeder += ssdpDescription;
|
||||||
ssdpSend += ssdpHeder;
|
ssdpSend += ssdpHeder;
|
||||||
@@ -39,8 +40,8 @@ void SsdpInit() {
|
|||||||
request->send(200, "text/xml", ssdpSend);
|
request->send(200, "text/xml", ssdpSend);
|
||||||
});
|
});
|
||||||
//Если версия 2.0.0 закаментируйте следующую строчку
|
//Если версия 2.0.0 закаментируйте следующую строчку
|
||||||
SSDP.setDeviceType("upnp:rootdevice");
|
SSDP.setDeviceType(F("upnp:rootdevice"));
|
||||||
SSDP.setSchemaURL("description.xml");
|
SSDP.setSchemaURL(F("description.xml"));
|
||||||
SSDP.begin();
|
SSDP.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ void loopScenario() {
|
|||||||
if (flag) {
|
if (flag) {
|
||||||
scenBlok = deleteBeforeDelimiter(scenBlok, "\n"); // удаляем строку самого сценария оставляя только команды
|
scenBlok = deleteBeforeDelimiter(scenBlok, "\n"); // удаляем строку самого сценария оставляя только команды
|
||||||
pm.info("do: " + scenBlok);
|
pm.info("do: " + scenBlok);
|
||||||
spaceExecute(scenBlok); // выполняем все команды
|
spaceCmdExecute(scenBlok); // выполняем все команды
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
360
src/Sensors.cpp
360
src/Sensors.cpp
@@ -1,35 +1,23 @@
|
|||||||
#include "Cmd.h"
|
//#include "Cmd.h"
|
||||||
#include "Global.h"
|
//#include "Global.h"
|
||||||
|
|
||||||
GMedian<10, int> medianFilter;
|
//GMedian<10, int> medianFilter;
|
||||||
//DHTesp dht;
|
//
|
||||||
|
//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;
|
///const String perceptionStr(byte value);
|
||||||
Adafruit_Sensor *bmp_temp = bmp.getTemperatureSensor();
|
///const String comfortStr(ComfortState value);
|
||||||
Adafruit_Sensor *bmp_pressure = bmp.getPressureSensor();
|
|
||||||
|
|
||||||
Adafruit_BME280 bme;
|
//void bmp280T_reading();
|
||||||
Adafruit_Sensor *bme_temp = bme.getTemperatureSensor();
|
|
||||||
Adafruit_Sensor *bme_pressure = bme.getPressureSensor();
|
|
||||||
Adafruit_Sensor *bme_humidity = bme.getHumiditySensor();
|
|
||||||
|
|
||||||
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==========================================================================
|
//=========================================Модуль сенсоров bmp280==========================================================================
|
||||||
|
|
||||||
//bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1
|
////bmp280T temp1 0x76 Температура#bmp280 Датчики any-data 1
|
||||||
void bmp280T() {
|
//void bmp280T() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bmp280T_value_name = value_name;
|
// //bmp280T_value_name = value_name;
|
||||||
createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
bmp.begin(hexStringToUint8(address));
|
// bmp.begin(hexStringToUint8(address));
|
||||||
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
|
// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
|
||||||
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
|
// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
|
||||||
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
|
// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
|
||||||
Adafruit_BMP280::FILTER_X16, /* Filtering. */
|
// Adafruit_BMP280::FILTER_X16, /* Filtering. */
|
||||||
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
|
// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
|
||||||
//bmp_temp->printSensorDetails();
|
// //bmp_temp->printSensorDetails();
|
||||||
//sensors_reading_map[9] = 1;
|
// //sensors_reading_map[9] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bmp280T_reading() {
|
//void bmp280T_reading() {
|
||||||
float value = 0;
|
// float value = 0;
|
||||||
sensors_event_t temp_event;
|
// sensors_event_t temp_event;
|
||||||
bmp_temp->getEvent(&temp_event);
|
// bmp_temp->getEvent(&temp_event);
|
||||||
value = temp_event.temperature;
|
// value = temp_event.temperature;
|
||||||
//jsonWriteStr(configLiveJson, bmp280T_value_name, String(value));
|
// //jsonWriteStr(configLiveJson, bmp280T_value_name, String(value));
|
||||||
//eventGen(bmp280T_value_name, "");
|
// //eventGen(bmp280T_value_name, "");
|
||||||
//MqttClient::publishStatus(bmp280T_value_name, String(value));
|
// //MqttClient::publishStatus(bmp280T_value_name, String(value));
|
||||||
//Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bmp280T_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
//bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2
|
////bmp280P press1 0x76 Давление#bmp280 Датчики any-data 2
|
||||||
void bmp280P() {
|
//void bmp280P() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bmp280P_value_name = value_name;
|
// //bmp280P_value_name = value_name;
|
||||||
createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
bmp.begin(hexStringToUint8(address));
|
// bmp.begin(hexStringToUint8(address));
|
||||||
bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
|
// bmp.setSampling(Adafruit_BMP280::MODE_NORMAL, /* Operating Mode. */
|
||||||
Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
|
// Adafruit_BMP280::SAMPLING_X2, /* Temp. oversampling */
|
||||||
Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
|
// Adafruit_BMP280::SAMPLING_X16, /* Pressure oversampling */
|
||||||
Adafruit_BMP280::FILTER_X16, /* Filtering. */
|
// Adafruit_BMP280::FILTER_X16, /* Filtering. */
|
||||||
Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
|
// Adafruit_BMP280::STANDBY_MS_500); /* Standby time. */
|
||||||
//bmp_temp->printSensorDetails();
|
// //bmp_temp->printSensorDetails();
|
||||||
//sensors_reading_map[10] = 1;
|
// //sensors_reading_map[10] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bmp280P_reading() {
|
//void bmp280P_reading() {
|
||||||
float value = 0;
|
// float value = 0;
|
||||||
sensors_event_t pressure_event;
|
// sensors_event_t pressure_event;
|
||||||
bmp_pressure->getEvent(&pressure_event);
|
// bmp_pressure->getEvent(&pressure_event);
|
||||||
value = pressure_event.pressure;
|
// value = pressure_event.pressure;
|
||||||
value = value / 1.333224;
|
// value = value / 1.333224;
|
||||||
//jsonWriteStr(configLiveJson, bmp280P_value_name, String(value));
|
// //jsonWriteStr(configLiveJson, bmp280P_value_name, String(value));
|
||||||
//eventGen(bmp280P_value_name, "");
|
// //eventGen(bmp280P_value_name, "");
|
||||||
//MqttClient::publishStatus(bmp280P_value_name, String(value));
|
// //MqttClient::publishStatus(bmp280P_value_name, String(value));
|
||||||
//Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bmp280P_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
//=========================================================================================================================================
|
////=========================================================================================================================================
|
||||||
//=============================================Модуль сенсоров bme280======================================================================
|
////=============================================Модуль сенсоров bme280======================================================================
|
||||||
//bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1
|
////bme280T temp1 0x76 Температура#bmp280 Датчики any-data 1
|
||||||
void bme280T() {
|
//void bme280T() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bme280T_value_name = value_name;
|
// //bme280T_value_name = value_name;
|
||||||
//createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// //createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
//bme.begin(hexStringToUint8(address));
|
// //bme.begin(hexStringToUint8(address));
|
||||||
//sensors_reading_map[11] = 1;
|
// //sensors_reading_map[11] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bme280T_reading() {
|
//void bme280T_reading() {
|
||||||
float value = 0;
|
// float value = 0;
|
||||||
value = bme.readTemperature();
|
// value = bme.readTemperature();
|
||||||
//jsonWriteStr(configLiveJson, bme280T_value_name, String(value));
|
// //jsonWriteStr(configLiveJson, bme280T_value_name, String(value));
|
||||||
//eventGen(bme280T_value_name, "");
|
// //eventGen(bme280T_value_name, "");
|
||||||
//MqttClient::publishStatus(bme280T_value_name, String(value));
|
// //MqttClient::publishStatus(bme280T_value_name, String(value));
|
||||||
//Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bme280T_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
//bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1
|
////bme280P pres1 0x76 Давление#bmp280 Датчики any-data 1
|
||||||
void bme280P() {
|
//void bme280P() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bme280P_value_name = value_name;
|
// //bme280P_value_name = value_name;
|
||||||
//createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// //createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
//bme.begin(hexStringToUint8(address));
|
// //bme.begin(hexStringToUint8(address));
|
||||||
//sensors_reading_map[12] = 1;
|
// //sensors_reading_map[12] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bme280P_reading() {
|
//void bme280P_reading() {
|
||||||
float value = 0;
|
// float value = 0;
|
||||||
value = bme.readPressure();
|
// value = bme.readPressure();
|
||||||
value = value / 1.333224 / 100;
|
// value = value / 1.333224 / 100;
|
||||||
//jsonWriteStr(configLiveJson, bme280P_value_name, String(value));
|
// //jsonWriteStr(configLiveJson, bme280P_value_name, String(value));
|
||||||
//eventGen(bme280P_value_name, "");
|
// //eventGen(bme280P_value_name, "");
|
||||||
//MqttClient::publishStatus(bme280P_value_name, String(value));
|
// //MqttClient::publishStatus(bme280P_value_name, String(value));
|
||||||
//Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bme280P_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
//bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1
|
////bme280H hum1 0x76 Влажность#bmp280 Датчики any-data 1
|
||||||
void bme280H() {
|
//void bme280H() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bme280H_value_name = value_name;
|
// //bme280H_value_name = value_name;
|
||||||
createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
bme.begin(hexStringToUint8(address));
|
// bme.begin(hexStringToUint8(address));
|
||||||
//sensors_reading_map[13] = 1;
|
// //sensors_reading_map[13] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bme280H_reading() {
|
//void bme280H_reading() {
|
||||||
float value = 0;
|
// float value = 0;
|
||||||
value = bme.readHumidity();
|
// value = bme.readHumidity();
|
||||||
//jsonWriteStr(configLiveJson, bme280H_value_name, String(value));
|
// //jsonWriteStr(configLiveJson, bme280H_value_name, String(value));
|
||||||
//eventGen(bme280H_value_name, "");
|
// //eventGen(bme280H_value_name, "");
|
||||||
//MqttClient::publishStatus(bme280H_value_name, String(value));
|
// //MqttClient::publishStatus(bme280H_value_name, String(value));
|
||||||
//Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bme280H_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
//bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1
|
////bme280A altit1 0x76 Высота#bmp280 Датчики any-data 1
|
||||||
void bme280A() {
|
//void bme280A() {
|
||||||
String value_name = sCmd.next();
|
// String value_name = sCmd.next();
|
||||||
String address = sCmd.next();
|
// String address = sCmd.next();
|
||||||
String widget_name = sCmd.next();
|
// String widget_name = sCmd.next();
|
||||||
String page_name = sCmd.next();
|
// String page_name = sCmd.next();
|
||||||
String type = sCmd.next();
|
// String type = sCmd.next();
|
||||||
String page_number = sCmd.next();
|
// String page_number = sCmd.next();
|
||||||
//bme280A_value_name = value_name;
|
// //bme280A_value_name = value_name;
|
||||||
createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
// createWidgetByType(widget_name, page_name, page_number, type, value_name);
|
||||||
bme.begin(hexStringToUint8(address));
|
// bme.begin(hexStringToUint8(address));
|
||||||
//sensors_reading_map[14] = 1;
|
// //sensors_reading_map[14] = 1;
|
||||||
}
|
//}
|
||||||
|
//
|
||||||
void bme280A_reading() {
|
//void bme280A_reading() {
|
||||||
float value = bme.readAltitude(1013.25);
|
// float value = bme.readAltitude(1013.25);
|
||||||
//jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2));
|
// //jsonWriteStr(configLiveJson, bme280A_value_name, String(value, 2));
|
||||||
|
//
|
||||||
//eventGen(bme280A_value_name, "");
|
// //eventGen(bme280A_value_name, "");
|
||||||
|
//
|
||||||
//MqttClient::publishStatus(bme280A_value_name, String(value));
|
// //MqttClient::publishStatus(bme280A_value_name, String(value));
|
||||||
|
//
|
||||||
//Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value));
|
// //Serial.println("[I] sensor '" + bme280A_value_name + "' data: " + String(value));
|
||||||
}
|
//}
|
||||||
|
|||||||
@@ -56,10 +56,10 @@ void upgrade_firmware() {
|
|||||||
WiFiClient wifiClient;
|
WiFiClient wifiClient;
|
||||||
#ifdef ESP8266
|
#ifdef ESP8266
|
||||||
ESPhttpUpdate.rebootOnUpdate(false);
|
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
|
#else
|
||||||
httpUpdate.rebootOnUpdate(false);
|
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
|
#endif
|
||||||
if (ret == HTTP_UPDATE_OK) {
|
if (ret == HTTP_UPDATE_OK) {
|
||||||
writeFile(String(DEVICE_SCENARIO_FILE), scanerioBackup);
|
writeFile(String(DEVICE_SCENARIO_FILE), scanerioBackup);
|
||||||
@@ -76,7 +76,7 @@ void upgrade_firmware() {
|
|||||||
|
|
||||||
Serial.println("update firmware");
|
Serial.println("update firmware");
|
||||||
#ifdef ESP8266
|
#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
|
#else
|
||||||
ret = httpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin");
|
ret = httpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin");
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#include "HttpServer.h"
|
#include "HttpServer.h"
|
||||||
|
#include "BufferExecute.h"
|
||||||
#include "Utils/FileUtils.h"
|
#include "Utils/FileUtils.h"
|
||||||
#include "Utils/WebUtils.h"
|
#include "Utils/WebUtils.h"
|
||||||
#include "FSEditor.h"
|
#include "FSEditor.h"
|
||||||
@@ -61,7 +61,7 @@ void init() {
|
|||||||
server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest *request) {
|
server.on("/cmd", HTTP_GET, [](AsyncWebServerRequest *request) {
|
||||||
String cmdStr = request->getParam("command")->value();
|
String cmdStr = request->getParam("command")->value();
|
||||||
pm.info("do: " + cmdStr);
|
pm.info("do: " + cmdStr);
|
||||||
addCommandLoop(cmdStr);
|
loopCmdAdd(cmdStr);
|
||||||
request->send(200, "text/html", "OK");
|
request->send(200, "text/html", "OK");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/ButtonInClass.h"
|
#include "items/ButtonInClass.h"
|
||||||
//==========================================Модуль физических кнопок========================================
|
//==========================================Модуль физических кнопок========================================
|
||||||
//button-in switch1 toggle Кнопки Свет 1 pin[2] db[20]
|
//button-in switch1 toggle Кнопки Свет 1 pin[2] db[20]
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "items/ButtonOutClass.h"
|
#include "items/ButtonOutClass.h"
|
||||||
|
|
||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
//==========================================Модуль кнопок===================================================
|
//==========================================Модуль кнопок===================================================
|
||||||
//button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1]
|
//button-out light toggle Кнопки Свет 1 pin[12] inv[1] st[1]
|
||||||
//==========================================================================================================
|
//==========================================================================================================
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/InputClass.h"
|
#include "items/InputClass.h"
|
||||||
//==========================================Модуль ввода цифровых значений==================================
|
//==========================================Модуль ввода цифровых значений==================================
|
||||||
//input-digit digit1 inputDigit Ввод Введите.цифру 4 st[60]
|
//input-digit digit1 inputDigit Ввод Введите.цифру 4 st[60]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/InputClass.h"
|
#include "items/InputClass.h"
|
||||||
//==========================================Модуль ввода времени============================================
|
//==========================================Модуль ввода времени============================================
|
||||||
//input-time time1 inputTime Ввод Введите.время 4 st[10-00-00]
|
//input-time time1 inputTime Ввод Введите.время 4 st[10-00-00]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/OutputTextClass.h"
|
#include "items/OutputTextClass.h"
|
||||||
//===============================================Модуль вывода текста============================================
|
//===============================================Модуль вывода текста============================================
|
||||||
//output-text;id;anydata;Вывод;Сигнализация;order;st[Обнаружено.движение]
|
//output-text;id;anydata;Вывод;Сигнализация;order;st[Обнаружено.движение]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/PwmOutClass.h"
|
#include "items/PwmOutClass.h"
|
||||||
//==========================================Модуль управления ШИМ===================================================
|
//==========================================Модуль управления ШИМ===================================================
|
||||||
//pwm-out volume range Кнопки Свет 1 pin[12] st[500]
|
//pwm-out volume range Кнопки Свет 1 pin[12] st[500]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/SensorAnalogClass.h"
|
#include "items/SensorAnalogClass.h"
|
||||||
#ifdef ANALOG_ENABLED
|
#ifdef ANALOG_ENABLED
|
||||||
//==============================================Модуль аналогового сенсора===========================================================================================
|
//==============================================Модуль аналогового сенсора===========================================================================================
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/SensorDallasClass.h"
|
#include "items/SensorDallasClass.h"
|
||||||
//#ifdef SensorDallasEnabled
|
//#ifdef SensorDallasEnabled
|
||||||
//=========================================Модуль ультрозвукового дальномера==================================================================
|
//=========================================Модуль ультрозвукового дальномера==================================================================
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "items/SensorDhtClass.h"
|
#include "items/SensorDhtClass.h"
|
||||||
|
|
||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
//#ifdef SensorDhtEnabled
|
//#ifdef SensorDhtEnabled
|
||||||
//=========================================DHT Sensor==================================================================
|
//=========================================DHT Sensor==================================================================
|
||||||
//dht-temp;id;anydata;Сенсоры;Температура;order;pin;type[dht11];c[1]
|
//dht-temp;id;anydata;Сенсоры;Температура;order;pin;type[dht11];c[1]
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
#include "items/ItemsGlobal.h"
|
#include "ItemsCmd.h"
|
||||||
#include "items/SensorUltrasonicClass.h"
|
#include "items/SensorUltrasonicClass.h"
|
||||||
//#ifdef SensorUltrasonicEnabled
|
//#ifdef SensorUltrasonicEnabled
|
||||||
//=========================================Модуль ультрозвукового дальномера==================================================================
|
//=========================================Модуль ультрозвукового дальномера==================================================================
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
|
|
||||||
#include <SSDP.h>
|
#include <SSDP.h>
|
||||||
|
#include "BufferExecute.h"
|
||||||
#include "Class/CallBackTest.h"
|
#include "Class/CallBackTest.h"
|
||||||
#include "Class/NotAsinc.h"
|
#include "Class/NotAsinc.h"
|
||||||
#include "Class/ScenarioClass.h"
|
#include "Class/ScenarioClass.h"
|
||||||
@@ -73,7 +73,7 @@ void setup() {
|
|||||||
pm.info("Broadcast UDP");
|
pm.info("Broadcast UDP");
|
||||||
udpInit();
|
udpInit();
|
||||||
#endif
|
#endif
|
||||||
#ifdef SSDP
|
#ifdef SSDP_EN
|
||||||
pm.info("Ssdp Init");
|
pm.info("Ssdp Init");
|
||||||
SsdpInit();
|
SsdpInit();
|
||||||
#endif
|
#endif
|
||||||
@@ -105,8 +105,8 @@ void loop() {
|
|||||||
MqttClient::loop();
|
MqttClient::loop();
|
||||||
myButtonIn.loop();
|
myButtonIn.loop();
|
||||||
myScenario->loop();
|
myScenario->loop();
|
||||||
loopCmd();
|
loopCmdExecute();
|
||||||
loopSerial();
|
//loopSerial();
|
||||||
|
|
||||||
myNotAsincActions->loop();
|
myNotAsincActions->loop();
|
||||||
ts.update();
|
ts.update();
|
||||||
|
|||||||
Reference in New Issue
Block a user