Working version with NotAsinc class

This commit is contained in:
Dmitry Borisenko
2020-08-26 01:03:45 +03:00
parent 7f7bad305c
commit abbfcec92c
10 changed files with 123 additions and 28 deletions

View File

@@ -21,6 +21,33 @@
{
"type": "hr"
},
{
"type": "h4",
"title": "Device ID: {{chipID}}"
},
{
"type": "h4",
"title": "IP address: {{ip}}"
},
{
"type": "h4",
"title": "Time: {{time}}"
},
{
"type": "h4",
"title": "Uptime: {{uptime}}"
},
{
"type": "h4",
"title": "Build version: {{firmware_version}}"
},
{
"type": "h4",
"title": "LittleFS version: 2.3.5"
},
{
"type": "hr"
},
{
"type": "dropdown",
"name": "help-url",
@@ -52,14 +79,61 @@
"action": "/set?saveItems",
"class": "btn btn-block btn-default"
},
{
"type": "hr"
},
{
"type": "link",
"title": "Удалить все",
"action": "/set?delAllItems",
"class": "btn btn-block btn-default"
},
{
"type": "h2",
"title": "Сценарии"
},
{
"type": "checkbox",
"name": "scen",
"title": "Включить сценарии",
"action": "/set?scen=[[scen]]",
"state": "{{scen}}"
},
{
"type": "file",
"state": "dev_scen.txt",
"style": "width:100%;height:350px",
"title": "Сохранить",
"action": "/set?sceninit",
"class": "btn btn-block btn-default"
},
{
"type": "link",
"title": "Инструкция к системе автоматизации",
"action": "https://github.com/IoTManagerProject/IoTManager/wiki",
"class": "btn btn-block btn-default"
},
{
"type": "link",
"title": "Очистить логи сенсоров",
"action": "/set?cleanlog",
"class": "btn btn-block btn-default"
},
{
"type": "hr"
},
{
"type": "h3",
"name": "my-block",
"style": "position:fixed;top:50%;left:50%;width:400px;margin-left:-200px;text-align:center;",
"class": "hidden"
},
{
"type": "button",
"title": "Обновить прошивку устройства",
"action": "/check",
"response": "[[my-block]]",
"class": "btn btn-block btn-default"
}
]
}

View File

@@ -42,4 +42,5 @@ extern void firmwareUpdate();
extern void loadScenario();
extern void fileExecute(const String& filename);
extern void stringExecute(String& cmdStr);
extern void csvExecute(String& cmdStr);
extern void spaceExecute(String& cmdStr);

View File

@@ -85,13 +85,14 @@ enum TimerTask_t { WIFI_SCAN,
TEST };
enum notAsincActions {
ZERO,
do_ZERO,
do_UPGRADE,
do_GETLASTVERSION,
do_UDPDATAPARSE,
do_MQTTUDP,
do_BUSSCAN,
do_MQTTPARAMSCHANGED,
do_LAST,
};
enum ErrorType_t {

View File

@@ -47,6 +47,8 @@ extern Clock* timeNow;
extern TickerScheduler ts;
extern WiFiClient espClient;
extern PubSubClient mqtt;

View File

@@ -12,6 +12,6 @@ class CmdRunner : public Runner {
public:
void run(const char* cmd, Print* out) override {
String cmdStr{cmd};
stringExecute(cmdStr);
csvExecute(cmdStr);
}
};

View File

@@ -128,6 +128,12 @@ void buttonOut() {
void buttonOutSet() {
String key = sCmd.order();
String state = sCmd.next();
Serial.println("==");
Serial.println(key);
Serial.println(state);
Serial.println("==");
String pin = jsonReadStr(configOptionJson, key + "_pin");
String inv = jsonReadStr(configOptionJson, key + "_inv");
if (inv == "") {
@@ -461,11 +467,10 @@ void addCommandLoop(const String &cmdStr) {
void fileExecute(const String &filename) {
String cmdStr = readFile(filename, 2048);
stringExecute(cmdStr);
csvExecute(cmdStr);
}
void stringExecute(String &cmdStr) {
cmdStr.replace("x;","");
void csvExecute(String &cmdStr) {
cmdStr.replace(";"," ");
cmdStr += "\r\n";
cmdStr.replace("\r\n", "\n");
@@ -479,6 +484,17 @@ void stringExecute(String &cmdStr) {
}
}
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 (order_loop.length()) {
String tmp = selectToMarker(order_loop, ","); //выделяем первую команду rel 5 1,

View File

@@ -122,6 +122,7 @@ boolean connect() {
void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
String topicStr = String(topic);
pm.info(topicStr);
String payloadStr;
@@ -142,6 +143,7 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
#endif
} else if (topicStr.indexOf("control")) {
//iotTeam/12882830-1458415/light 1
String key = selectFromMarkerToMarker(topicStr, "/", 3);

View File

@@ -62,7 +62,7 @@ void loopScenario() {
block = deleteBeforeDelimiter(block, "\n");
pm.info("do: " + block);
// выполняем все команды
stringExecute(block);
spaceExecute(block);
}
}
}

View File

@@ -29,37 +29,38 @@ void web_init() {
server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) {
//==============================presets===========================================================================================================
uint8_t preset;
if (parseRequestForPreset(request, preset)) {
pm.info("activate #" + String(preset, DEC));
String configFile = DEVICE_CONFIG_FILE;
String scenarioFile = DEVICE_SCENARIO_FILE;
copyFile(getConfigFile(preset, CT_CONFIG), configFile);
copyFile(getConfigFile(preset, CT_SCENARIO), scenarioFile);
Device_init();
loadScenario();
request->redirect("/?set.device");
}
//uint8_t preset;
//if (parseRequestForPreset(request, preset)) {
// pm.info("activate #" + String(preset, DEC));
// String configFile = DEVICE_CONFIG_FILE;
// String scenarioFile = DEVICE_SCENARIO_FILE;
// copyFile(getConfigFile(preset, CT_CONFIG), configFile);
// copyFile(getConfigFile(preset, CT_SCENARIO), scenarioFile);
// Device_init();
// loadScenario();
// request->redirect("/?set.device");
//}
//==============================list of items====================================================================================================
//==============================set.device.json====================================================================================================
if (request->hasArg("addItem")) {
String name = request->getParam("addItem")->value();
addItem(name);
Device_init();
request->redirect("/?setn.device");
request->redirect("/?set.device");
}
if (request->hasArg("delAllItems")) {
delAllItems();
Device_init();
request->redirect("/?setn.device");
request->redirect("/?set.device");
}
if (request->hasArg("saveItems")) {
Device_init();
request->redirect("/?setn.device");
request->redirect("/?set.device");
}
//==============================init====================================================================================================
if (request->hasArg("devinit")) {
Device_init();
request->send(200);

View File

@@ -27,6 +27,8 @@ void setup() {
setChipId();
myNotAsincActions = new NotAsinc(do_LAST);
pm.info("FS");
fileSystemInit();
@@ -51,9 +53,7 @@ void setup() {
pm.info("Uptime");
uptime_init();
if (!TELEMETRY_UPDATE_INTERVAL) {
pm.info("Telemetry: Disabled");
}
pm.info("telemetry");
telemetry_init();
pm.info("Updater");
@@ -78,8 +78,6 @@ void setup() {
just_load = false;
initialized = true;
myNotAsincActions = new NotAsinc(5);
}
void loop() {
@@ -97,9 +95,9 @@ void loop() {
#endif
timeNow->loop();
MqttClient::loop();
loopCmd();
mySwitch->loop();
loopScenario();
loopCmd();
loopSerial();
myNotAsincActions->loop();