mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Working version with NotAsinc class
This commit is contained in:
@@ -21,6 +21,33 @@
|
|||||||
{
|
{
|
||||||
"type": "hr"
|
"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",
|
"type": "dropdown",
|
||||||
"name": "help-url",
|
"name": "help-url",
|
||||||
@@ -52,14 +79,61 @@
|
|||||||
"action": "/set?saveItems",
|
"action": "/set?saveItems",
|
||||||
"class": "btn btn-block btn-default"
|
"class": "btn btn-block btn-default"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"type": "hr"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"type": "link",
|
"type": "link",
|
||||||
"title": "Удалить все",
|
"title": "Удалить все",
|
||||||
"action": "/set?delAllItems",
|
"action": "/set?delAllItems",
|
||||||
"class": "btn btn-block btn-default"
|
"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": "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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@@ -42,4 +42,5 @@ extern void firmwareUpdate();
|
|||||||
extern void loadScenario();
|
extern void loadScenario();
|
||||||
|
|
||||||
extern void fileExecute(const String& filename);
|
extern void fileExecute(const String& filename);
|
||||||
extern void stringExecute(String& cmdStr);
|
extern void csvExecute(String& cmdStr);
|
||||||
|
extern void spaceExecute(String& cmdStr);
|
||||||
@@ -85,13 +85,14 @@ enum TimerTask_t { WIFI_SCAN,
|
|||||||
TEST };
|
TEST };
|
||||||
|
|
||||||
enum notAsincActions {
|
enum notAsincActions {
|
||||||
ZERO,
|
do_ZERO,
|
||||||
do_UPGRADE,
|
do_UPGRADE,
|
||||||
do_GETLASTVERSION,
|
do_GETLASTVERSION,
|
||||||
do_UDPDATAPARSE,
|
do_UDPDATAPARSE,
|
||||||
do_MQTTUDP,
|
do_MQTTUDP,
|
||||||
do_BUSSCAN,
|
do_BUSSCAN,
|
||||||
do_MQTTPARAMSCHANGED,
|
do_MQTTPARAMSCHANGED,
|
||||||
|
do_LAST,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum ErrorType_t {
|
enum ErrorType_t {
|
||||||
|
|||||||
@@ -47,6 +47,8 @@ extern Clock* timeNow;
|
|||||||
|
|
||||||
extern TickerScheduler ts;
|
extern TickerScheduler ts;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
extern WiFiClient espClient;
|
extern WiFiClient espClient;
|
||||||
|
|
||||||
extern PubSubClient mqtt;
|
extern PubSubClient mqtt;
|
||||||
|
|||||||
@@ -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};
|
||||||
stringExecute(cmdStr);
|
csvExecute(cmdStr);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
22
src/Cmd.cpp
22
src/Cmd.cpp
@@ -128,6 +128,12 @@ void buttonOut() {
|
|||||||
void buttonOutSet() {
|
void buttonOutSet() {
|
||||||
String key = sCmd.order();
|
String key = sCmd.order();
|
||||||
String state = sCmd.next();
|
String state = sCmd.next();
|
||||||
|
|
||||||
|
Serial.println("==");
|
||||||
|
Serial.println(key);
|
||||||
|
Serial.println(state);
|
||||||
|
Serial.println("==");
|
||||||
|
|
||||||
String pin = jsonReadStr(configOptionJson, key + "_pin");
|
String pin = jsonReadStr(configOptionJson, key + "_pin");
|
||||||
String inv = jsonReadStr(configOptionJson, key + "_inv");
|
String inv = jsonReadStr(configOptionJson, key + "_inv");
|
||||||
if (inv == "") {
|
if (inv == "") {
|
||||||
@@ -461,11 +467,10 @@ void addCommandLoop(const String &cmdStr) {
|
|||||||
|
|
||||||
void fileExecute(const String &filename) {
|
void fileExecute(const String &filename) {
|
||||||
String cmdStr = readFile(filename, 2048);
|
String cmdStr = readFile(filename, 2048);
|
||||||
stringExecute(cmdStr);
|
csvExecute(cmdStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void stringExecute(String &cmdStr) {
|
void csvExecute(String &cmdStr) {
|
||||||
cmdStr.replace("x;","");
|
|
||||||
cmdStr.replace(";"," ");
|
cmdStr.replace(";"," ");
|
||||||
cmdStr += "\r\n";
|
cmdStr += "\r\n";
|
||||||
cmdStr.replace("\r\n", "\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() {
|
void loopCmd() {
|
||||||
if (order_loop.length()) {
|
if (order_loop.length()) {
|
||||||
String tmp = selectToMarker(order_loop, ","); //выделяем первую команду rel 5 1,
|
String tmp = selectToMarker(order_loop, ","); //выделяем первую команду rel 5 1,
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ boolean connect() {
|
|||||||
|
|
||||||
void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
|
void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
|
||||||
String topicStr = String(topic);
|
String topicStr = String(topic);
|
||||||
|
|
||||||
pm.info(topicStr);
|
pm.info(topicStr);
|
||||||
|
|
||||||
String payloadStr;
|
String payloadStr;
|
||||||
@@ -142,6 +143,7 @@ void handleSubscribedUpdates(char* topic, uint8_t* payload, size_t length) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
} else if (topicStr.indexOf("control")) {
|
} else if (topicStr.indexOf("control")) {
|
||||||
|
|
||||||
//iotTeam/12882830-1458415/light 1
|
//iotTeam/12882830-1458415/light 1
|
||||||
|
|
||||||
String key = selectFromMarkerToMarker(topicStr, "/", 3);
|
String key = selectFromMarkerToMarker(topicStr, "/", 3);
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ void loopScenario() {
|
|||||||
block = deleteBeforeDelimiter(block, "\n");
|
block = deleteBeforeDelimiter(block, "\n");
|
||||||
pm.info("do: " + block);
|
pm.info("do: " + block);
|
||||||
// выполняем все команды
|
// выполняем все команды
|
||||||
stringExecute(block);
|
spaceExecute(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
31
src/Web.cpp
31
src/Web.cpp
@@ -29,37 +29,38 @@ void web_init() {
|
|||||||
server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) {
|
server.on("/set", HTTP_GET, [](AsyncWebServerRequest* request) {
|
||||||
|
|
||||||
//==============================presets===========================================================================================================
|
//==============================presets===========================================================================================================
|
||||||
uint8_t preset;
|
//uint8_t preset;
|
||||||
if (parseRequestForPreset(request, preset)) {
|
//if (parseRequestForPreset(request, preset)) {
|
||||||
pm.info("activate #" + String(preset, DEC));
|
// pm.info("activate #" + String(preset, DEC));
|
||||||
String configFile = DEVICE_CONFIG_FILE;
|
// String configFile = DEVICE_CONFIG_FILE;
|
||||||
String scenarioFile = DEVICE_SCENARIO_FILE;
|
// String scenarioFile = DEVICE_SCENARIO_FILE;
|
||||||
copyFile(getConfigFile(preset, CT_CONFIG), configFile);
|
// copyFile(getConfigFile(preset, CT_CONFIG), configFile);
|
||||||
copyFile(getConfigFile(preset, CT_SCENARIO), scenarioFile);
|
// copyFile(getConfigFile(preset, CT_SCENARIO), scenarioFile);
|
||||||
Device_init();
|
// Device_init();
|
||||||
loadScenario();
|
// loadScenario();
|
||||||
request->redirect("/?set.device");
|
// request->redirect("/?set.device");
|
||||||
}
|
//}
|
||||||
|
|
||||||
//==============================list of items====================================================================================================
|
//==============================set.device.json====================================================================================================
|
||||||
if (request->hasArg("addItem")) {
|
if (request->hasArg("addItem")) {
|
||||||
String name = request->getParam("addItem")->value();
|
String name = request->getParam("addItem")->value();
|
||||||
addItem(name);
|
addItem(name);
|
||||||
Device_init();
|
Device_init();
|
||||||
request->redirect("/?setn.device");
|
request->redirect("/?set.device");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request->hasArg("delAllItems")) {
|
if (request->hasArg("delAllItems")) {
|
||||||
delAllItems();
|
delAllItems();
|
||||||
Device_init();
|
Device_init();
|
||||||
request->redirect("/?setn.device");
|
request->redirect("/?set.device");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request->hasArg("saveItems")) {
|
if (request->hasArg("saveItems")) {
|
||||||
Device_init();
|
Device_init();
|
||||||
request->redirect("/?setn.device");
|
request->redirect("/?set.device");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//==============================init====================================================================================================
|
||||||
if (request->hasArg("devinit")) {
|
if (request->hasArg("devinit")) {
|
||||||
Device_init();
|
Device_init();
|
||||||
request->send(200);
|
request->send(200);
|
||||||
|
|||||||
10
src/main.cpp
10
src/main.cpp
@@ -27,6 +27,8 @@ void setup() {
|
|||||||
|
|
||||||
setChipId();
|
setChipId();
|
||||||
|
|
||||||
|
myNotAsincActions = new NotAsinc(do_LAST);
|
||||||
|
|
||||||
pm.info("FS");
|
pm.info("FS");
|
||||||
fileSystemInit();
|
fileSystemInit();
|
||||||
|
|
||||||
@@ -51,9 +53,7 @@ void setup() {
|
|||||||
pm.info("Uptime");
|
pm.info("Uptime");
|
||||||
uptime_init();
|
uptime_init();
|
||||||
|
|
||||||
if (!TELEMETRY_UPDATE_INTERVAL) {
|
pm.info("telemetry");
|
||||||
pm.info("Telemetry: Disabled");
|
|
||||||
}
|
|
||||||
telemetry_init();
|
telemetry_init();
|
||||||
|
|
||||||
pm.info("Updater");
|
pm.info("Updater");
|
||||||
@@ -78,8 +78,6 @@ void setup() {
|
|||||||
|
|
||||||
just_load = false;
|
just_load = false;
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
myNotAsincActions = new NotAsinc(5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
@@ -97,9 +95,9 @@ void loop() {
|
|||||||
#endif
|
#endif
|
||||||
timeNow->loop();
|
timeNow->loop();
|
||||||
MqttClient::loop();
|
MqttClient::loop();
|
||||||
loopCmd();
|
|
||||||
mySwitch->loop();
|
mySwitch->loop();
|
||||||
loopScenario();
|
loopScenario();
|
||||||
|
loopCmd();
|
||||||
loopSerial();
|
loopSerial();
|
||||||
|
|
||||||
myNotAsincActions->loop();
|
myNotAsincActions->loop();
|
||||||
|
|||||||
Reference in New Issue
Block a user