From 0cf60ab21493eb7e789bd5a770ec6445dd265a27 Mon Sep 17 00:00:00 2001 From: Dmitry Borisenko <49808844+DmitryBorisenko33@users.noreply.github.com> Date: Tue, 24 Mar 2020 19:01:11 +0100 Subject: [PATCH] add logging date support --- Cmd.ino | 218 +++++++++--------- Init.ino | 2 +- Sensors.ino | 90 +++----- Time.ino | 19 +- Timers.ino | 2 +- Upgrade.ino | 27 ++- data/configs/analog.config.txt | 2 +- data/configs/dallas.config.txt | 2 +- data/configs/dht11.config.txt | 2 +- data/configs/dht22.config.txt | 2 +- data/configs/firmware.config.txt | 5 +- data/configs/level.config.txt | 4 +- data/firmware.config.txt | 5 +- .../outstanding/widget.select.json} | 0 .../widget.anyData.json} | 0 data/widgets/widget.chart.json | 5 + data/widgets/widget.fillGauge.json | 7 + .../widget.inputDate.json} | 0 .../widget.inputNum.json} | 0 .../widget.inputText.json} | 0 .../widget.inputTime.json} | 0 .../widget.progLine.json} | 0 .../widget.progRound.json} | 0 .../widget.range.json} | 0 .../widget.toggle.json} | 0 mqtt.ino | 45 ++-- set.h | 2 +- 27 files changed, 232 insertions(+), 207 deletions(-) rename data/{vigets/viget.select.json => widgets/outstanding/widget.select.json} (100%) rename data/{vigets/viget.anydata.json => widgets/widget.anyData.json} (100%) create mode 100644 data/widgets/widget.chart.json create mode 100644 data/widgets/widget.fillGauge.json rename data/{vigets/viget.inputdate.json => widgets/widget.inputDate.json} (100%) rename data/{vigets/viget.inputNum.json => widgets/widget.inputNum.json} (100%) rename data/{vigets/viget.inputText.json => widgets/widget.inputText.json} (100%) rename data/{vigets/viget.inputTime.json => widgets/widget.inputTime.json} (100%) rename data/{vigets/viget.progressL.json => widgets/widget.progLine.json} (100%) rename data/{vigets/viget.progressR.json => widgets/widget.progRound.json} (100%) rename data/{vigets/viget.range.json => widgets/widget.range.json} (100%) rename data/{vigets/viget.toggle.json => widgets/widget.toggle.json} (100%) diff --git a/Cmd.ino b/Cmd.ino index 656539e3..d9bd1313 100644 --- a/Cmd.ino +++ b/Cmd.ino @@ -4,8 +4,6 @@ void CMD_init() { sCmd.addCommand("buttonSet", buttonSet); sCmd.addCommand("buttonChange", buttonChange); - //sCmd.addCommand("button_touch", button_touch); - sCmd.addCommand("pinSet", pinSet); sCmd.addCommand("pinChange", pinChange); @@ -49,22 +47,6 @@ void CMD_init() { handle_time_init(); - //======новые виджеты ver2.0=======// - /* - sCmd.addCommand("inputText", inputText); - sCmd.addCommand("inputTextSet", inputTextSet); - - sCmd.addCommand("inputTime", inputTime); - sCmd.addCommand("inputTimeSet", inputTimeSet); - - sCmd.addCommand("inputDate", inputDate); - sCmd.addCommand("inputDateSet", inputDateSet); - - sCmd.addCommand("inputDate", inputDate); - - //sCmd.addCommand("inputDropdown", inputDropdown); - */ - //=================================// } @@ -75,7 +57,7 @@ void button() { String button_number = sCmd.next(); String button_param = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String start_state = sCmd.next(); String page_number = sCmd.next(); @@ -107,7 +89,7 @@ void button() { str = deleteBeforeDelimiter(str, ","); } } - createViget (viget_name, page_name, page_number, "vigets/viget.toggle.json", "buttonSet" + button_number); + createWidget (widget_name, page_name, page_number, "widgets/widget.toggle.json", "buttonSet" + button_number); } void buttonSet() { @@ -178,8 +160,8 @@ void pwm() { static boolean flag = true; String pwm_number = sCmd.next(); String pwm_pin = sCmd.next(); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); String start_state = sCmd.next(); String page_number = sCmd.next(); @@ -192,7 +174,7 @@ void pwm() { //analogWriteFreq(32000); jsonWrite(configJson, "pwmSet" + pwm_number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.range.json", "pwmSet" + pwm_number); + createWidget (widget_name, page_name, page_number, "widgets/widget.range.json", "pwmSet" + pwm_number); } void pwmSet() { @@ -250,14 +232,14 @@ void handleButton() { void inputDigit() { String value_name = sCmd.next(); String number = value_name.substring(5); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); page_name.replace("#", " "); String start_state = sCmd.next(); String page_number = sCmd.next(); jsonWrite(configJson, "digitSet" + number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.inputNum.json", "digitSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.inputNum.json", "digitSet" + number); } void digitSet() { String number = sCmd.next(); @@ -270,14 +252,14 @@ void digitSet() { void inputTime() { String value_name = sCmd.next(); String number = value_name.substring(4); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); page_name.replace("#", " "); String start_state = sCmd.next(); String page_number = sCmd.next(); jsonWrite(configJson, "timeSet" + number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "timeSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "timeSet" + number); } void timeSet() { String number = sCmd.next(); @@ -302,11 +284,11 @@ void handle_time_init() { void text() { String number = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String page_number = sCmd.next(); - createViget (viget_name, page_name, page_number, "vigets/viget.anydata.json", "textSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.anyData.json", "textSet" + number); } @@ -389,14 +371,14 @@ void stepperSet() { /* void inputText() { String number = sCmd.next(); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); page_name.replace("#", " "); String start_state = sCmd.next(); String page_number = sCmd.next(); jsonWrite(configJson, "inputTextSet" + number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.inputText.json", "inputTextSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.inputText.json", "inputTextSet" + number); } void inputTextSet() { String number = sCmd.next(); @@ -407,14 +389,14 @@ void stepperSet() { void inputTime() { String number = sCmd.next(); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); page_name.replace("#", " "); String start_state = sCmd.next(); String page_number = sCmd.next(); jsonWrite(configJson, "inputTimeSet" + number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.inputTime.json", "inputTimeSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "inputTimeSet" + number); } void inputTimeSet() { String number = sCmd.next(); @@ -428,14 +410,14 @@ void stepperSet() { void inputDate() { String number = sCmd.next(); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); page_name.replace("#", " "); String start_state = sCmd.next(); String page_number = sCmd.next(); jsonWrite(configJson, "inputDateSet" + number, start_state); - createViget (viget_name, page_name, page_number, "vigets/viget.inputDate.json", "inputDateSet" + number); + createWidget (widget_name, page_name, page_number, "widgets/widget.inputDate.json", "inputDateSet" + number); } void inputDateSet() { String number = sCmd.next(); @@ -504,7 +486,7 @@ void handleCMD_loop() { //======================================================================================================================================= void txtExecution(String file) { - String command_all = readFile(file, 2048) + "\r\n"; //2048 + String command_all = readFile(file, 2048) + "\r\n"; command_all.replace("\r\n", "\n"); command_all.replace("\r", "\n"); @@ -512,113 +494,133 @@ void txtExecution(String file) { while (command_all.length() != 0) { String tmp = selectToMarker (command_all, "\n"); - //if (tmp.indexOf("//") < 0) sCmd.readStr(tmp); command_all = deleteBeforeDelimiter(command_all, "\n"); } } + void stringExecution(String str) { - String command_all = str + "\r\n"; //"\r\n" + str = str + "\r\n"; - command_all.replace("\r\n", "\n"); - command_all.replace("\r", "\n"); + str.replace("\r\n", "\n"); + str.replace("\r", "\n"); - while (command_all.length() != 0) { + while (str.length() != 0) { - String tmp = selectToMarker (command_all, "\n"); - //if (tmp.indexOf("//") < 0) + String tmp = selectToMarker (str, "\n"); sCmd.readStr(tmp); - command_all = deleteBeforeDelimiter(command_all, "\n"); + str = deleteBeforeDelimiter(str, "\n"); } } //====================================================================================================================== //===============================================Создание виджетов======================================================= -void createViget (String viget_name, String page_name, String page_number, String file, String topic) { +void createWidget (String widget_name, String page_name, String page_number, String file, String topic) { - String viget; - viget = readFile(file, 1024); + String widget; + widget = readFile(file, 1024); - if (viget == "Failed") return; - if (viget == "Large") return; + if (widget == "Failed") return; + if (widget == "Large") return; - viget_name.replace("#", " "); + widget_name.replace("#", " "); page_name.replace("#", " "); - jsonWrite(viget, "page", page_name); - jsonWrite(viget, "order", page_number); - jsonWrite(viget, "descr", viget_name); - jsonWrite(viget, "topic", prex + "/" + topic); - all_vigets += viget + "\r\n"; - viget = ""; + jsonWrite(widget, "page", page_name); + jsonWrite(widget, "order", page_number); + jsonWrite(widget, "descr", widget_name); + jsonWrite(widget, "topic", prex + "/" + topic); + all_widgets += widget + "\r\n"; + widget = ""; +} + +void createChart (String widget_name, String page_name, String page_number, String file, String topic, String maxCount) { + + String widget; + widget = readFile(file, 1024); + + if (widget == "Failed") return; + if (widget == "Large") return; + + widget_name.replace("#", " "); + page_name.replace("#", " "); + + jsonWrite(widget, "page", page_name); + jsonWrite(widget, "order", page_number); + jsonWrite(widget, "descr", widget_name); + jsonWrite(widget, "series", widget_name); + jsonWrite(widget, "maxCount", maxCount); + jsonWrite(widget, "topic", prex + "/" + topic); + all_widgets += widget + "\r\n"; + widget = ""; } /* - void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value) { + void createWidget (String widget_name, String page_name, String page_number, String file, String topic, String key, String value) { - String viget; - viget = readFile(file, 1024); + String widget; + widget = readFile(file, 1024); - if (viget == "Failed") return; - if (viget == "Large") return; + if (widget == "Failed") return; + if (widget == "Large") return; - viget_name.replace("#", " "); + widget_name.replace("#", " "); page_name.replace("#", " "); value.replace("#", " "); - viget = vidgetConfigWrite(viget, key, value); + widget = vidgetConfigWrite(widget, key, value); - jsonWrite(viget, "page", page_name); - jsonWrite(viget, "pageId", page_number); - jsonWrite(viget, "descr", viget_name); - jsonWrite(viget, "topic", prex + "/" + topic); + jsonWrite(widget, "page", page_name); + jsonWrite(widget, "pageId", page_number); + jsonWrite(widget, "descr", widget_name); + jsonWrite(widget, "topic", prex + "/" + topic); - all_vigets += viget + "\r\n"; - viget = ""; + all_widgets += widget + "\r\n"; + widget = ""; } - void createViget (String viget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) { + void createWidget (String widget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) { - String viget; - viget = readFile(file, 1024); + String widget; + widget = readFile(file, 1024); - if (viget == "Failed") return; - if (viget == "Large") return; + if (widget == "Failed") return; + if (widget == "Large") return; - viget_name.replace("#", " "); + widget_name.replace("#", " "); page_name.replace("#", " "); value.replace("#", " "); - viget = vidgetConfigWrite(viget, key, value); - viget = vidgetConfigWrite(viget, key2, value2); + widget = vidgetConfigWrite(widget, key, value); + widget = vidgetConfigWrite(widget, key2, value2); - jsonWrite(viget, "page", page_name); - jsonWrite(viget, "pageId", page_number); - jsonWrite(viget, "descr", viget_name); - jsonWrite(viget, "topic", prex + "/" + topic); + jsonWrite(widget, "page", page_name); + jsonWrite(widget, "pageId", page_number); + jsonWrite(widget, "descr", widget_name); + jsonWrite(widget, "topic", prex + "/" + topic); - all_vigets += viget + "\r\n"; - viget = ""; + all_widgets += widget + "\r\n"; + widget = ""; } -String vidgetConfigWrite(String viget, String key, String value) { +String vidgetConfigWrite(String widget, String key, String value) { - if (viget == "") return ""; - if (viget == "{}") return ""; - int psn1 = viget.indexOf("{"); + if (widget == "") return ""; + if (widget == "{}") return ""; + int psn1 = widget.indexOf("{"); if (psn1 != -1) { - psn1 = viget.indexOf("{", psn1 + 1); + psn1 = widget.indexOf("{", psn1 + 1); if (psn1 != -1) { - int psn2 = viget.indexOf("}", psn1); - String WigetConfig = viget.substring(psn1, psn2) + "}"; + int psn2 = widget.indexOf("}", psn1); + String WigetConfig = widget.substring(psn1, psn2) + "}"; jsonWrite(WigetConfig, key, value); - String part1 = viget.substring(0, psn1); - viget = part1 + WigetConfig + "}"; - return viget; + String part1 = widget.substring(0, psn1); + widget = part1 + WigetConfig + "}"; + return widget; } } @@ -641,23 +643,23 @@ String vidgetConfigWrite(String viget, String key, String value) { void delAlert() { String alert_id = sCmd.next(); - delViget(alert_id); + delwidget(alert_id); sendAllWigets(); } - void delViget(String text_in_viget) { - String viget = all_vigets; - while (viget.length() != 0) { - String tmp = selectToMarkerPlus (viget, "\r\n", 2); - if (tmp.indexOf(text_in_viget) > 0) { + void delwidget(String text_in_widget) { + String widget = all_widgets; + while (widget.length() != 0) { + String tmp = selectToMarkerPlus (widget, "\r\n", 2); + if (tmp.indexOf(text_in_widget) > 0) { - all_vigets.replace(tmp, ""); - //Serial.println(all_vigets); + all_widgets.replace(tmp, ""); + //Serial.println(all_widgets); - viget = deleteBeforeDelimiter(viget, "\r\n"); + widget = deleteBeforeDelimiter(widget, "\r\n"); } else { - viget = deleteBeforeDelimiter(viget, "\r\n"); + widget = deleteBeforeDelimiter(widget, "\r\n"); } } } diff --git a/Init.ino b/Init.ino index ad8df97b..bb36f33c 100644 --- a/Init.ino +++ b/Init.ino @@ -43,7 +43,7 @@ void Device_init() { ts.remove(STEPPER1); ts.remove(STEPPER2); - all_vigets = ""; + all_widgets = ""; txtExecution("firmware.config.txt"); //outcoming_date(); } diff --git a/Sensors.ino b/Sensors.ino index c86bac79..3c1986f0 100644 --- a/Sensors.ino +++ b/Sensors.ino @@ -2,7 +2,7 @@ //=========================================Модуль аналогового сенсора============================================================ void analog() { String pin = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String type = sCmd.next(); String analog_start = sCmd.next(); @@ -14,7 +14,7 @@ void analog() { jsonWrite(optionJson, "analog_end", analog_end); jsonWrite(optionJson, "analog_start_out", analog_start_out); jsonWrite(optionJson, "analog_end_out", analog_end_out); - choose_viget_and_create(viget_name, page_name, page_number, type, "analog"); + choose_widget_and_create(widget_name, page_name, page_number, type, "analog"); ts.add(ANALOG_, analog_update_int, [&](void*) { static int analog_old; #ifdef ESP32 @@ -45,7 +45,7 @@ void analog() { //=================================================================================================================================== //=========================================Модуль измерения уровня в баке============================================================ void level() { - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String type = sCmd.next(); String empty_level = sCmd.next(); @@ -55,7 +55,7 @@ void level() { jsonWrite(optionJson, "full_level", full_level); pinMode(14, OUTPUT); pinMode(12, INPUT); - choose_viget_and_create(viget_name, page_name, page_number, type, "level"); + choose_widget_and_create(widget_name, page_name, page_number, type, "level"); ts.add(LEVEL, tank_level_shooting_interval, [&](void*) { long duration_; int distance_cm; @@ -94,7 +94,7 @@ void level() { //=========================================Модуль температурного сенсора ds18b20============================================================ void dallas() { String pin = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); @@ -102,7 +102,7 @@ void dallas() { sensors.setOneWire(oneWire); sensors.begin(); sensors.setResolution(12); - choose_viget_and_create(viget_name, page_name, page_number, type, "dallas"); + choose_widget_and_create(widget_name, page_name, page_number, type, "dallas"); ts.add(DALLAS, temp_update_int, [&](void*) { float temp = 0; static float temp_old; @@ -126,7 +126,7 @@ void dallas() { void dhtT() { String sensor_type = sCmd.next(); String pin = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); @@ -136,7 +136,7 @@ void dhtT() { if (sensor_type == "DHT22") { dht.setup(pin.toInt(), DHTesp::DHT22); } - choose_viget_and_create(viget_name, page_name, page_number, type, "dhtT"); + choose_widget_and_create(widget_name, page_name, page_number, type, "dhtT"); ts.add(DHTT, dhtT_update_int, [&](void*) { //dht.getMinimumSamplingPeriod() float value = 0; static float value_old; @@ -164,7 +164,7 @@ void dhtT() { void dhtH() { String sensor_type = sCmd.next(); String pin = sCmd.next(); - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String type = sCmd.next(); String page_number = sCmd.next(); @@ -174,7 +174,7 @@ void dhtH() { if (sensor_type == "DHT22") { dht.setup(pin.toInt(), DHTesp::DHT22); } - choose_viget_and_create(viget_name, page_name, page_number, type, "dhtH"); + choose_widget_and_create(widget_name, page_name, page_number, type, "dhtH"); ts.add(DHTH, dhtH_update_int , [&](void*) { //dht.getMinimumSamplingPeriod() int value = 0; static int value_old; @@ -199,10 +199,10 @@ void dhtH() { } void dhtPerception() { - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String page_number = sCmd.next(); - choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtPerception"); + choose_widget_and_create(widget_name, page_name, page_number, "any-data", "dhtPerception"); ts.add(DHTP, dht_calculation_update_int, [&](void*) { byte value; if (dht.getStatus() != 0) { @@ -232,10 +232,10 @@ String perception(byte value) { } void dhtComfort() { - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String page_number = sCmd.next(); - choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtComfort"); + choose_widget_and_create(widget_name, page_name, page_number, "any-data", "dhtComfort"); ts.add(DHTC, dht_calculation_update_int, [&](void*) { float value; ComfortState cf; @@ -288,10 +288,10 @@ void dhtComfort() { } void dhtDewpoint() { - String viget_name = sCmd.next(); + String widget_name = sCmd.next(); String page_name = sCmd.next(); String page_number = sCmd.next(); - choose_viget_and_create(viget_name, page_name, page_number, "any-data", "dhtDewpoint"); + choose_widget_and_create(widget_name, page_name, page_number, "any-data", "dhtDewpoint"); ts.add(DHTD, dht_calculation_update_int, [&](void*) { float value; if (dht.getStatus() != 0) { @@ -309,12 +309,12 @@ void dhtDewpoint() { } -void choose_viget_and_create(String viget_name, String page_name, String page_number, String type, String topik) { - - if (type == "any-data") createViget (viget_name, page_name, page_number, "vigets/viget.anydata.json", topik); - if (type == "progress-line") createViget (viget_name, page_name, page_number, "vigets/viget.progressL.json", topik); - if (type == "progress-round") createViget (viget_name, page_name, page_number, "vigets/viget.progressR.json", topik); +void choose_widget_and_create(String widget_name, String page_name, String page_number, String type, String topik) { + if (type == "any-data") createWidget (widget_name, page_name, page_number, "widgets/widget.anyData.json", topik); + if (type == "progress-line") createWidget (widget_name, page_name, page_number, "widgets/widget.progLine.json", topik); + if (type == "progress-round") createWidget (widget_name, page_name, page_number, "widgets/widget.progRound.json", topik); + if (type == "fill-gauge") createWidget (widget_name, page_name, page_number, "widgets/widget.fillGauge.json", topik); } //====================================================================================================================== @@ -327,26 +327,24 @@ void logging() { String sensor_name = sCmd.next(); String period_min = sCmd.next(); String maxCount = sCmd.next(); - String viget_name = sCmd.next(); - viget_name.replace("#", " "); + String widget_name = sCmd.next(); + widget_name.replace("#", " "); String page_name = sCmd.next(); String page_number = sCmd.next(); if (sensor_name == "analog") jsonWrite(optionJson, "analog_logging_count", maxCount); if (sensor_name == "level") jsonWrite(optionJson, "level_logging_count", maxCount); if (sensor_name == "dallas") jsonWrite(optionJson, "dallas_logging_count", maxCount); - if (sensor_name == "ph") jsonWrite(optionJson, "ph_logging_count", maxCount); - /* - if (sensor_name == "analog") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loganalog", "maxCount", maxCount); - if (sensor_name == "level") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "loglevel", "maxCount", maxCount); - if (sensor_name == "dallas") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logdallas", "maxCount", maxCount); - if (sensor_name == "ph") createViget (viget_name, page_name, page_number, "vigets/viget.chart.json", "logph", "maxCount", maxCount); - */ + + if (sensor_name == "analog") createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", "loganalog", maxCount); + if (sensor_name == "level") createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", "loglevel", maxCount); + if (sensor_name == "dallas") createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", "logdallas", maxCount); + if (sensor_name == "analog") { flagLoggingAnalog = true; ts.remove(ANALOG_LOG); ts.add(ANALOG_LOG, period_min.toInt() * 1000 * 60, [&](void*) { - deleteOldDate("log.analog.txt", jsonReadtoInt(optionJson, "analog_logging_count"), jsonRead(configJson, "analog"), false); + deleteOldDate("log.analog.txt", jsonReadtoInt(optionJson, "analog_logging_count"), jsonRead(configJson, "analog")); }, nullptr, true); } @@ -354,7 +352,7 @@ void logging() { flagLoggingLevel = true; ts.remove(LEVEL_LOG); ts.add(LEVEL_LOG, period_min.toInt() * 1000 * 60, [&](void*) { - deleteOldDate("log.level.txt", jsonReadtoInt(optionJson, "level_logging_count"), jsonRead(configJson, "level"), false); + deleteOldDate("log.level.txt", jsonReadtoInt(optionJson, "level_logging_count"), jsonRead(configJson, "level")); }, nullptr, true); } @@ -362,26 +360,16 @@ void logging() { flagLoggingDallas = true; ts.remove(DALLAS_LOG); ts.add(DALLAS_LOG, period_min.toInt() * 1000 * 60, [&](void*) { - deleteOldDate("log.dallas.txt", jsonReadtoInt(optionJson, "dallas_logging_count"), jsonRead(configJson, "dallas"), false); + deleteOldDate("log.dallas.txt", jsonReadtoInt(optionJson, "dallas_logging_count"), jsonRead(configJson, "dallas")); }, nullptr, true); } } -void deleteOldDate(String file, int seted_number_of_lines, String date_to_add, boolean date_time) { - - String current_time; - - if (date_time) { - current_time = GetDataDigital() + " " + GetTimeWOsec(); - current_time.replace(".", ""); - current_time.replace(":", ""); - } else { - current_time = ""; - } +void deleteOldDate(String file, int seted_number_of_lines, String date_to_add) { String log_date = readFile(file, 5000); - getMemoryLoad("[i] after logging procedure"); - + + //getMemoryLoad("[i] after logging procedure"); //предел количества строк 255 log_date.replace("\r\n", "\n"); @@ -390,7 +378,6 @@ void deleteOldDate(String file, int seted_number_of_lines, String date_to_add, b int current_number_of_lines = count(log_date, "\n"); Serial.println("[i] in log file " + file + " " + current_number_of_lines + " lines"); - if (current_number_of_lines > seted_number_of_lines + 1) { SPIFFS.remove("/" + file); current_number_of_lines = 0; @@ -401,14 +388,9 @@ void deleteOldDate(String file, int seted_number_of_lines, String date_to_add, b } if (current_number_of_lines > seted_number_of_lines) { log_date = deleteBeforeDelimiter(log_date, "\n"); - log_date += current_time + " " + date_to_add + "\n"; + log_date += String(GetTimeUnix()) + " " + date_to_add + "\n"; writeFile(file, log_date); - } else { - if (date_time) { - addFile(file, current_time + " " + date_to_add); - } else { - addFile(file, date_to_add); - } + addFile(file, String(GetTimeUnix()) + " " + date_to_add); } } diff --git a/Time.ino b/Time.ino index 732b8959..792ade44 100644 --- a/Time.ino +++ b/Time.ino @@ -28,11 +28,11 @@ void reconfigTime() { #endif #ifdef ESP8266 - // while (!time(nullptr) && i < 4) { - // Serial.print("."); - // i++; - delay(2000); - // } + // while (!time(nullptr) && i < 4) { + // Serial.print("."); + // i++; + delay(2000); + // } #endif Serial.print("[i] Time = "); @@ -40,14 +40,17 @@ void reconfigTime() { Serial.print(" "); Serial.println(GetTime()); - time_t now = time(nullptr); - Serial.println(now); + } else { Serial.println("[E] Get time impossible, no wifi connection"); } } - +//Получаем время в формате linux +int GetTimeUnix() { + time_t now = time(nullptr); + return (now); +} // Получение текущего времени String GetTime() { time_t now = time(nullptr); // получаем время с помощью библиотеки time.h diff --git a/Timers.ino b/Timers.ino index 94049ae4..e6bfa22c 100644 --- a/Timers.ino +++ b/Timers.ino @@ -9,7 +9,7 @@ void Timer_countdown_init() { if (old_line != "") { - Serial.println(old_line); + //Serial.println(old_line); int i = 0; diff --git a/Upgrade.ino b/Upgrade.ino index 446173ed..c366966e 100644 --- a/Upgrade.ino +++ b/Upgrade.ino @@ -7,27 +7,32 @@ void initUpgrade() { Serial.println(last_version); String tmp = "{}"; - if (!flash_1mb) { - if (last_version != "") { - if (last_version != "error") { - if (last_version == firmware_version) { - jsonWrite(tmp, "title", "Последняя версия прошивки уже установлена."); - jsonWrite(tmp, "class", "pop-up"); + if (WiFi.status() == WL_CONNECTED) { + if (!flash_1mb) { + if (last_version != "") { + if (last_version != "error") { + if (last_version == firmware_version) { + jsonWrite(tmp, "title", "Последняя версия прошивки уже установлена."); + jsonWrite(tmp, "class", "pop-up"); + } else { + upgrade_flag = true; + jsonWrite(tmp, "title", "Идет обновление прошивки... После завершения устройство перезагрузится. Подождите одну минуту!!!"); + jsonWrite(tmp, "class", "pop-up"); + } } else { - upgrade_flag = true; - jsonWrite(tmp, "title", "Идет обновление прошивки... После завершения устройство перезагрузится. Подождите одну минуту!!!"); + jsonWrite(tmp, "title", "Ошибка... Cервер не найден. Попробуйте позже..."); jsonWrite(tmp, "class", "pop-up"); } } else { - jsonWrite(tmp, "title", "Ошибка... Cервер не найден. Попробуйте позже..."); + jsonWrite(tmp, "title", "Нажмите на кнопку \"обновить прошивку\" повторно..."); jsonWrite(tmp, "class", "pop-up"); } } else { - jsonWrite(tmp, "title", "Нажмите на кнопку \"обновить прошивку\" повторно..."); + jsonWrite(tmp, "title", "Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти..."); jsonWrite(tmp, "class", "pop-up"); } } else { - jsonWrite(tmp, "title", "Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти..."); + jsonWrite(tmp, "title", "Модуль не подключен к роутеру..."); jsonWrite(tmp, "class", "pop-up"); } request->send(200, "text/text", tmp); diff --git a/data/configs/analog.config.txt b/data/configs/analog.config.txt index 04e9e814..37689c74 100644 --- a/data/configs/analog.config.txt +++ b/data/configs/analog.config.txt @@ -4,4 +4,4 @@ analog 0 Аналоговый#вход,#% Датчики progress-round 310 620 //значение чтения аналогового входа будут примерно равным //при 1 вольте - 310, а при 2 вольтах - 620 (считаем по пропорции) //данная строка переведет диапазон 310-620 в диапазон 1-100 и отобразит в приложении -//варианты отображения: any-data, progress-round, progress-line +//варианты отображения: any-data, progress-round, progress-line, fill-gauge diff --git a/data/configs/dallas.config.txt b/data/configs/dallas.config.txt index 373709a1..9570e0d9 100644 --- a/data/configs/dallas.config.txt +++ b/data/configs/dallas.config.txt @@ -1,4 +1,4 @@ dallas 2 Водонагреватель,#t°C Датчики any-data 1 //2 - номер пина датчика -//варианты отображения: any-data, progress-round, progress-line \ No newline at end of file +//варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/dht11.config.txt b/data/configs/dht11.config.txt index 1638b67e..cd0bb02f 100644 --- a/data/configs/dht11.config.txt +++ b/data/configs/dht11.config.txt @@ -5,4 +5,4 @@ dhtPerception Восприятие: Датчики 4 dhtDewpoint Точка#росы: Датчики 5 //2 - номер пина датчика -//варианты отображения: any-data, progress-round, progress-line \ No newline at end of file +//варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/dht22.config.txt b/data/configs/dht22.config.txt index 2ffd81cb..23a01f4e 100644 --- a/data/configs/dht22.config.txt +++ b/data/configs/dht22.config.txt @@ -5,4 +5,4 @@ dhtPerception Восприятие: Датчики 4 dhtDewpoint Точка#росы: Датчики 5 //2 - номер пина датчика -//варианты отображения: any-data, progress-round, progress-line \ No newline at end of file +//варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/firmware.config.txt b/data/configs/firmware.config.txt index ee17175c..4f9dc5c4 100644 --- a/data/configs/firmware.config.txt +++ b/data/configs/firmware.config.txt @@ -3,4 +3,7 @@ button 2 13 Прихожая Реле 0 2 button 3 14 Кухня Реле 0 3 pwm 1 3 Яркость#коредор: Реле 1023 4 pwm 2 4 Яркость#ванная: Реле 510 5 -analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6 \ No newline at end of file +analog 0 Аналоговый#вход Датчики fill-gauge 1 1023 1 1023 6 + +//Это демо конфигурация. В ней показано как связать сценариями кнопки. +//Кнопка номер 1 связана с кнопкой 2, 3 и с pwm 2 \ No newline at end of file diff --git a/data/configs/level.config.txt b/data/configs/level.config.txt index c86567c7..ef75420d 100644 --- a/data/configs/level.config.txt +++ b/data/configs/level.config.txt @@ -1,4 +1,4 @@ -level Вода#в#баке,#% Датчики any-data 125 20 1 +level Вода#в#баке,#% Датчики fill-gauge 125 20 1 inputDigit digit1 При#скольки#выключить? Датчики 95 2 inputDigit digit2 При#скольки#включить? Датчики 10 3 button 1 5 Насос Датчики 0 4 @@ -7,4 +7,4 @@ button 2 line1,line2, Автоматический#режим Датчики 1 5 //125 - это расстояние от датчика до дна бака в сантиметрах //20 - это расстояние от датчика до поверхности воды когда бак полный в сантиметрах //вывод данных будет в процентах заполнения бака -//варианты отображения: any-data, progress-round, progress-line \ No newline at end of file +//варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/firmware.config.txt b/data/firmware.config.txt index ee17175c..4f9dc5c4 100644 --- a/data/firmware.config.txt +++ b/data/firmware.config.txt @@ -3,4 +3,7 @@ button 2 13 Прихожая Реле 0 2 button 3 14 Кухня Реле 0 3 pwm 1 3 Яркость#коредор: Реле 1023 4 pwm 2 4 Яркость#ванная: Реле 510 5 -analog 0 Аналоговый#вход,#% Датчики progress-round 1 1024 1 1024 6 \ No newline at end of file +analog 0 Аналоговый#вход Датчики fill-gauge 1 1023 1 1023 6 + +//Это демо конфигурация. В ней показано как связать сценариями кнопки. +//Кнопка номер 1 связана с кнопкой 2, 3 и с pwm 2 \ No newline at end of file diff --git a/data/vigets/viget.select.json b/data/widgets/outstanding/widget.select.json similarity index 100% rename from data/vigets/viget.select.json rename to data/widgets/outstanding/widget.select.json diff --git a/data/vigets/viget.anydata.json b/data/widgets/widget.anyData.json similarity index 100% rename from data/vigets/viget.anydata.json rename to data/widgets/widget.anyData.json diff --git a/data/widgets/widget.chart.json b/data/widgets/widget.chart.json new file mode 100644 index 00000000..0ab13678 --- /dev/null +++ b/data/widgets/widget.chart.json @@ -0,0 +1,5 @@ +{ + "widget": "chart", + "series": "Temperature, °C", + "dateFormat": "HH:mm:ss" +} \ No newline at end of file diff --git a/data/widgets/widget.fillGauge.json b/data/widgets/widget.fillGauge.json new file mode 100644 index 00000000..34315ea8 --- /dev/null +++ b/data/widgets/widget.fillGauge.json @@ -0,0 +1,7 @@ +{ + "widget": "fillgauge", + "circleColor": "#00FFFF", + "textColor": "#FFFFFF", + "waveTextColor": "#000000", + "waveColor": "#00FFFF" +} \ No newline at end of file diff --git a/data/vigets/viget.inputdate.json b/data/widgets/widget.inputDate.json similarity index 100% rename from data/vigets/viget.inputdate.json rename to data/widgets/widget.inputDate.json diff --git a/data/vigets/viget.inputNum.json b/data/widgets/widget.inputNum.json similarity index 100% rename from data/vigets/viget.inputNum.json rename to data/widgets/widget.inputNum.json diff --git a/data/vigets/viget.inputText.json b/data/widgets/widget.inputText.json similarity index 100% rename from data/vigets/viget.inputText.json rename to data/widgets/widget.inputText.json diff --git a/data/vigets/viget.inputTime.json b/data/widgets/widget.inputTime.json similarity index 100% rename from data/vigets/viget.inputTime.json rename to data/widgets/widget.inputTime.json diff --git a/data/vigets/viget.progressL.json b/data/widgets/widget.progLine.json similarity index 100% rename from data/vigets/viget.progressL.json rename to data/widgets/widget.progLine.json diff --git a/data/vigets/viget.progressR.json b/data/widgets/widget.progRound.json similarity index 100% rename from data/vigets/viget.progressR.json rename to data/widgets/widget.progRound.json diff --git a/data/vigets/viget.range.json b/data/widgets/widget.range.json similarity index 100% rename from data/vigets/viget.range.json rename to data/widgets/widget.range.json diff --git a/data/vigets/viget.toggle.json b/data/widgets/widget.toggle.json similarity index 100% rename from data/vigets/viget.toggle.json rename to data/widgets/widget.toggle.json diff --git a/mqtt.ino b/mqtt.ino index ce8b73cc..b1b50842 100644 --- a/mqtt.ino +++ b/mqtt.ino @@ -39,7 +39,7 @@ void MQTT_init() { } saveConfig(); start_connecting_to_mqtt = true; - + request->send(200, "text/text", "ok"); }); @@ -135,10 +135,9 @@ void outcoming_date() { sendAllWigets(); sendAllData(); - // if (flagLoggingAnalog) sendLogData("log.analog.txt", "loganalog"); - // if (flagLoggingPh) sendLogData("log.ph.txt", "logph"); - // if (flagLoggingDallas) sendLogData("log.dallas.txt", "logdallas"); - // if (flagLoggingLevel) sendLogData("log.level.txt", "loglevel"); + if (flagLoggingAnalog) sendLogData("log.analog.txt", "loganalog"); + if (flagLoggingDallas) sendLogData("log.dallas.txt", "logdallas"); + if (flagLoggingLevel) sendLogData("log.level.txt", "loglevel"); Serial.println("[V] Sending all date to iot manager completed"); @@ -151,6 +150,13 @@ boolean sendMQTT(String end_of_topik, String data) { client.endPublish(); return send_status; } +boolean sendCHART(String topik, String data) { + topik = jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/" + topik + "/" + "status"; + boolean send_status = client.beginPublish(topik.c_str(), data.length(), false); + client.print(data); + client.endPublish(); + return send_status; +} //======================================STATUS================================================== void sendSTATUS(String topik, String state) { topik = jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/" + topik + "/" + "status"; @@ -166,14 +172,14 @@ void sendCONTROL(String id, String topik, String state) { //=====================================================ОТПРАВЛЯЕМ ВИДЖЕТЫ======================================================== void sendAllWigets() { - if (all_vigets != "") { + if (all_widgets != "") { int counter = 0; String line; int psn_1 = 0; int psn_2; do { - psn_2 = all_vigets.indexOf("\r\n", psn_1); - line = all_vigets.substring(psn_1, psn_2); + psn_2 = all_widgets.indexOf("\r\n", psn_1); + line = all_widgets.substring(psn_1, psn_2); line.replace("\n", ""); line.replace("\r\n", ""); //jsonWrite(line, "id", String(counter)); @@ -182,8 +188,8 @@ void sendAllWigets() { sendMQTT("config", line); Serial.println("[V] " + line); psn_1 = psn_2 + 1; - } while (psn_2 + 2 < all_vigets.length()); - getMemoryLoad("[i] after send all vigets"); + } while (psn_2 + 2 < all_widgets.length()); + getMemoryLoad("[i] after send all widgets"); } } //=====================================================ОТПРАВЛЯЕМ ДАННЫЕ В ВИДЖЕТЫ ПРИ ОБНОВЛЕНИИ СТРАНИЦЫ======================================================== @@ -213,19 +219,28 @@ void sendAllData() { //берет строку json и ключи превра void sendLogData(String file, String topic) { String log_date = readFile(file, 5000) + "\r\n"; - getMemoryLoad("[i] after send log date"); - + log_date.replace("\r\n", "\n"); log_date.replace("\r", "\n"); + String unix_time; + String value; + while (log_date.length() != 0) { String tmp = selectToMarker (log_date, "\n"); - sendSTATUS(topic, selectFromMarkerToMarker(tmp, " ", 2)); - if (tmp != "") sendSTATUS(topic, tmp); + unix_time += (selectToMarker (tmp, " ") + ","); + value += (deleteBeforeDelimiter(tmp, " ") + ","); log_date = deleteBeforeDelimiter(log_date, "\n"); } + + unix_time.replace(",,", ""); + value.replace(",,", ""); + String to_send = "{\"status\":[" + value + "],\"time\": [" + unix_time + "]}"; + //sendCHART(topic, to_send); + + getMemoryLoad("[i] after send log date"); } String stateMQTT() { @@ -313,7 +328,7 @@ String stateMQTT() { String state = selectToMarkerLast (tmp, ":"); //"1" state.replace("\"", ""); //1 - //if (viget.lastIndexOf(topic) > 0) { + //if (widget.lastIndexOf(topic) > 0) { jsonWrite(tmp, "status", state); //} current_config = deleteBeforeDelimiter(current_config, ","); diff --git a/set.h b/set.h index f5670fd3..c3be5731 100644 --- a/set.h +++ b/set.h @@ -126,7 +126,7 @@ String json = "{}"; String chipID = ""; String prex; String ids; -String all_vigets = ""; +String all_widgets = ""; String scenario; String order_loop;