diff --git a/Cmd.ino b/Cmd.ino
index d9bd1313..65285039 100644
--- a/Cmd.ino
+++ b/Cmd.ino
@@ -62,8 +62,8 @@ void button() {
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(optionJson, "button_param" + button_number, button_param);
- jsonWrite(configJson, "buttonSet" + button_number, start_state);
+ jsonWriteStr(optionJson, "button_param" + button_number, button_param);
+ jsonWriteStr(configJson, "buttonSet" + button_number, start_state);
if (isDigitStr (button_param)) {
pinMode(button_param.toInt(), OUTPUT);
@@ -71,7 +71,7 @@ void button() {
}
if (button_param == "scenario") {
- jsonWrite(configSetup, "scenario", start_state);
+ jsonWriteStr(configSetup, "scenario", start_state);
Scenario_init();
saveConfig();
}
@@ -103,7 +103,7 @@ void buttonSet() {
}
if (button_param == "scenario") {
- jsonWrite(configSetup, "scenario", button_state);
+ jsonWriteStr(configSetup, "scenario", button_state);
Scenario_init();
saveConfig();
}
@@ -124,7 +124,7 @@ void buttonSet() {
eventGen ("buttonSet", button_number);
- jsonWrite(configJson, "buttonSet" + button_number, button_state);
+ jsonWriteStr(configJson, "buttonSet" + button_number, button_state);
sendSTATUS("buttonSet" + button_number, button_state);
}
@@ -137,7 +137,7 @@ void buttonChange() {
current_state = "1";
}
order_loop += "buttonSet " + button_number + " " + current_state + ",";
- jsonWrite(configJson, "buttonSet" + button_number, current_state);
+ jsonWriteStr(configJson, "buttonSet" + button_number, current_state);
sendSTATUS("buttonSet" + button_number, current_state);
}
@@ -168,11 +168,11 @@ void pwm() {
uint8_t pwm_pin_int = pwm_pin.toInt();
- jsonWrite(optionJson, "pwm_pin" + pwm_number, pwm_pin);
+ jsonWriteStr(optionJson, "pwm_pin" + pwm_number, pwm_pin);
pinMode(pwm_pin_int, INPUT);
analogWrite(pwm_pin_int, start_state.toInt());
//analogWriteFreq(32000);
- jsonWrite(configJson, "pwmSet" + pwm_number, start_state);
+ jsonWriteStr(configJson, "pwmSet" + pwm_number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.range.json", "pwmSet" + pwm_number);
}
@@ -188,7 +188,7 @@ void pwmSet() {
eventGen ("pwmSet", pwm_number);
- jsonWrite(configJson, "pwmSet" + pwm_number, pwm_state);
+ jsonWriteStr(configJson, "pwmSet" + pwm_number, pwm_state);
sendSTATUS("pwmSet" + pwm_number, pwm_state);
}
//==================================================================================================================
@@ -214,13 +214,13 @@ void handleButton() {
eventGen ("switchSet", String(switch_number));
- jsonWrite(configJson, "switchSet" + String(switch_number), "1");
+ jsonWriteStr(configJson, "switchSet" + String(switch_number), "1");
}
if (buttons[switch_number].rose()) {
eventGen ("switchSet", String(switch_number));
- jsonWrite(configJson, "switchSet" + String(switch_number), "0");
+ jsonWriteStr(configJson, "switchSet" + String(switch_number), "0");
}
}
switch_number++;
@@ -238,13 +238,13 @@ void inputDigit() {
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(configJson, "digitSet" + number, start_state);
+ jsonWriteStr(configJson, "digitSet" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputNum.json", "digitSet" + number);
}
void digitSet() {
String number = sCmd.next();
String value = sCmd.next();
- jsonWrite(configJson, "digitSet" + number, value);
+ jsonWriteStr(configJson, "digitSet" + number, value);
sendSTATUS("digitSet" + number, value);
}
//=====================================================================================================================================
@@ -258,13 +258,13 @@ void inputTime() {
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(configJson, "timeSet" + number, start_state);
+ jsonWriteStr(configJson, "timeSet" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "timeSet" + number);
}
void timeSet() {
String number = sCmd.next();
String value = sCmd.next();
- jsonWrite(configJson, "timeSet" + number, value);
+ jsonWriteStr(configJson, "timeSet" + number, value);
sendSTATUS("timeSet" + number, value);
}
@@ -273,7 +273,7 @@ void handle_time_init() {
String tmp = GetTime();
tmp.replace(":", "-");
- jsonWrite(configJson, "timenowSet", tmp);
+ jsonWriteStr(configJson, "timenowSet", tmp);
eventGen ("timenowSet", "");
}, nullptr, true);
@@ -306,7 +306,7 @@ void textSet() {
text = text + " " + GetDataDigital() + " " + time;
}
- jsonWrite(configJson, "textSet" + number, text);
+ jsonWriteStr(configJson, "textSet" + number, text);
sendSTATUS("textSet" + number, text);
}
@@ -319,7 +319,7 @@ void stepper() {
String pin_step = sCmd.next();
String pin_dir = sCmd.next();
- jsonWrite(optionJson, "stepper" + stepper_number, pin_step + " " + pin_dir);
+ jsonWriteStr(optionJson, "stepper" + stepper_number, pin_step + " " + pin_dir);
pinMode(pin_step.toInt(), OUTPUT);
pinMode(pin_dir.toInt(), OUTPUT);
}
@@ -328,7 +328,7 @@ void stepper() {
void stepperSet() {
String stepper_number = sCmd.next();
String steps = sCmd.next();
- jsonWrite(optionJson, "steps" + stepper_number, steps);
+ jsonWriteStr(optionJson, "steps" + stepper_number, steps);
String stepper_speed = sCmd.next();
String pin_step = selectToMarker (jsonRead(optionJson, "stepper" + stepper_number), " ");
String pin_dir = deleteBeforeDelimiter (jsonRead(optionJson, "stepper" + stepper_number), " ");
@@ -377,13 +377,13 @@ void stepperSet() {
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(configJson, "inputTextSet" + number, start_state);
+ jsonWriteStr(configJson, "inputTextSet" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputText.json", "inputTextSet" + number);
}
void inputTextSet() {
String number = sCmd.next();
String value = sCmd.next();
- jsonWrite(configJson, "inputTextSet" + number, value);
+ jsonWriteStr(configJson, "inputTextSet" + number, value);
sendSTATUS("inputTextSet" + number, value);
}
@@ -395,14 +395,14 @@ void stepperSet() {
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(configJson, "inputTimeSet" + number, start_state);
+ jsonWriteStr(configJson, "inputTimeSet" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputTime.json", "inputTimeSet" + number);
}
void inputTimeSet() {
String number = sCmd.next();
String value = sCmd.next();
value.replace(":", ".");
- jsonWrite(configJson, "inputTimeSet" + number, value);
+ jsonWriteStr(configJson, "inputTimeSet" + number, value);
value.replace(".", ":");
sendSTATUS("inputTimeSet" + number, value);
}
@@ -416,13 +416,13 @@ void stepperSet() {
page_name.replace("#", " ");
String start_state = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(configJson, "inputDateSet" + number, start_state);
+ jsonWriteStr(configJson, "inputDateSet" + number, start_state);
createWidget (widget_name, page_name, page_number, "widgets/widget.inputDate.json", "inputDateSet" + number);
}
void inputDateSet() {
String number = sCmd.next();
String value = sCmd.next();
- jsonWrite(configJson, "inputDateSet" + number, value);
+ jsonWriteStr(configJson, "inputDateSet" + number, value);
sendSTATUS("inputDateSet" + number, value);
}
*/
@@ -464,24 +464,6 @@ void handleCMD_loop() {
}
}
-//=============================выполнение команд (через период) по очереди из строки order=======================================
-/*void handleCMD_ticker() {
-
- ts.add(CMD, CMD_update_int, [&](void*) {
- if (!busy) {
- if (order_ticker != "") {
-
- String tmp = selectToMarker(order_ticker, ","); //выделяем из страки order первую команду pus title body
- if (tmp != "no_command") sCmd.readStr(tmp); //выполняем первую команду
- Serial.println("order_ticker => " + order_ticker);
- order_ticker = deleteBeforeDelimiter(order_ticker, ","); //осекаем выполненную команду
- }
- }
- }, nullptr, true);
- }*/
-
-
-
//=======================================================================================================================================
//=======================================================================================================================================
void txtExecution(String file) {
@@ -497,6 +479,7 @@ void txtExecution(String file) {
sCmd.readStr(tmp);
command_all = deleteBeforeDelimiter(command_all, "\n");
}
+ command_all = "";
}
void stringExecution(String str) {
@@ -513,154 +496,3 @@ void stringExecution(String str) {
str = deleteBeforeDelimiter(str, "\n");
}
}
-
-//======================================================================================================================
-//===============================================Создание виджетов=======================================================
-
-void createWidget (String widget_name, String page_name, String page_number, String file, String topic) {
-
- 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, "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 createWidget (String widget_name, String page_name, String page_number, String file, String topic, String key, String value) {
-
- String widget;
- widget = readFile(file, 1024);
-
- if (widget == "Failed") return;
- if (widget == "Large") return;
-
- widget_name.replace("#", " ");
- page_name.replace("#", " ");
-
- value.replace("#", " ");
-
- widget = vidgetConfigWrite(widget, key, value);
-
- jsonWrite(widget, "page", page_name);
- jsonWrite(widget, "pageId", page_number);
- jsonWrite(widget, "descr", widget_name);
- jsonWrite(widget, "topic", prex + "/" + topic);
-
- all_widgets += widget + "\r\n";
- widget = "";
- }
-
- void createWidget (String widget_name, String page_name, String page_number, String file, String topic, String key, String value, String key2, String value2) {
-
- String widget;
- widget = readFile(file, 1024);
-
- if (widget == "Failed") return;
- if (widget == "Large") return;
-
- widget_name.replace("#", " ");
- page_name.replace("#", " ");
-
- value.replace("#", " ");
-
- widget = vidgetConfigWrite(widget, key, value);
- widget = vidgetConfigWrite(widget, key2, value2);
-
- jsonWrite(widget, "page", page_name);
- jsonWrite(widget, "pageId", page_number);
- jsonWrite(widget, "descr", widget_name);
- jsonWrite(widget, "topic", prex + "/" + topic);
-
- all_widgets += widget + "\r\n";
- widget = "";
- }
-
-String vidgetConfigWrite(String widget, String key, String value) {
-
- if (widget == "") return "";
- if (widget == "{}") return "";
- int psn1 = widget.indexOf("{");
- if (psn1 != -1) {
- psn1 = widget.indexOf("{", psn1 + 1);
- if (psn1 != -1) {
- int psn2 = widget.indexOf("}", psn1);
- String WigetConfig = widget.substring(psn1, psn2) + "}";
- jsonWrite(WigetConfig, key, value);
- String part1 = widget.substring(0, psn1);
- widget = part1 + WigetConfig + "}";
- return widget;
-
- }
- }
-}
-*/
-
-
-
-
-
-
-
-
-
-
-
-//============разное
-
-/*
- void delAlert() {
-
- String alert_id = sCmd.next();
- delwidget(alert_id);
- sendAllWigets();
- }
-
-
- 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_widgets.replace(tmp, "");
- //Serial.println(all_widgets);
-
- widget = deleteBeforeDelimiter(widget, "\r\n");
- } else {
- widget = deleteBeforeDelimiter(widget, "\r\n");
- }
- }
- }
-*/
diff --git a/FS.ino b/FS.ino
new file mode 100644
index 00000000..993c7dc8
--- /dev/null
+++ b/FS.ino
@@ -0,0 +1,38 @@
+void File_system_init() {
+
+ Serial.begin(115200);
+ //Serial.setDebugOutput(true);
+ Serial.println("--------------started----------------");
+ //--------------------------------------------------------------
+ SPIFFS.begin();
+ configSetup = readFile("config.json", 4096);
+ configSetup.replace(" ", "");
+ configSetup.replace("\r\n", "");
+ Serial.println(configSetup);
+ jsonWriteStr(configJson, "SSDP", jsonRead(configSetup, "SSDP"));
+ jsonWriteStr(configJson, "lang", jsonRead(configSetup, "lang"));
+
+
+#ifdef ESP32
+ uint32_t chipID_u = ESP.getEfuseMac();
+ chipID = String(chipID_u);
+ jsonWriteStr(configSetup, "chipID", chipID);
+#endif
+
+#ifdef ESP8266
+ chipID = String( ESP.getChipId() ) + "-" + String(ESP.getFlashChipId());
+ jsonWriteStr(configSetup, "chipID", chipID);
+ Serial.setDebugOutput(0);
+#endif
+
+ jsonWriteStr(configSetup, "firmware_version", firmware_version);
+
+ prex = jsonRead(configSetup, "mqttPrefix") + "/" + chipID;
+ Serial.println(chipID);
+
+}
+
+void get_esp_info() {
+
+
+}
diff --git a/Init.ino b/Init.ino
index bb36f33c..423a711e 100644
--- a/Init.ino
+++ b/Init.ino
@@ -7,7 +7,7 @@ void All_init() {
server.on("/scenario", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("status")) {
- jsonWrite(configSetup, "scenario", request->getParam("status")->value());
+ jsonWriteStr(configSetup, "scenario", request->getParam("status")->value());
}
saveConfig();
Scenario_init();
@@ -15,11 +15,9 @@ void All_init() {
});
server.on("/cleanlog", HTTP_GET, [](AsyncWebServerRequest * request) {
- SPIFFS.remove("/log.analog.txt");
- SPIFFS.remove("/log.dallas.txt");
- SPIFFS.remove("/log.level.txt");
- SPIFFS.remove("/log.ph.txt");
- SPIFFS.remove("/log.txt");
+
+ clean_log_date();
+
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
});
@@ -43,7 +41,12 @@ void Device_init() {
ts.remove(STEPPER1);
ts.remove(STEPPER2);
+ #ifdef layout_in_rom
all_widgets = "";
+ #else
+ SPIFFS.remove("/layout.txt");
+ #endif
+
txtExecution("firmware.config.txt");
//outcoming_date();
}
@@ -219,19 +222,19 @@ void up_time() {
if (ss != 0) {
out = "[i] uptime = " + String(ss) + " sec";
- jsonWrite(configJson, "uptime", String(ss) + " sec");
+ jsonWriteStr(configJson, "uptime", String(ss) + " sec");
}
if (mm != 0) {
out = "[i] uptime = " + String(mm) + " min";
- jsonWrite(configJson, "uptime", String(mm) + " min");
+ jsonWriteStr(configJson, "uptime", String(mm) + " min");
}
if (hh != 0) {
out = "[i] uptime = " + String(hh) + " hours";
- jsonWrite(configJson, "uptime", String(hh) + " hours");
+ jsonWriteStr(configJson, "uptime", String(hh) + " hours");
}
if (dd != 0) {
out = "[i] uptime = " + String(dd) + " days";
- jsonWrite(configJson, "uptime", String(dd) + " days");
+ jsonWriteStr(configJson, "uptime", String(dd) + " days");
}
Serial.println(out + ", mqtt_lost_error: " + String(mqtt_lost_error) + ", wifi_lost_error: " + String(wifi_lost_error));
}
@@ -245,29 +248,31 @@ void statistics_init() {
}
void statistics() {
- String urls = "http://backup.privet.lv/visitors/?";
- //-----------------------------------------------------------------
- urls += WiFi.macAddress().c_str();
- urls += "&";
- //-----------------------------------------------------------------
+ if (WiFi.status() == WL_CONNECTED) {
+ String urls = "http://backup.privet.lv/visitors/?";
+ //-----------------------------------------------------------------
+ urls += WiFi.macAddress().c_str();
+ urls += "&";
+ //-----------------------------------------------------------------
#ifdef ESP8266
- urls += "iot-manager_esp8266";
+ urls += "iot-manager_esp8266";
#endif
#ifdef ESP32
- urls += "iot-manager_esp32";
+ urls += "iot-manager_esp32";
#endif
- urls += "&";
- //-----------------------------------------------------------------
+ urls += "&";
+ //-----------------------------------------------------------------
#ifdef ESP8266
- urls += ESP.getResetReason();
+ urls += ESP.getResetReason();
#endif
#ifdef ESP32
- urls += "Unknown";
+ urls += "Unknown";
#endif
- urls += "&";
- //-----------------------------------------------------------------
- urls += "firm version: " + firmware_version + " " + DATE_COMPILING + " " + TIME_COMPILING;
- //-----------------------------------------------------------------
- String stat = getURL(urls);
- //Serial.println(stat);
+ urls += "&";
+ //-----------------------------------------------------------------
+ urls += "firm version: " + firmware_version + " " + DATE_COMPILING + " " + TIME_COMPILING;
+ //-----------------------------------------------------------------
+ String stat = getURL(urls);
+ //Serial.println(stat);
+ }
}
diff --git a/Logging.ino b/Logging.ino
new file mode 100644
index 00000000..423062bb
--- /dev/null
+++ b/Logging.ino
@@ -0,0 +1,145 @@
+//===============================================Логирование============================================================
+void logging() {
+
+ static boolean flag = true;
+
+ String sensor_name = sCmd.next();
+ String period_min = sCmd.next();
+ String maxCount = sCmd.next();
+
+ String widget_name = sCmd.next();
+ widget_name.replace("#", " ");
+ String page_name = sCmd.next();
+ String page_number = sCmd.next();
+
+ if (sensor_name == "analog") jsonWriteStr(optionJson, "analog_logging_count", maxCount);
+ if (sensor_name == "level") jsonWriteStr(optionJson, "level_logging_count", maxCount);
+ if (sensor_name == "dallas") jsonWriteStr(optionJson, "dallas_logging_count", maxCount);
+ if (sensor_name == "dhtT") jsonWriteStr(optionJson, "dhtT_logging_count", maxCount);
+ if (sensor_name == "dhtH") jsonWriteStr(optionJson, "dhtH_logging_count", 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 == "dhtT") createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", "logdhtT", maxCount);
+ if (sensor_name == "dhtH") createChart (widget_name, page_name, page_number, "widgets/widget.chart.json", "logdhtH", 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"));
+ }, nullptr, true);
+ }
+
+ if (sensor_name == "level") {
+ 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"));
+ }, nullptr, true);
+ }
+
+ if (sensor_name == "dallas") {
+ 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"));
+ }, nullptr, true);
+ }
+
+ if (sensor_name == "dhtT") {
+ flagLoggingdhtT = true;
+ ts.remove(dhtT_LOG);
+ ts.add(dhtT_LOG, period_min.toInt() * 1000 * 60, [&](void*) {
+ deleteOldDate("log.dhtT.txt", jsonReadtoInt(optionJson, "dhtT_logging_count"), jsonRead(configJson, "dhtT"));
+ }, nullptr, true);
+ }
+
+ if (sensor_name == "dhtH") {
+ flagLoggingdhtH = true;
+ ts.remove(dhtH_LOG);
+ ts.add(dhtH_LOG, period_min.toInt() * 1000 * 60, [&](void*) {
+ deleteOldDate("log.dhtH.txt", jsonReadtoInt(optionJson, "dhtH_logging_count"), jsonRead(configJson, "dhtH"));
+ }, nullptr, true);
+ }
+}
+
+//=========================================Удаление стрых данных и запись новых==================================================================
+void deleteOldDate(String file, int seted_number_of_lines, String date_to_add) {
+ String log_date = readFile(file, 5000);
+ 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;
+ }
+ if (current_number_of_lines == 0) {
+ SPIFFS.remove("/" + file);
+ current_number_of_lines = 0;
+ }
+ if (current_number_of_lines > seted_number_of_lines) {
+ log_date = deleteBeforeDelimiter(log_date, "\n");
+ if (GetTimeUnix() != "failed") {
+ log_date += GetTimeUnix() + " " + date_to_add + "\n";
+ writeFile(file, log_date);
+ }
+ } else {
+ if (GetTimeUnix() != "failed") {
+ addFile(file, GetTimeUnix() + " " + date_to_add);
+ }
+ }
+ log_date = "";
+}
+
+//=========================================Выбор какие данные отправлять==================================================================
+void choose_log_date_and_send() {
+ if (flagLoggingAnalog) sendLogData("log.analog.txt", "loganalog");
+ if (flagLoggingLevel) sendLogData("log.level.txt", "loglevel");
+ if (flagLoggingDallas) sendLogData("log.dallas.txt", "logdallas");
+ if (flagLoggingdhtT) sendLogData("log.dhtT.txt", "logdhtT");
+ if (flagLoggingdhtH) sendLogData("log.dhtH.txt", "logdhtH");
+}
+
+//=========================================Отправка данных===================================================================================
+void sendLogData(String file, String topic) {
+ String log_date = readFile(file, 5000);
+ log_date.replace("\r\n", "\n");
+ log_date.replace("\r", "\n");
+ String buf = "{}";
+ String json_array;
+ String unix_time;
+ String value;
+ while (log_date.length() != 0) {
+ String tmp = selectToMarker (log_date, "\n");
+ log_date = deleteBeforeDelimiter(log_date, "\n");
+ unix_time = selectToMarker (tmp, " ");
+ jsonWriteInt(buf, "x", unix_time.toInt());
+ value = deleteBeforeDelimiter(tmp, " ");
+ jsonWriteFloat(buf, "y1", value.toFloat());
+ if (log_date.length() < 3) {
+ json_array += buf;
+ } else {
+ json_array += buf + ",";
+ }
+ buf = "{}";
+ }
+ unix_time = "";
+ value = "";
+ log_date = "";
+ json_array = "{\"status\":[" + json_array + "]}";
+ Serial.println(json_array);
+ sendCHART(topic, json_array);
+ json_array = "";
+ getMemoryLoad("[i] after send log date");
+}
+
+//=========================================Очистка данных===================================================================================
+void clean_log_date() {
+ SPIFFS.remove("/log.analog.txt");
+ SPIFFS.remove("/log.level.txt");
+ SPIFFS.remove("/log.dallas.txt");
+ SPIFFS.remove("/log.dhtT.txt");
+ SPIFFS.remove("/log.dhtH.txt");
+}
diff --git a/SSDP.ino b/SSDP.ino
index 2ee42981..2638e15a 100644
--- a/SSDP.ino
+++ b/SSDP.ino
@@ -1,11 +1,20 @@
-/*
void SSDP_init() {
+ server.on("/ssdp", HTTP_GET, [](AsyncWebServerRequest * request) {
+ if (request->hasArg("ssdp")) {
+ jsonWriteStr(configSetup, "SSDP", request->getParam("ssdp")->value());
+ jsonWriteStr(configJson, "SSDP", request->getParam("ssdp")->value());
+ }
+ saveConfig();
+ request->send(200, "text/text", "OK");
+ });
+}
+/*
// --------------------Получаем ssdp со страницы
server.on("/ssdp", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("ssdp")) {
- jsonWrite(configSetup, "SSDP", request->getParam("ssdp")->value());
- jsonWrite(configJson, "SSDP", request->getParam("ssdp")->value());
+ jsonWriteStr(configSetup, "SSDP", request->getParam("ssdp")->value());
+ jsonWriteStr(configJson, "SSDP", request->getParam("ssdp")->value());
SSDP.setName(jsonRead(configSetup, "SSDP"));
}
saveConfig();
@@ -13,7 +22,7 @@ void SSDP_init() {
});
// SSDP дескриптор
- server.on("/description.xml", [](AsyncWebServerRequest * request) {
+ server.on("/description.xml", [](AsyncWebServerRequest * request) {
//SSDP.schema(http.client());
request->send(200, "text/text", "OK");
});
@@ -36,5 +45,5 @@ void SSDP_init() {
SSDP.setManufacturerURL("https://www.instagram.com/rriissee3");
SSDP.begin();
}
-}
+ }
*/
diff --git a/Scenario.ino b/Scenario.ino
index d4c17a98..67b422f4 100644
--- a/Scenario.ino
+++ b/Scenario.ino
@@ -69,7 +69,7 @@ void handleScenario() {
}
String tmp2 = jsonRead(optionJson, "scenario_status"); //читаем файл событий
tmp2 = deleteBeforeDelimiter(tmp2, ","); //удаляем выполненное событие
- jsonWrite(optionJson, "scenario_status", tmp2); //записываем обновленный файл событий
+ jsonWriteStr(optionJson, "scenario_status", tmp2); //записываем обновленный файл событий
i = 0;
}
}
@@ -80,7 +80,7 @@ void eventGen (String event_name, String number) { //событие выгля
if (jsonRead(configSetup, "scenario") == "1") {
String tmp = jsonRead(optionJson, "scenario_status") ; //генерирование события
//Serial.println(event_name);
- jsonWrite(optionJson, "scenario_status", tmp + event_name + number + ",");
+ jsonWriteStr(optionJson, "scenario_status", tmp + event_name + number + ",");
}
}
diff --git a/Sensors.ino b/Sensors.ino
index 3c1986f0..a1da758c 100644
--- a/Sensors.ino
+++ b/Sensors.ino
@@ -10,10 +10,10 @@ void analog() {
String analog_start_out = sCmd.next();
String analog_end_out = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(optionJson, "analog_start", analog_start);
- jsonWrite(optionJson, "analog_end", analog_end);
- jsonWrite(optionJson, "analog_start_out", analog_start_out);
- jsonWrite(optionJson, "analog_end_out", analog_end_out);
+ jsonWriteStr(optionJson, "analog_start", analog_start);
+ jsonWriteStr(optionJson, "analog_end", analog_end);
+ jsonWriteStr(optionJson, "analog_start_out", analog_start_out);
+ jsonWriteStr(optionJson, "analog_end_out", analog_end_out);
choose_widget_and_create(widget_name, page_name, page_number, type, "analog");
ts.add(ANALOG_, analog_update_int, [&](void*) {
static int analog_old;
@@ -24,13 +24,13 @@ void analog() {
#ifdef ESP8266
int analog_in = analogRead(A0);
#endif
- jsonWrite(configJson, "analog_in", analog_in);
+ jsonWriteInt(configJson, "analog_in", analog_in);
int analog = map(analog_in,
jsonReadtoInt(optionJson, "analog_start") ,
jsonReadtoInt(optionJson, "analog_end"),
jsonReadtoInt(optionJson, "analog_start_out"),
jsonReadtoInt(optionJson, "analog_end_out"));
- jsonWrite(configJson, "analog", analog);
+ jsonWriteInt(configJson, "analog", analog);
// if (analog_old != analog) {
eventGen ("analog", "");
sendSTATUS("analog", String(analog));
@@ -51,8 +51,8 @@ void level() {
String empty_level = sCmd.next();
String full_level = sCmd.next();
String page_number = sCmd.next();
- jsonWrite(optionJson, "empty_level", empty_level);
- jsonWrite(optionJson, "full_level", full_level);
+ jsonWriteStr(optionJson, "empty_level", empty_level);
+ jsonWriteStr(optionJson, "full_level", full_level);
pinMode(14, OUTPUT);
pinMode(12, INPUT);
choose_widget_and_create(widget_name, page_name, page_number, type, "level");
@@ -73,11 +73,11 @@ void level() {
counter++;
if (counter > tank_level_times_to_send) {
counter = 0;
- jsonWrite(configJson, "level_in", distance_cm);
+ jsonWriteInt(configJson, "level_in", distance_cm);
level = map(distance_cm,
jsonReadtoInt(optionJson, "empty_level"),
jsonReadtoInt(optionJson, "full_level"), 0, 100);
- jsonWrite(configJson, "level", level);
+ jsonWriteInt(configJson, "level", level);
//if (level_old != level) {
eventGen ("level", "");
sendSTATUS("level", String(level));
@@ -108,7 +108,7 @@ void dallas() {
static float temp_old;
sensors.requestTemperatures();
temp = sensors.getTempCByIndex(0);
- jsonWrite(configJson, "dallas", String(temp));
+ jsonWriteStr(configJson, "dallas", String(temp));
//if (temp_old != temp) {
eventGen ("dallas", "");
sendSTATUS("dallas", String(temp));
@@ -147,14 +147,16 @@ void dhtT() {
} else {
counter = 0;
value = dht.getTemperature();
- jsonWrite(configJson, "dhtT", String(value));
//if (value_old != value) {
- eventGen ("dhtT", "");
- sendSTATUS("dhtT", String(value));
- if (client.connected()) {
- Serial.println("[i] sensor 'dhtT' send date " + String(value));
+ if (String(value) != "nan") {
+ eventGen ("dhtT", "");
+ jsonWriteStr(configJson, "dhtT", String(value));
+ sendSTATUS("dhtT", String(value));
+ if (client.connected()) {
+ Serial.println("[i] sensor 'dhtT' send date " + String(value));
+ }
+ //}
}
- //}
value_old = value;
}
}, nullptr, true);
@@ -185,14 +187,16 @@ void dhtH() {
} else {
counter = 0;
value = dht.getHumidity();
- jsonWrite(configJson, "dhtH", String(value));
- //if (value_old != value) {
- eventGen ("dhtH", "");
- sendSTATUS("dhtH", String(value));
- if (client.connected()) {
- Serial.println("[i] sensor 'dhtH' send date " + String(value));
+ if (String(value) != "nan") {
+ //if (value_old != value) {
+ eventGen ("dhtH", "");
+ jsonWriteStr(configJson, "dhtH", String(value));
+ sendSTATUS("dhtH", String(value));
+ if (client.connected()) {
+ Serial.println("[i] sensor 'dhtH' send date " + String(value));
+ }
+ //}
}
- //}
value_old = value;
}
}, nullptr, true);
@@ -210,7 +214,7 @@ void dhtPerception() {
} else {
value = dht.computePerception(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), false);
String final_line = perception(value);
- jsonWrite(configJson, "dhtPerception", final_line);
+ jsonWriteStr(configJson, "dhtPerception", final_line);
eventGen ("dhtPerception", "");
sendSTATUS("dhtPerception", final_line);
if (client.connected()) {
@@ -277,7 +281,7 @@ void dhtComfort() {
break;
};
String final_line = comfortStatus;
- jsonWrite(configJson, "dhtComfort", final_line);
+ jsonWriteStr(configJson, "dhtComfort", final_line);
eventGen ("dhtComfort", "");
sendSTATUS("dhtComfort", final_line);
if (client.connected()) {
@@ -298,7 +302,7 @@ void dhtDewpoint() {
sendSTATUS("dhtDewpoint", String(dht.getStatusString()));
} else {
value = dht.computeDewPoint(jsonRead(configJson, "dhtT").toFloat(), jsonRead(configJson, "dhtH").toFloat(), false);
- jsonWrite(configJson, "dhtDewpoint", value);
+ jsonWriteInt(configJson, "dhtDewpoint", value);
eventGen ("dhtDewpoint", "");
sendSTATUS("dhtDewpoint", String(value));
if (client.connected()) {
@@ -317,80 +321,3 @@ void choose_widget_and_create(String widget_name, String page_name, String page_
if (type == "fill-gauge") createWidget (widget_name, page_name, page_number, "widgets/widget.fillGauge.json", topik);
}
-//======================================================================================================================
-//===============================================Логирование============================================================
-
-void logging() {
-
- static boolean flag = true;
-
- String sensor_name = sCmd.next();
- String period_min = sCmd.next();
- String maxCount = sCmd.next();
- 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 == "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"));
- }, nullptr, true);
- }
-
- if (sensor_name == "level") {
- 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"));
- }, nullptr, true);
- }
-
- if (sensor_name == "dallas") {
- 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"));
- }, nullptr, true);
- }
-}
-
-void deleteOldDate(String file, int seted_number_of_lines, String date_to_add) {
-
- String log_date = readFile(file, 5000);
-
- //getMemoryLoad("[i] after logging procedure");
- //предел количества строк 255
-
- log_date.replace("\r\n", "\n");
- log_date.replace("\r", "\n");
-
- 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;
- }
- if (current_number_of_lines == 0) {
- SPIFFS.remove("/" + file);
- current_number_of_lines = 0;
- }
- if (current_number_of_lines > seted_number_of_lines) {
- log_date = deleteBeforeDelimiter(log_date, "\n");
- log_date += String(GetTimeUnix()) + " " + date_to_add + "\n";
- writeFile(file, log_date);
- } else {
- addFile(file, String(GetTimeUnix()) + " " + date_to_add);
- }
-}
diff --git a/Time.ino b/Time.ino
index 792ade44..28880429 100644
--- a/Time.ino
+++ b/Time.ino
@@ -1,23 +1,26 @@
void Time_Init() {
server.on("/timeZone", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("timezone")) {
- jsonWrite(configSetup, "timezone", request->getParam("timezone")->value());
+ jsonWriteStr(configSetup, "timezone", request->getParam("timezone")->value());
}
saveConfig();
reconfigTime();
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
});
- reconfigTime();
+
+ ts.add(TIME_SYNC, 30000, [&](void*) {
+ if (GetTimeUnix() == "failed") {
+ Serial.println("[i] Time is not synchronized, start synchronization");
+ reconfigTime();
+ }
+ }, nullptr, true);
}
void reconfigTime() {
if (WiFi.status() == WL_CONNECTED) {
-
- configTime(jsonRead(configSetup, "timezone").toInt() * 3600, 0, ntpServer);
-
+ configTime(0, 0, ntpServer);
int i = 0;
Serial.println("[i] Awaiting for time ");
-
#ifdef ESP32
struct tm timeinfo;
while (!getLocalTime(&timeinfo) && i <= 4) {
@@ -26,7 +29,6 @@ void reconfigTime() {
delay(1000);
}
#endif
-
#ifdef ESP8266
// while (!time(nullptr) && i < 4) {
// Serial.print(".");
@@ -34,26 +36,33 @@ void reconfigTime() {
delay(2000);
// }
#endif
-
- Serial.print("[i] Time = ");
- Serial.print(GetDataDigital());
- Serial.print(" ");
- Serial.println(GetTime());
-
-
-
+ if (GetTimeUnix() != "failed") {
+ Serial.print("[V] Time synchronized = ");
+ Serial.print(GetDataDigital());
+ Serial.print(" ");
+ Serial.println(GetTime());
+ } else {
+ Serial.println("[E] Time server or internet connection error, will try again in 30 sec");
+ }
} else {
Serial.println("[E] Get time impossible, no wifi connection");
}
}
-//Получаем время в формате linux
-int GetTimeUnix() {
+
+//Получаем время в формате linux gmt
+String GetTimeUnix() {
time_t now = time(nullptr);
- return (now);
+ if (now < 30000) {
+ return "failed";
+ } else {
+ return String(now);
+ }
}
// Получение текущего времени
String GetTime() {
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
+ int zone = 3600 * jsonRead(configSetup, "timezone").toInt();
+ now = now + zone;
String Time = ""; // Строка для результатов времени
Time += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017
int i = Time.indexOf(":"); //Ишем позицию первого символа :
@@ -63,6 +72,8 @@ String GetTime() {
String GetTimeWOsec() {
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
+ int zone = 3600 * jsonRead(configSetup, "timezone").toInt();
+ now = now + zone;
String Time = ""; // Строка для результатов времени
Time += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017
int i = Time.indexOf(":"); //Ишем позицию первого символа :
@@ -73,6 +84,8 @@ String GetTimeWOsec() {
// Получение даты
String GetDate() {
time_t now = time(nullptr); // получаем время с помощью библиотеки time.h
+ int zone = 3600 * jsonRead(configSetup, "timezone").toInt();
+ now = now + zone;
String Data = ""; // Строка для результатов времени
Data += ctime(&now); // Преобразуем время в строку формата Thu Jan 19 00:55:35 2017
Data.replace("\n", "");
diff --git a/Timers.ino b/Timers.ino
index e6bfa22c..ea86117c 100644
--- a/Timers.ino
+++ b/Timers.ino
@@ -25,7 +25,7 @@ void Timer_countdown_init() {
delTimer (String (number));
- jsonWrite(configJson, "timerSet" + String(number), "0");
+ jsonWriteStr(configJson, "timerSet" + String(number), "0");
eventGen ("timerSet", String(number));
@@ -58,7 +58,7 @@ void timerStart() {
if (type == "hours") period_of_time = String(period_of_time.toInt() * 60 * 60);
addTimer(number, period_of_time);
- jsonWrite(configJson, "timerSet" + number, "1");
+ jsonWriteStr(configJson, "timerSet" + number, "1");
}
void addTimer(String number, String time) {
@@ -78,7 +78,7 @@ void addTimer(String number, String time) {
} else { //если его нет
tmp += new_timer + ",";
}
- jsonWrite(optionJson, "timers", tmp);
+ jsonWriteStr(optionJson, "timers", tmp);
//Serial.println("ura");
}
@@ -98,7 +98,7 @@ void delTimer (String number) {
int psn2 = tmp.indexOf(",", psn1); //4 от этой позиции находим позицию запятой
String timer = tmp.substring(psn1, psn2) + ","; //1:60, выделяем таймер который надо удалить
tmp.replace(timer, ""); //удаляем таймер
- jsonWrite(optionJson, "timers", tmp);
+ jsonWriteStr(optionJson, "timers", tmp);
}
}
@@ -157,9 +157,9 @@ void time() {
}
- jsonWrite(optionJson, "times", replace_line);
+ jsonWriteStr(optionJson, "times", replace_line);
- jsonWrite(configJson, "timeSet" + time_number, "1");
+ jsonWriteStr(configJson, "timeSet" + time_number, "1");
ts.add(TIMERS, 1000, [&](void*) {
@@ -177,7 +177,7 @@ void time() {
Serial.println(seted_time);
if (current_time == seted_time) {
- jsonWrite(configJson, "timeSet" + time_number, "0");
+ jsonWriteStr(configJson, "timeSet" + time_number, "0");
eventGen ("timeSet", time_number);
}
diff --git a/Upgrade.ino b/Upgrade.ino
index c366966e..f8b19d1b 100644
--- a/Upgrade.ino
+++ b/Upgrade.ino
@@ -1,39 +1,55 @@
void initUpgrade() {
+
+#ifdef ESP8266
+ if (WiFi.status() == WL_CONNECTED) last_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt");
+#endif
+#ifdef ESP32
+ if (WiFi.status() == WL_CONNECTED) last_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt");
+#endif
+ jsonWriteStr(configSetup, "last_version", last_version);
+ Serial.print("[i] Last firmware version: ");
+ Serial.println(last_version);
+
server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest * request) {
start_check_version = true;
Serial.print("[i] Last firmware version: ");
Serial.println(last_version);
-
+#ifdef ESP8266
+ int ChipRealSize = ESP.getFlashChipRealSize() / 1048576;
+#endif
+#ifdef ESP32
+ int ChipRealSize = 4;
+#endif
String tmp = "{}";
if (WiFi.status() == WL_CONNECTED) {
- if (!flash_1mb) {
+ if (ChipRealSize >= 4) {
if (last_version != "") {
if (last_version != "error") {
if (last_version == firmware_version) {
- jsonWrite(tmp, "title", "Последняя версия прошивки уже установлена.");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Последняя версия прошивки уже установлена.");
+ jsonWriteStr(tmp, "class", "pop-up");
} else {
upgrade_flag = true;
- jsonWrite(tmp, "title", "Идет обновление прошивки... После завершения устройство перезагрузится. Подождите одну минуту!!!");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Идет обновление прошивки... После завершения устройство перезагрузится. Подождите одну минуту!!!");
+ jsonWriteStr(tmp, "class", "pop-up");
}
} else {
- jsonWrite(tmp, "title", "Ошибка... Cервер не найден. Попробуйте позже...");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Ошибка... Cервер не найден. Попробуйте позже...");
+ jsonWriteStr(tmp, "class", "pop-up");
}
} else {
- jsonWrite(tmp, "title", "Нажмите на кнопку \"обновить прошивку\" повторно...");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Нажмите на кнопку \"обновить прошивку\" повторно...");
+ jsonWriteStr(tmp, "class", "pop-up");
}
} else {
- jsonWrite(tmp, "title", "Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти...");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Обновление по воздуху не поддерживается, модуль имеет меньше 4 мб памяти...");
+ jsonWriteStr(tmp, "class", "pop-up");
}
} else {
- jsonWrite(tmp, "title", "Модуль не подключен к роутеру...");
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "Устройство не подключен к роутеру...");
+ jsonWriteStr(tmp, "class", "pop-up");
}
request->send(200, "text/text", tmp);
});
@@ -44,9 +60,11 @@ void handle_get_url() {
start_check_version = false;
#ifdef ESP32
last_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt");
+ jsonWriteStr(configSetup, "last_version", last_version);
#endif
#ifdef ESP8266
last_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt");
+ jsonWriteStr(configSetup, "last_version", last_version);
#endif
}
}
@@ -232,24 +250,24 @@ void handle_upgrade() {
case HTTP_UPDATE_FAILED:
Serial.println(mode + "_FAILED");
var = "{}";
- jsonWrite(var, "title", "_FAILED");
- jsonWrite(var, "class", "pop-up");
+ jsonWriteStr(var, "title", "_FAILED");
+ jsonWriteStr(var, "class", "pop-up");
//request->send(200, "text/text", var);
break;
case HTTP_UPDATE_NO_UPDATES:
Serial.println(mode + "_NO_UPDATES");
var = "{}";
- jsonWrite(var, "title", "_NO_UPDATES");
- jsonWrite(var, "class", "pop-up");
+ jsonWriteStr(var, "title", "_NO_UPDATES");
+ jsonWriteStr(var, "class", "pop-up");
//request->send(200, "text/text", var);
break;
case HTTP_UPDATE_OK:
Serial.println(mode + "_UPDATE_OK");
var = "{}";
- jsonWrite(var, "title", "_UPDATE_OK");
- jsonWrite(var, "class", "pop-up");
+ jsonWriteStr(var, "title", "_UPDATE_OK");
+ jsonWriteStr(var, "class", "pop-up");
//request->send(200, "text/text", var);
break;
}
diff --git a/WiFi.ino b/WiFi.ino
index 086834d1..20f9f44c 100644
--- a/WiFi.ino
+++ b/WiFi.ino
@@ -3,10 +3,10 @@ void WIFI_init() {
// --------------------Получаем ssid password со страницы
server.on("/ssid", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("ssid")) {
- jsonWrite(configSetup, "ssid", request->getParam("ssid")->value());
+ jsonWriteStr(configSetup, "ssid", request->getParam("ssid")->value());
}
if (request->hasArg("password")) {
- jsonWrite(configSetup, "password", request->getParam("password")->value());
+ jsonWriteStr(configSetup, "password", request->getParam("password")->value());
}
saveConfig(); // Функция сохранения данных во Flash
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
@@ -14,10 +14,10 @@ void WIFI_init() {
// --------------------Получаем ssidAP passwordAP со страницы
server.on("/ssidap", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("ssidAP")) {
- jsonWrite(configSetup, "ssidAP", request->getParam("ssidAP")->value());
+ jsonWriteStr(configSetup, "ssidAP", request->getParam("ssidAP")->value());
}
if (request->hasArg("passwordAP")) {
- jsonWrite(configSetup, "passwordAP", request->getParam("passwordAP")->value());
+ jsonWriteStr(configSetup, "passwordAP", request->getParam("passwordAP")->value());
}
saveConfig(); // Функция сохранения данных во Flash
request->send(200, "text/text", "OK"); // отправляем ответ о выполнении
@@ -26,10 +26,10 @@ void WIFI_init() {
// --------------------Получаем логин и пароль для web со страницы
server.on("/web", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("web_login")) {
- jsonWrite(configSetup, "web_login", request->getParam("web_login")->value());
+ jsonWriteStr(configSetup, "web_login", request->getParam("web_login")->value());
}
if (request->hasArg("web_pass")) {
- jsonWrite(configSetup, "web_pass", request->getParam("web_pass")->value());
+ jsonWriteStr(configSetup, "web_pass", request->getParam("web_pass")->value());
}
saveConfig(); // Функция сохранения данных во Flash
//Web_server_init();
@@ -69,7 +69,7 @@ void WIFI_init() {
if (WiFi.status() == WL_CONNECT_FAILED) {
Serial.println("[E] password is not correct");
tries = 1;
- jsonWrite(optionJson, "pass_status", 1);
+ jsonWriteInt(optionJson, "pass_status", 1);
}
Serial.print(".");
delay(1000);
@@ -88,10 +88,10 @@ void WIFI_init() {
// о подключении и выводим адрес IP
Serial.println("");
Serial.println("[V] WiFi connected");
- Serial.print("[V] IP address: ");
+ Serial.print("[V] IP address: http://");
Serial.print(WiFi.localIP());
Serial.println("");
- jsonWrite(configJson, "ip", WiFi.localIP().toString());
+ jsonWriteStr(configJson, "ip", WiFi.localIP().toString());
}
}
@@ -108,7 +108,7 @@ bool StartAPMode() {
IPAddress myIP = WiFi.softAPIP();
Serial.print("AP IP address: ");
Serial.println(myIP);
- jsonWrite(configJson, "ip", myIP.toString());
+ jsonWriteStr(configJson, "ip", myIP.toString());
if (jsonReadtoInt(optionJson, "pass_status") != 1) {
ts.add(ROUTER_SEARCHING, 10 * 1000, [&](void*) {
@@ -178,7 +178,7 @@ String scanWIFI() {
int8_t dbm = WiFi.RSSI(i);
data["dbm"] = dbm;
if (ssidMy == jsonRead(configSetup, "ssid")) {
- jsonWrite(configJson, "dbm", dbm);
+ jsonWriteStr(configJson, "dbm", dbm);
}
}
String root;
diff --git a/Widgets.ino b/Widgets.ino
new file mode 100644
index 00000000..a1aedfa7
--- /dev/null
+++ b/Widgets.ino
@@ -0,0 +1,49 @@
+//======================================================================================================================
+//===============================================Создание виджетов=======================================================
+void createWidget (String widget_name, String page_name, String page_number, String file, String topic) {
+
+ String widget;
+ widget = readFile(file, 1024);
+
+ if (widget == "Failed") return;
+ if (widget == "Large") return;
+
+ widget_name.replace("#", " ");
+ page_name.replace("#", " ");
+
+ jsonWriteStr(widget, "page", page_name);
+ jsonWriteStr(widget, "order", page_number);
+ jsonWriteStr(widget, "descr", widget_name);
+ jsonWriteStr(widget, "topic", prex + "/" + topic);
+ #ifdef layout_in_rom
+ all_widgets += widget + "\r\n";
+ #else
+ addFile("layout.txt", widget);
+ #endif
+ 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("#", " ");
+
+ jsonWriteStr(widget, "page", page_name);
+ jsonWriteStr(widget, "order", page_number);
+ //jsonWriteStr(widget, "descr", widget_name);
+ jsonWriteStr(widget, "series", widget_name);
+ jsonWriteStr(widget, "maxCount", maxCount);
+ jsonWriteStr(widget, "topic", prex + "/" + topic);
+ #ifdef layout_in_rom
+ all_widgets += widget + "\r\n";
+ #else
+ addFile("layout.txt", widget);
+ #endif
+ widget = "";
+}
diff --git a/data/config.json b/data/config.json
index e16986fa..531271e5 100644
--- a/data/config.json
+++ b/data/config.json
@@ -1,5 +1,5 @@
{
- "SSDP": "MODULES",
+ "SSDP": "IoTmanager",
"chipID": "",
"ssidAP": "WiFi",
"passwordAP": "",
diff --git a/data/configs/dht11.config.txt b/data/configs/dht11.config.txt
index cd0bb02f..721a98c0 100644
--- a/data/configs/dht11.config.txt
+++ b/data/configs/dht11.config.txt
@@ -3,6 +3,8 @@ dhtH DHT11 2 Влажность#DHT,#% Датчики any-data 2
dhtComfort Степень#комфорта: Датчики 3
dhtPerception Восприятие: Датчики 4
dhtDewpoint Точка#росы: Датчики 5
+logging dhtT 1 10 Температура Датчики 6
+logging dhtH 1 10 Влажность Датчики 7
//2 - номер пина датчика
//варианты отображения: any-data, progress-round, progress-line, fill-gauge
\ No newline at end of file
diff --git a/data/js/function.js.gz b/data/js/function.js.gz
index 0dd356e1..de40f128 100644
Binary files a/data/js/function.js.gz and b/data/js/function.js.gz differ
diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino
index 182cf42f..828f9e59 100644
--- a/esp32-esp8266_iot-manager_modules_firmware.ino
+++ b/esp32-esp8266_iot-manager_modules_firmware.ino
@@ -1,36 +1,9 @@
#include "set.h"
void setup() {
-
- Serial.begin(115200);
- //Serial.setDebugOutput(true);
- Serial.println("--------------started----------------");
//--------------------------------------------------------------
- SPIFFS.begin();
- configSetup = readFile("config.json", 4096);
- configSetup.replace(" ", "");
- configSetup.replace("\r\n", "");
- Serial.println(configSetup);
- jsonWrite(configJson, "SSDP", jsonRead(configSetup, "SSDP"));
- jsonWrite(configJson, "lang", jsonRead(configSetup, "lang"));
+ File_system_init();
Serial.println("SPIFFS_init");
-
-#ifdef ESP32
- uint32_t chipID_u = ESP.getEfuseMac();
- chipID = String(chipID_u);
- jsonWrite(configSetup, "chipID", chipID);
-#endif
-
-#ifdef ESP8266
- chipID = String( ESP.getChipId() ) + "-" + String(ESP.getFlashChipId());
- jsonWrite(configSetup, "chipID", chipID);
- Serial.setDebugOutput(0);
-#endif
-
- jsonWrite(configSetup, "firmware_version", firmware_version);
-
- prex = jsonRead(configSetup, "mqttPrefix") + "/" + chipID;
- Serial.println(chipID);
//--------------------------------------------------------------
CMD_init();
Serial.println("[V] CMD_init");
@@ -59,26 +32,21 @@ void setup() {
Push_init();
Serial.println("[V] Push_init");
//--------------------------------------------------------------
- //SSDP_init();
- //Serial.println("[V] SSDP_init");
+ SSDP_init();
+ Serial.println("[V] SSDP_init");
//--------------------------------------------------------------
-
- Serial.print("[i] Date compiling: ");
- Serial.println(DATE_COMPILING);
+ ts.add(TEST, 3000, [&](void*) {
- getMemoryLoad("[i] After loading");
+ String json = "{}";
+ jsonWriteStr(json, "test", GetTime());
+ ws.textAll(json);
-#ifdef ESP8266
- last_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt");
-#endif
-#ifdef ESP32
- last_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt");
-#endif
+ getMemoryLoad("[i] After loading");
+ //Serial.print(GetDataDigital());
+ //Serial.print(" ");
+ //Serial.println(GetTime());
- jsonWrite(configSetup, "last_version", last_version);
-
- Serial.print("[i] Last firmware version: ");
- Serial.println(last_version);
+ }, nullptr, true);
just_load = false;
}
diff --git a/main.ino b/main.ino
index 10810d35..478c65a3 100644
--- a/main.ino
+++ b/main.ino
@@ -14,7 +14,7 @@ int jsonReadtoInt(String &json, String name) {
}
// ------------- Запись значения json String
-String jsonWrite(String &json, String name, String volume) {
+String jsonWriteStr(String &json, String name, String volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
@@ -24,7 +24,7 @@ String jsonWrite(String &json, String name, String volume) {
}
// ------------- Запись значения json int
-String jsonWrite(String &json, String name, int volume) {
+String jsonWriteInt(String &json, String name, int volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
@@ -34,7 +34,7 @@ String jsonWrite(String &json, String name, int volume) {
}
// ------------- Запись значения json float
-String jsonWrite(String &json, String name, float volume) {
+String jsonWriteFloat(String &json, String name, float volume) {
DynamicJsonBuffer jsonBuffer;
JsonObject& root = jsonBuffer.parseObject(json);
root[name] = volume;
@@ -42,6 +42,26 @@ String jsonWrite(String &json, String name, float volume) {
root.printTo(json);
return json;
}
+/*
+String jsonWriteArray(String &json, String value1, String value2, String value3) {
+
+ const int capacity = JSON_ARRAY_SIZE(1) + 3 * JSON_OBJECT_SIZE(3);
+
+ StaticJsonBuffer jb;
+ JsonArray& arr = jb.createArray();
+ JsonObject& obj1 = jb.createObject();
+
+ obj1[value1] = 1;
+ obj1[value2] = 2;
+ obj1[value3] = 3;
+
+ arr.add(obj1);
+
+ arr.printTo(json);
+
+ return json;
+}
+*/
//=============================================CONFIG===========================================================
void saveConfig () {
writeFile("config.json", configSetup);
@@ -159,7 +179,7 @@ String safeDataToFile(String data, String Folder)
// addFile(fileName, GetTime() + "/" + data);
Serial.println(fileName);
- jsonWrite(configJson, "test", fileName);
+ jsonWriteStr(configJson, "test", fileName);
}
// ------------- Чтение файла в строку
String readFile(String fileName, size_t len ) {
@@ -218,9 +238,8 @@ String readFileString(String fileName, String found)
return "Failed";
}
if (configFile.find(found.c_str())) {
- return configFile.readStringUntil('\r\n'); //'\r'
+ //return configFile.readStringUntil('\r'); //'\r'
}
- //return "|-|-|";
configFile.close();
}
@@ -260,7 +279,7 @@ void led_blink(int pin, int fq, String blink_satus) {
void getMemoryLoad(String text) {
#ifdef ESP8266
- int all_memory = 53312;
+ int all_memory = 52864;
#endif
#ifdef ESP32
int all_memory = 362868;
@@ -276,19 +295,19 @@ void getMemoryLoad(String text) {
}
//esp32 full memory = 362868 k bytes
-//esp8266 full memory = 53312 k bytes
+//esp8266 full memory = 52864 k bytes
//===================================================================
/*
void web_print (String text) {
if (WiFi.status() == WL_CONNECTED) {
- jsonWrite(json, "test1", jsonRead(json, "test2"));
- jsonWrite(json, "test2", jsonRead(json, "test3"));
- jsonWrite(json, "test3", jsonRead(json, "test4"));
- jsonWrite(json, "test4", jsonRead(json, "test5"));
- jsonWrite(json, "test5", jsonRead(json, "test6"));
+ jsonWriteStr(json, "test1", jsonRead(json, "test2"));
+ jsonWriteStr(json, "test2", jsonRead(json, "test3"));
+ jsonWriteStr(json, "test3", jsonRead(json, "test4"));
+ jsonWriteStr(json, "test4", jsonRead(json, "test5"));
+ jsonWriteStr(json, "test5", jsonRead(json, "test6"));
- jsonWrite(json, "test6", GetTime() + " " + text);
+ jsonWriteStr(json, "test6", GetTime() + " " + text);
ws.textAll(json);
}
@@ -345,7 +364,7 @@ void getMemoryLoad(String text) {
/*
-String getResetReason(uint8_t core) {
+ String getResetReason(uint8_t core) {
int reason = rtc_get_reset_reason(core);
switch (reason) {
case 1 : return "Power on"; break; //Vbat power on reset
@@ -365,10 +384,10 @@ String getResetReason(uint8_t core) {
case 16 : return "RTC Watch dog reset digital core and rtc module"; break;
default : return "NO_MEAN";
}
-}
+ }
-String EspClass::getResetReason(void) {
+ String EspClass::getResetReason(void) {
char buff[32];
if (resetInfo.reason == REASON_DEFAULT_RST) { // normal startup by power on
strcpy_P(buff, PSTR("Power on"));
@@ -388,5 +407,5 @@ String EspClass::getResetReason(void) {
strcpy_P(buff, PSTR("Unknown"));
}
return String(buff);
-}
+ }
*/
diff --git a/mqtt.ino b/mqtt.ino
index 61e1b97d..ac63248c 100644
--- a/mqtt.ino
+++ b/mqtt.ino
@@ -22,20 +22,20 @@ void MQTT_init() {
server.on("/mqttSave", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("mqttServer")) {
- jsonWrite(configSetup, "mqttServer", request->getParam("mqttServer")->value());
+ jsonWriteStr(configSetup, "mqttServer", request->getParam("mqttServer")->value());
}
if (request->hasArg("mqttPort")) {
int port = (request->getParam("mqttPort")->value()).toInt();
- jsonWrite(configSetup, "mqttPort", port);
+ jsonWriteInt(configSetup, "mqttPort", port);
}
if (request->hasArg("mqttPrefix")) {
- jsonWrite(configSetup, "mqttPrefix", request->getParam("mqttPrefix")->value());
+ jsonWriteStr(configSetup, "mqttPrefix", request->getParam("mqttPrefix")->value());
}
if (request->hasArg("mqttUser")) {
- jsonWrite(configSetup, "mqttUser", request->getParam("mqttUser")->value());
+ jsonWriteStr(configSetup, "mqttUser", request->getParam("mqttUser")->value());
}
if (request->hasArg("mqttPass")) {
- jsonWrite(configSetup, "mqttPass", request->getParam("mqttPass")->value());
+ jsonWriteStr(configSetup, "mqttPass", request->getParam("mqttPass")->value());
}
saveConfig();
start_connecting_to_mqtt = true;
@@ -45,8 +45,8 @@ void MQTT_init() {
server.on("/mqttCheck", HTTP_GET, [](AsyncWebServerRequest * request) {
String tmp = "{}";
- jsonWrite(tmp, "title", "" + stateMQTT());
- jsonWrite(tmp, "class", "pop-up");
+ jsonWriteStr(tmp, "title", "" + stateMQTT());
+ jsonWriteStr(tmp, "class", "pop-up");
request->send(200, "text/text", tmp);
});
}
@@ -134,14 +134,12 @@ void outcoming_date() {
sendAllWigets();
sendAllData();
-
- if (flagLoggingAnalog) sendLogData("log.analog.txt", "loganalog");
- if (flagLoggingDallas) sendLogData("log.dallas.txt", "logdallas");
- if (flagLoggingLevel) sendLogData("log.level.txt", "loglevel");
+ choose_log_date_and_send();
Serial.println("[V] Sending all date to iot manager completed");
-
}
+
+
//======================================CONFIG==================================================
boolean sendMQTT(String end_of_topik, String data) {
String topik = jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/" + end_of_topik;
@@ -161,7 +159,7 @@ boolean sendCHART(String topik, String data) {
void sendSTATUS(String topik, String state) {
topik = jsonRead(configSetup, "mqttPrefix") + "/" + chipID + "/" + topik + "/" + "status";
String json_ = "{}";
- jsonWrite(json_, "status", state);
+ jsonWriteStr(json_, "status", state);
int send_status = client.publish (topik.c_str(), json_.c_str(), false);
}
//======================================CONTROL==================================================
@@ -172,26 +170,46 @@ void sendCONTROL(String id, String topik, String state) {
//=====================================================ОТПРАВЛЯЕМ ВИДЖЕТЫ========================================================
void sendAllWigets() {
+
+#ifndef layout_in_rom
+ all_widgets = readFile("layout.txt", 5000);
+#endif
+
if (all_widgets != "") {
int counter = 0;
String line;
int psn_1 = 0;
int psn_2;
do {
- psn_2 = all_widgets.indexOf("\r\n", psn_1);
+ psn_2 = all_widgets.indexOf("\r\n", psn_1); //\r\n
line = all_widgets.substring(psn_1, psn_2);
line.replace("\n", "");
line.replace("\r\n", "");
- //jsonWrite(line, "id", String(counter));
- //jsonWrite(line, "pageId", String(counter));
+ //jsonWriteStr(line, "id", String(counter));
+ //jsonWriteStr(line, "pageId", String(counter));
counter++;
sendMQTT("config", line);
Serial.println("[V] " + line);
psn_1 = psn_2 + 1;
} while (psn_2 + 2 < all_widgets.length());
getMemoryLoad("[i] after send all widgets");
+#ifndef layout_in_rom
+ all_widgets = "";
+#endif
}
}
+/*
+void sendAllWigets2() {
+ File configFile = SPIFFS.open("/layout.txt", "r");
+ if (!configFile) {
+ return;
+ }
+ // while (str.length() != 0) {
+
+ // configFile.readStringUntil("\r\n");
+
+ // }
+}*/
//=====================================================ОТПРАВЛЯЕМ ДАННЫЕ В ВИДЖЕТЫ ПРИ ОБНОВЛЕНИИ СТРАНИЦЫ========================================================
void sendAllData() { //берет строку json и ключи превращает в топики а значения колючей в них посылает
@@ -216,32 +234,7 @@ void sendAllData() { //берет строку json и ключи превра
}
}
-void sendLogData(String file, String topic) {
- String log_date = readFile(file, 5000) + "\r\n";
-
- 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");
-
- 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() {
@@ -312,7 +305,7 @@ String stateMQTT() {
/*
//-----------------------------------------------------------------------------------------------------------------------------------------------
- //jsonWrite(tmp, "status", "1");
+ //jsonWriteStr(tmp, "status", "1");
String current_config = configJson; //{"SSDP":"MODULES","lang":"","ip":"192.168.43.60","DS":"34.00","rel1":"1","rel2":"1"}
current_config.replace("{", "");
@@ -329,7 +322,7 @@ String stateMQTT() {
state.replace("\"", ""); //1
//if (widget.lastIndexOf(topic) > 0) {
- jsonWrite(tmp, "status", state);
+ jsonWriteStr(tmp, "status", state);
//}
current_config = deleteBeforeDelimiter(current_config, ",");
}
diff --git a/push_pushingbox.ino b/push_pushingbox.ino
index 6e89ade6..331f4eb7 100644
--- a/push_pushingbox.ino
+++ b/push_pushingbox.ino
@@ -2,7 +2,7 @@ void Push_init() {
server.on("/pushingboxDate", HTTP_GET, [](AsyncWebServerRequest * request) {
if (request->hasArg("pushingbox_id")) {
- jsonWrite(configSetup, "pushingbox_id", request->getParam("pushingbox_id")->value());
+ jsonWriteStr(configSetup, "pushingbox_id", request->getParam("pushingbox_id")->value());
}
saveConfig();
diff --git a/set.h b/set.h
index c3be5731..cb408502 100644
--- a/set.h
+++ b/set.h
@@ -1,12 +1,13 @@
String firmware_version = "2.3.1";
-boolean flash_1mb = false;
//-----------------------------------------------------------------
String last_version;
boolean start_check_version = false;
//#define OTA_enable
//#define MDNS_enable
-//#define WS_enable
+#define WS_enable
+
+//#define layout_in_rom
#define TIME_COMPILING String(__TIME__)
#define DATE_COMPILING String(__DATE__)
@@ -15,9 +16,6 @@ boolean start_check_version = false;
//-----------------------------------------------------------------
#define analog_update_int 5000
//-----------------------------------------------------------------
-#define ph_shooting_interval 500 //интервал выстрела датчика
-#define ph_times_to_send 10 //после скольки выстрелов делать отправку данных
-//-----------------------------------------------------------------
#define temp_update_int 5000
//-----------------------------------------------------------------
#define tank_level_shooting_interval 500 //интервал выстрела датчика
@@ -26,7 +24,8 @@ boolean start_check_version = false;
#define dhtT_update_int 10000
#define dhtH_update_int 10000
#define dht_calculation_update_int 10000
-#define statistics_update 1000 * 60 * 60 * 4
+//-----------------------------------------------------------------
+#define statistics_update 1000 * 60 * 60 * 2
//-----------------------------------------------------------------
@@ -80,10 +79,10 @@ AsyncEventSource events("/events");
//---------------------------------------------------------------
#include
TickerScheduler ts(30);
-enum {ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, STEPPER1, STEPPER2, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, CMD, TIMER_COUNTDOWN, TIMERS, TIME, STATISTICS, TEST};
+enum {ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, STEPPER1, STEPPER2, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, dhtT_LOG, dhtH_LOG, CMD, TIMER_COUNTDOWN, TIMERS, TIME, TIME_SYNC, STATISTICS, TEST};
//---------------------------------------------------------------
//ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure
-//#include "Ticker_for_TickerScheduler/Ticker/Ticker.h"
+//#include "Ticker_for_TickerScheduler/Ticker/Ticker.h"
//---------------------------------------------------------------
#include
WiFiClient espClient;
@@ -134,7 +133,8 @@ String order_loop;
boolean flagLoggingAnalog = false;
boolean flagLoggingLevel = false;
boolean flagLoggingDallas = false;
-boolean flagLoggingPh = false;
+boolean flagLoggingdhtT = false;
+boolean flagLoggingdhtH = false;
const char* ntpServer = "pool.ntp.org";
const long gmtOffset_sec = 3600;
@@ -153,3 +153,5 @@ boolean upgrade_flag = false;
boolean get_url_flag = false;
boolean start_connecting_to_mqtt = false;
+
+String test;
diff --git a/test.ino b/test.ino
new file mode 100644
index 00000000..c8bad15d
--- /dev/null
+++ b/test.ino
@@ -0,0 +1,55 @@
+/*
+UPD
+String br = "\n\n";
+
+
+void info_init(){
+ server.on("/info", HTTP_GET, [](AsyncWebServerRequest * request) {
+ String r = ESP_info_html();
+ request->send(200, "text/html", ""+r+""); // отправляем ответ о выполнении
+ });
+ sCmd.addCommand("pwr", pwr);
+}
+
+String ESP_info_str(){
+ br = "\n\n";
+ return ESP_info();
+}
+String ESP_info_html(){
+ br = "
";
+ return ESP_info();
+}
+
+String ESP_info(){
+
+ FlashMode_t ideMode = ESP.getFlashChipMode();
+ String message = "hello from esp8266!"+br;
+ int sec = millis() / 1000;
+ int min = sec / 60;
+ int hr = min / 60;
+ message += "Uptime: "+String(hr)+":"+String(min % 60)+":"+String(sec % 60)+br;
+ message += "Vcc: " + String(ESP.getVcc() / 1024.0)+br;
+ message += "ESP Core Version: \t"+ ESP.getCoreVersion()+br;
+ message += "ESP Sdk Version: \t"+ String(ESP.getSdkVersion())+br;
+ message += "ESP Boot Mode: \t"+ String(ESP.getBootMode())+br;
+
+ message += "ESP Sketch Size: \t"+ String(ESP.getSketchSize())+br;
+ message += "ESP Free Sketch Space: \t"+ String(ESP.getFreeSketchSpace())+br;
+
+#ifdef ESP32
+ message += "wifi station get hostname: \t"+ String(wifi_station_get_hostname())+br;
+ message += "ESP min Sketch Space: \t"+ String(esp_get_minimum_free_heap_size())+br;
+#endif
+ message += "размер свободной памяти:\t"+String(ESP.getFreeHeap())+br;
+ message += "chip ID:\t"+String(ESP.getChipId(),HEX)+br;
+ message += "flash chip ID:\t"+String(ESP.getFlashChipId(),HEX)+br;
+
+ message += "размер флеш памяти IDE:\t"+String(ESP.getFlashChipSize())+br;
+ message += "размер флеш памяти SDK:\t"+String(ESP.getFlashChipRealSize())+br;
+
+ message += "частота флеш памяти, в Гц.:\t"+String(ESP.getFlashChipSpeed())+br;
+ message += "Flash ide mode:\t"+ String(ideMode == FM_QIO ? "QIO" : ideMode == FM_QOUT ? "QOUT" : ideMode == FM_DIO ? "DIO" : ideMode == FM_DOUT ? "DOUT" : "UNKNOWN")+br;
+// message += "IP address: \t"+ WiFi.localIP()+br;
+ return message;
+}
+*/