Files
IoTManager/src/BufferExecute.cpp
2021-01-05 03:48:52 +01:00

160 lines
5.0 KiB
C++

#include "BufferExecute.h"
#include "Global.h"
#include "SoftUART.h"
//
#include "items/vButtonOut.h"
#include "items/vCountDown.h"
#include "items/vImpulsOut.h"
#include "items/vInOutput.h"
#include "items/vLogging.h"
#include "items/vPwmOut.h"
#include "items/vSensorAnalog.h"
#include "items/vSensorBme280.h"
#include "items/vSensorBmp280.h"
#include "items/vSensorDallas.h"
#include "items/vSensorDht.h"
#include "items/vSensorUltrasonic.h"
#include "items/vSensorUptime.h"
#include "items/vSensorCcs811.h"
void loopCmdAdd(const String& cmdStr) {
if (cmdStr.endsWith(",")) {
orderBuf += cmdStr;
#ifdef uartEnable
if (jsonReadBool(configSetupJson, "uart")) {
if (jsonReadBool(configSetupJson, "uartEvents")) {
if (myUART) {
myUART->print(cmdStr);
SerialPrint("I", "<=UART", cmdStr);
}
}
}
#endif
}
}
void fileCmdExecute(const String& filename) {
String cmdStr = readFile(filename, 4096);
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");
buf = deleteBeforeDelimiter(buf, " "); //отсечка чекбокса
count++;
if (count > 1) {
SerialPrint("I", "Items", buf);
String order = selectToMarker(buf, " "); //отсечка самой команды
if (order == F("button-out")) {
sCmd.addCommand(order.c_str(), buttonOut);
}
#ifdef PwmOutEnable
else if (order == F("pwm-out")) {
sCmd.addCommand(order.c_str(), pwmOut);
}
#endif
else if (order == F("button-in")) {
sCmd.addCommand(order.c_str(), buttonIn);
} else if (order == F("inoutput")) {
sCmd.addCommand(order.c_str(), inOutput);
} else if (order == F("analog-adc")) {
sCmd.addCommand(order.c_str(), analogAdc);
} else if (order == F("ultrasonic-cm")) {
sCmd.addCommand(order.c_str(), ultrasonic);
} else if (order == F("dallas-temp")) {
sCmd.addCommand(order.c_str(), dallas);
}
#ifdef SensorDhtEnabled
else if (order == F("dht")) {
sCmd.addCommand(order.c_str(), dhtSensor);
}
#endif
#ifdef SensorBme280Enabled
else if (order == F("bme280")) {
sCmd.addCommand(order.c_str(), bme280Sensor);
}
#endif
else if (order == F("ccs811")) {
sCmd.addCommand(order.c_str(), ccs811Sensor);
}
else if (order == F("bmp280")) {
sCmd.addCommand(order.c_str(), bmp280Sensor);
} else if (order == F("uptime")) {
sCmd.addCommand(order.c_str(), uptimeSensor);
} else if (order == F("logging")) {
sCmd.addCommand(order.c_str(), logging);
} else if (order == F("impuls-out")) {
sCmd.addCommand(order.c_str(), impuls);
} else if (order == F("count-down")) {
sCmd.addCommand(order.c_str(), countDown);
}
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,
SerialPrint("I", "CMD", "do: " + tmp);
sCmd.readStr(tmp); //выполняем
orderBuf = deleteBeforeDelimiter(orderBuf, ","); //осекаем
}
}
void addKey(String& key, String& keyNumberTable, int number) {
keyNumberTable += key + " " + String(number) + ",";
}
int getKeyNum(String& key, String& keyNumberTable) {
String keyNumberTableBuf = keyNumberTable;
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;
}
String getValue(String& key) {
String live = jsonReadStr(configLiveJson, key);
String store = jsonReadStr(configStoreJson, key);
if (live != nullptr) {
return live;
} else if (store != nullptr) {
return store;
} else if (store == nullptr && live == nullptr) {
return "no value";
} else {
return "data error";
}
}