Files
IoTManager/src/BufferExecute.cpp

170 lines
5.3 KiB
C++
Raw Normal View History

2020-09-04 18:58:03 +03:00
#include "BufferExecute.h"
//
2020-11-04 23:48:21 +03:00
#include "items/SensorDallas.h"
#include "items/ButtonOut.h"
//
2020-09-04 18:58:03 +03:00
#include "Global.h"
#include "Module/Terminal.h"
2020-11-02 01:21:51 +03:00
void loopCmdAdd(const String& cmdStr) {
2020-09-04 18:58:03 +03:00
orderBuf += cmdStr;
if (!cmdStr.endsWith(",")) {
orderBuf += ",";
}
}
2020-11-02 01:21:51 +03:00
void fileCmdExecute(const String& filename) {
2020-10-10 12:04:40 +03:00
String cmdStr = readFile(filename, 4096);
2020-09-04 18:58:03 +03:00
csvCmdExecute(cmdStr);
}
2020-11-02 01:21:51 +03:00
void csvCmdExecute(String& cmdStr) {
2020-09-04 18:58:03 +03:00
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");
2020-11-04 23:48:21 +03:00
2020-10-20 22:55:45 +03:00
buf = deleteBeforeDelimiter(buf, " "); //отсечка чекбокса
2020-11-04 23:48:21 +03:00
2020-09-04 18:58:03 +03:00
count++;
2020-11-04 23:48:21 +03:00
if (count > 1) {
SerialPrint("I", "Items", buf);
String order = selectToMarker(buf, " "); //отсечка самой команды
if (order == F("button-out")) {
sCmd.addCommand(order.c_str(), buttonOut);
}
else if (order == F("pwm-out")) {
sCmd.addCommand(order.c_str(), pwmOut);
}
else if (order == F("button-in")) {
sCmd.addCommand(order.c_str(), buttonIn);
}
else if (order == F("input-digit")) {
sCmd.addCommand(order.c_str(), inputDigit);
}
else if (order == F("input-time")) {
sCmd.addCommand(order.c_str(), inputTime);
}
else if (order == F("output-text")) {
sCmd.addCommand(order.c_str(), textOut);
}
else if (order == F("analog-adc")) {
sCmd.addCommand(order.c_str(), analogAdc);
}
else if (order == F("ultrasonic-cm")) {
sCmd.addCommand(order.c_str(), ultrasonicCm);
}
else if (order == F("dallas-temp")) {
sCmd.addCommand(order.c_str(), dallas);
}
else if (order == F("dht-temp")) {
sCmd.addCommand(order.c_str(), dhtTemp);
}
else if (order == F("dht-hum")) {
sCmd.addCommand(order.c_str(), dhtHum);
}
else if (order == F("bme280-temp")) {
sCmd.addCommand(order.c_str(), bme280Temp);
}
else if (order == F("bme280-hum")) {
sCmd.addCommand(order.c_str(), bme280Hum);
}
else if (order == F("bme280-press")) {
sCmd.addCommand(order.c_str(), bme280Press);
}
else if (order == F("bmp280-temp")) {
sCmd.addCommand(order.c_str(), bmp280Temp);
}
else if (order == F("bmp280-press")) {
sCmd.addCommand(order.c_str(), bmp280Press);
}
else if (order == F("modbus")) {
//sCmd.addCommand(order.c_str(), modbus);
}
else if (order == F("uptime")) {
sCmd.addCommand(order.c_str(), sysUptime);
}
else if (order == F("logging")) {
sCmd.addCommand(order.c_str(), logging);
}
else if (order == F("impuls-out")) {
sCmd.addCommand(order.c_str(), impuls);
}
2020-11-05 02:23:08 +03:00
2020-11-04 23:48:21 +03:00
sCmd.readStr(buf);
}
2020-09-04 18:58:03 +03:00
cmdStr = deleteBeforeDelimiter(cmdStr, "\n");
}
}
2020-11-02 01:21:51 +03:00
void spaceCmdExecute(String& cmdStr) {
2020-09-04 18:58:03 +03:00
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,
2020-10-20 22:55:45 +03:00
SerialPrint("I", "CMD", "do: " + tmp);
sCmd.readStr(tmp); //выполняем
2020-09-04 18:58:03 +03:00
orderBuf = deleteBeforeDelimiter(orderBuf, ","); //осекаем
}
}
void sensorsInit() {
ts.add(
2020-11-02 01:21:51 +03:00
SENSORS10SEC, 10000, [&](void*) {
2020-10-20 22:55:45 +03:00
String buf = sensorReadingMap10sec;
while (buf.length()) {
String tmp = selectToMarker(buf, ",");
sCmd.readStr(tmp);
buf = deleteBeforeDelimiter(buf, ",");
}
},
nullptr, true);
ts.add(
2020-11-02 01:21:51 +03:00
SENSORS30SEC, 30000, [&](void*) {
2020-10-20 23:58:23 +03:00
String buf = sensorReadingMap30sec;
2020-09-04 18:58:03 +03:00
while (buf.length()) {
String tmp = selectToMarker(buf, ",");
sCmd.readStr(tmp);
buf = deleteBeforeDelimiter(buf, ",");
}
},
nullptr, true);
}
2020-11-02 15:20:04 +03:00
void addKey(String& key, String& keyNumberTable, int number) {
keyNumberTable += key + " " + String(number) + ",";
2020-11-02 01:21:51 +03:00
}
2020-11-02 15:20:04 +03:00
int getKeyNum(String& key, String& keyNumberTable) {
String keyNumberTableBuf = keyNumberTable;
2020-11-04 23:48:21 +03:00
2020-11-02 01:21:51 +03:00
int number = -1;
while (keyNumberTableBuf.length()) {
String tmp = selectToMarker(keyNumberTableBuf, ",");
String keyIncomming = selectToMarker(tmp, " ");
if (keyIncomming == key) {
number = selectToMarkerLast(tmp, " ").toInt();
}
keyNumberTableBuf = deleteBeforeDelimiter(keyNumberTableBuf, ",");
}
return number;
}