diff --git a/Cmd.ino b/Cmd.ino index 38f0f3c0..1589f292 100644 --- a/Cmd.ino +++ b/Cmd.ino @@ -342,6 +342,7 @@ void stepperSet() { count++; String pin_step = selectToMarker (jsonRead(optionJson, "stepper1"), " "); digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); + yield(); if (count > steps_int) { digitalWrite(pin_step.toInt(), LOW); ts.remove(STEPPER1); @@ -356,6 +357,7 @@ void stepperSet() { count++; String pin_step = selectToMarker (jsonRead(optionJson, "stepper2"), " "); digitalWrite(pin_step.toInt(), !digitalRead(pin_step.toInt())); + yield(); if (count > steps_int) { digitalWrite(pin_step.toInt(), LOW); ts.remove(STEPPER2); diff --git a/Init.ino b/Init.ino index ace8b18b..c0b1fd50 100644 --- a/Init.ino +++ b/Init.ino @@ -199,13 +199,14 @@ void statistics() { //----------------------------------------------------------------- #ifdef ESP8266 urls += ESP.getResetReason(); + Serial.println(ESP.getResetReason()); #endif #ifdef ESP32 - urls += "Unknown"; + urls += "Power on"; #endif urls += "&"; //----------------------------------------------------------------- - urls += "firm version: " + firmware_version + " " + DATE_COMPILING + " " + TIME_COMPILING; + urls += "ver: " + firmware_version; // + " " + DATE_COMPILING + " " + TIME_COMPILING; //----------------------------------------------------------------- String stat = getURL(urls); //Serial.println(stat); diff --git a/Logging.ino b/Logging.ino index 5c537d16..777b8507 100644 --- a/Logging.ino +++ b/Logging.ino @@ -7,15 +7,15 @@ void logging() { String period_min = sCmd.next(); String maxCount = sCmd.next(); - String optimozation = sCmd.next(); + String optimization = sCmd.next(); String widget_name = sCmd.next(); widget_name.replace("#", " "); String page_name = sCmd.next(); String page_number = sCmd.next(); - if (optimozation == "fast") chart_data_in_solid_array = true; - if (optimozation == "slow") chart_data_in_solid_array = false; + if (optimization == "fast") chart_data_in_solid_array = true; + if (optimization == "slow") chart_data_in_solid_array = false; if (sensor_name == "analog") jsonWriteStr(optionJson, "analog_logging_count", maxCount); if (sensor_name == "level") jsonWriteStr(optionJson, "level_logging_count", maxCount); diff --git a/Upgrade.ino b/Upgrade.ino index 26b46e79..f576bfe6 100644 --- a/Upgrade.ino +++ b/Upgrade.ino @@ -22,8 +22,8 @@ void initUpgrade() { if (last_version == firmware_version) { jsonWriteStr(tmp, "title", "Последняя версия прошивки уже установлена."); jsonWriteStr(tmp, "class", "pop-up"); - } else { - jsonWriteStr(tmp, "title", "Имеется новая версия прошивкиИдет обновление прошивки, после обновления страница перезагрузится автоматически...')\">Установить"); + } else { + jsonWriteStr(tmp, "title", "Имеется новая версия прошивкиИдет обновление прошивки, после обновления страница перезагрузится автоматически...')\">Установить"); jsonWriteStr(tmp, "class", "pop-up"); } } else { @@ -46,10 +46,9 @@ void initUpgrade() { }); server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest * request) { - upgrade = true; - String tmp = "{}"; - //jsonWriteStr(tmp, "title", "Есть новая версия Установить?"); - request->send(200, "text/text", "ok"); + upgrade = true; + String tmp = "{}"; + request->send(200, "text/text", "ok"); }); } @@ -72,8 +71,8 @@ void upgrade_firmware() { String scenario_for_update; String config_for_update; String configSetup_for_update; - scenario_for_update = readFile("firmware.s.txt", 3072); - config_for_update = readFile("firmware.c.txt", 3072); + scenario_for_update = readFile("firmware.s.txt", 4000); + config_for_update = readFile("firmware.c.txt", 4000); configSetup_for_update = configSetup; Serial.println("Start upgrade SPIFFS, please wait..."); @@ -109,10 +108,15 @@ void upgrade_firmware() { #endif if (ret == HTTP_UPDATE_OK) { + Serial.println("BUILD upgrade done!"); Serial.println("Restart ESP...."); ESP.restart(); + } else { + Serial.println("!!!!BUILD upgrade ERROR"); } + } else { + Serial.println("!!!!SPIFFS upgrade ERROR"); } } diff --git a/date_excess/.exclude.files b/data/.exclude.files similarity index 100% rename from date_excess/.exclude.files rename to data/.exclude.files diff --git a/data/config.json b/data/config.json index 9ce5891e..b77d425e 100644 --- a/data/config.json +++ b/data/config.json @@ -6,13 +6,13 @@ "ssid": "rise", "password": "hostel3333", "timezone": 2, - "mqttServer": "mqtt.ioty.ru", + "mqttServer": "91.204.228.124", "mqttPort": 1883, "mqttPrefix": "/rise", "mqttUser": "test", "mqttPass": "test", "scenario": "1", - "pushingbox_id": "", + "pushingbox_id": "v7C133E426B0C69E", "web_login": "admin", "web_pass": "admin" } \ No newline at end of file diff --git a/data/configs/analog.c.txt b/data/configs/analog.c.txt index 36cacea3..e6f7b16f 100644 --- a/data/configs/analog.c.txt +++ b/data/configs/analog.c.txt @@ -1,5 +1,5 @@ analog 0 Аналоговый#вход,#% Датчики progress-round 310 620 1 100 1 -logging analog 5 100 slow Аналоговый#вход Датчики 2 +logging analog 5 100 fast Аналоговый#вход Датчики 2 //если датчик углекислого газа выдает напряжение от 1 вольта до 2 вольт, то значит //значение чтения аналогового входа будут примерно равным diff --git a/data/configs/dallas.c.txt b/data/configs/dallas.c.txt index 99906390..7ac6c3d1 100644 --- a/data/configs/dallas.c.txt +++ b/data/configs/dallas.c.txt @@ -1,5 +1,5 @@ dallas 2 Водонагреватель,#t°C Датчики any-data 1 -logging dallas 1 100 slow Температура Датчики 2 +logging dallas 1 100 fast Температура Датчики 2 //2 - номер пина датчика //варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/dht11.c.txt b/data/configs/dht11.c.txt index f23ed6e0..7efec51b 100644 --- a/data/configs/dht11.c.txt +++ b/data/configs/dht11.c.txt @@ -3,8 +3,8 @@ dhtH DHT11 2 Влажность#DHT,#% Датчики any-data 2 dhtComfort Степень#комфорта: Датчики 3 dhtPerception Восприятие: Датчики 4 dhtDewpoint Точка#росы: Датчики 5 -logging dhtT 5 50 slow Температура Датчики 6 -logging dhtH 5 50 slow Влажность Датчики 7 +logging dhtT 5 50 fast Температура Датчики 6 +logging dhtH 5 50 fast Влажность Датчики 7 //2 - номер пина датчика //варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/dht22.c.txt b/data/configs/dht22.c.txt index f239ae0f..d38fa8cc 100644 --- a/data/configs/dht22.c.txt +++ b/data/configs/dht22.c.txt @@ -3,8 +3,8 @@ dhtH DHT22 2 Влажность#DHT,#% Датчики any-data 2 dhtComfort Степень#комфорта: Датчики 3 dhtPerception Восприятие: Датчики 4 dhtDewpoint Точка#росы: Датчики 5 -logging dhtT 5 50 slow Температура Датчики 6 -logging dhtH 5 50 slow Влажность Датчики 7 +logging dhtT 5 50 fast Температура Датчики 6 +logging dhtH 5 50 fast Влажность Датчики 7 //2 - номер пина датчика //варианты отображения: any-data, progress-round, progress-line, fill-gauge \ No newline at end of file diff --git a/data/configs/firmware.c.txt b/data/configs/firmware.c.txt index d473d648..ba13d5b1 100644 --- a/data/configs/firmware.c.txt +++ b/data/configs/firmware.c.txt @@ -4,9 +4,9 @@ button 3 14 Кухня Реле 0 3 pwm 1 3 Яркость#коредор: Реле 1023 4 pwm 2 4 Яркость#ванная: Реле 510 5 analog 0 Аналоговый#вход Датчики fill-gauge 1 1023 1 1023 6 -logging analog 1 100 slow Аналоговый#вход Датчики 7 +logging analog 1 100 fast Аналоговый#вход Датчики 7 -//Это демо конфигурация. В ней показано как связать кнопки c мощью сценариев +//Это демо конфигурация. В ней показано как связать кнопки c помощью сценариев //Кнопка номер 1 связана с кнопкой 2, 3 и с pwm 2 //Так же продемонстрированна система логгирования данных строкой logging //1 - это интервал между точками в минутах, 100 это количество точек diff --git a/data/configs/level.c.txt b/data/configs/level.c.txt index 28f10296..6669d8ab 100644 --- a/data/configs/level.c.txt +++ b/data/configs/level.c.txt @@ -3,7 +3,7 @@ inputDigit digit1 При#скольки#выключить? Датчики 95 2 inputDigit digit2 При#скольки#включить? Датчики 10 3 button 1 5 Насос Датчики 0 4 button 2 line1,line2, Автоматический#режим Датчики 1 5 -logging level 1 100 slow Вода#в#баке Датчики 6 +logging level 1 100 fast Вода#в#баке Датчики 6 //125 - это расстояние от датчика до дна бака в сантиметрах //20 - это расстояние от датчика до поверхности воды когда бак полный в сантиметрах diff --git a/data/configs/termostat.c.txt b/data/configs/termostat.c.txt index 0ab8525d..b5e18f64 100644 --- a/data/configs/termostat.c.txt +++ b/data/configs/termostat.c.txt @@ -1,5 +1,5 @@ dallas 2 Водонагреватель,#t°C Термостат any-data 1 -logging dallas 5 100 slow Температура Термостат 2 +logging dallas 5 100 fast Температура Термостат 2 inputDigit digit1 При#скольки#выключить? Термостат 40 3 inputDigit digit2 При#скольки#включить? Термостат 20 4 button 1 5 Нагреватель Термостат 0 5 diff --git a/data/configuration.json b/data/configuration.json index c4a132ce..d337b323 100644 --- a/data/configuration.json +++ b/data/configuration.json @@ -32,7 +32,7 @@ "class": "btn btn-warning btn-lg", "style": "display:inline", "title": { - "#": "Выбирите то, во что Вы хотите превратить ESP ", + "#": "Выбирите то, во что Вы хотите превратить это устройство ", "/preset?arg=1": "1.Вкл. выкл. локального реле", "/preset?arg=2": "2.Вкл. выкл. локального реле в определенное время", "/preset?arg=3": "3.Вкл. выкл. локального реле на определенный период времени", diff --git a/data/dev.json b/data/dev.json index dc1ad578..17e428cb 100644 --- a/data/dev.json +++ b/data/dev.json @@ -52,6 +52,23 @@ "class": "alert alert-warning", "title": "После нажатия на кнопку 'Переформировать список устройств' ждите примерно минуту, а затем обновите страницу и список появится вновь" }, + { + "type": "h3", + "title": "Имя этого устройства:" + }, + { + "type": "input", + "title": "Имя устройства", + "name":"dev_name", + "state": "{{name}}", + "pattern": "[A-Za-z0-9]{6,12}" + }, + { + "type": "button", + "title": "Сохранить", + "action": "name?arg=[[dev_name]]", + "class": "btn btn-block btn-success" + }, { "type": "hr" }, diff --git a/data/firmware.c.txt b/data/firmware.c.txt index d473d648..ba13d5b1 100644 --- a/data/firmware.c.txt +++ b/data/firmware.c.txt @@ -4,9 +4,9 @@ button 3 14 Кухня Реле 0 3 pwm 1 3 Яркость#коредор: Реле 1023 4 pwm 2 4 Яркость#ванная: Реле 510 5 analog 0 Аналоговый#вход Датчики fill-gauge 1 1023 1 1023 6 -logging analog 1 100 slow Аналоговый#вход Датчики 7 +logging analog 1 100 fast Аналоговый#вход Датчики 7 -//Это демо конфигурация. В ней показано как связать кнопки c мощью сценариев +//Это демо конфигурация. В ней показано как связать кнопки c помощью сценариев //Кнопка номер 1 связана с кнопкой 2, 3 и с pwm 2 //Так же продемонстрированна система логгирования данных строкой logging //1 - это интервал между точками в минутах, 100 это количество точек diff --git a/data/index.json b/data/index.json index 573b5155..64fd07ba 100644 --- a/data/index.json +++ b/data/index.json @@ -29,7 +29,7 @@ }, { "type": "h4", - "title": "SPIFFS version: 2.3.2" + "title": "SPIFFS version: 2.3.3" }, { "type": "hr" diff --git a/data/mqtt.json b/data/mqtt.json index da2a8476..1941798b 100644 --- a/data/mqtt.json +++ b/data/mqtt.json @@ -9,6 +9,11 @@ "title": "{{name}}", "class": "alert-warning" }, + { + "type": "text", + "class": "alert alert-warning", + "title": "Обратите внимание что поле prefix может состоять только из одного слова и одного разделителя: /your_prefix, вариант вида: /your_prefix1/your_prefix2 работать не будет. После изменения поля prefix необходимо перезагрузить устройство" + }, { "type": "h4", "title": "Server name:" @@ -68,7 +73,7 @@ { "type": "text", "class": "alert alert-warning", - "title": "Прежде чем нажимать на кнопку 'Отправить настройки MQTT' сохрание их, если Вы их меняли. Настройки получат и перезапишут все устройства в локальной сети" + "title": "Прежде чем нажимать на кнопку 'Отправить настройки MQTT' сохрание их, если Вы их меняли. Настройки получат и перезапишут все устройства в локальной сети" }, { "type": "button", diff --git a/data/setup.json b/data/setup.json index 7425c4d9..50f0260b 100644 --- a/data/setup.json +++ b/data/setup.json @@ -28,7 +28,7 @@ "title": "Имя устройства", "name":"dev_name", "state": "{{name}}", - "pattern": "[0-9a-zA-Zа-яА-Я.\\- ]{1,20}" + "pattern": "[A-Za-z0-9]{6,12}" }, { "type": "button", diff --git a/data_excess/.exclude.files b/data_excess/.exclude.files new file mode 100644 index 00000000..955397fa --- /dev/null +++ b/data_excess/.exclude.files @@ -0,0 +1,2 @@ +/*.js.gz +/.exclude.files diff --git a/date_excess/ace.js.gz b/data_excess/ace.js.gz similarity index 100% rename from date_excess/ace.js.gz rename to data_excess/ace.js.gz diff --git a/date_excess/config-all.json b/data_excess/config-all.json similarity index 100% rename from date_excess/config-all.json rename to data_excess/config-all.json diff --git a/date_excess/edit.htm.gz b/data_excess/edit.htm.gz similarity index 100% rename from date_excess/edit.htm.gz rename to data_excess/edit.htm.gz diff --git a/date_excess/favicon.ico b/data_excess/favicon.ico similarity index 100% rename from date_excess/favicon.ico rename to data_excess/favicon.ico diff --git a/date_excess/mode-html.js.gz b/data_excess/mode-html.js.gz similarity index 100% rename from date_excess/mode-html.js.gz rename to data_excess/mode-html.js.gz diff --git a/date_excess/page.htm.gz b/data_excess/page.htm.gz similarity index 100% rename from date_excess/page.htm.gz rename to data_excess/page.htm.gz diff --git a/data/robots.txt b/data_excess/robots.txt similarity index 100% rename from data/robots.txt rename to data_excess/robots.txt diff --git a/date_excess/worker-html.js.gz b/data_excess/worker-html.js.gz similarity index 100% rename from date_excess/worker-html.js.gz rename to data_excess/worker-html.js.gz diff --git a/data_for_edit_for_esp32_ace.js.gz/ace.js.gz b/data_for_edit_for_esp32_ace.js.gz/ace.js.gz new file mode 100644 index 00000000..7b175c1c Binary files /dev/null and b/data_for_edit_for_esp32_ace.js.gz/ace.js.gz differ diff --git a/date_excess/config-my.json b/date_excess/config-my.json deleted file mode 100644 index 9ce5891e..00000000 --- a/date_excess/config-my.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "IoTmanager", - "chipID": "", - "ssidAP": "WiFi", - "passwordAP": "", - "ssid": "rise", - "password": "hostel3333", - "timezone": 2, - "mqttServer": "mqtt.ioty.ru", - "mqttPort": 1883, - "mqttPrefix": "/rise", - "mqttUser": "test", - "mqttPass": "test", - "scenario": "1", - "pushingbox_id": "", - "web_login": "admin", - "web_pass": "admin" -} \ No newline at end of file diff --git a/push_pushingbox.ino b/push_pushingbox.ino index 331f4eb7..d517d5f1 100644 --- a/push_pushingbox.ino +++ b/push_pushingbox.ino @@ -25,10 +25,10 @@ void pushControl() { Serial.println("- starting client"); - WiFiClient client; + WiFiClient client_push; Serial.println("- connecting to pushing server: " + String(logServer)); - if (client.connect(logServer, 80)) { + if (client_push.connect(logServer, 80)) { Serial.println("- succesfully connected"); String postStr = "devid="; @@ -44,15 +44,15 @@ void pushControl() { Serial.println("- sending data..."); - client.print("POST /pushingbox HTTP/1.1\n"); - client.print("Host: api.pushingbox.com\n"); - client.print("Connection: close\n"); - client.print("Content-Type: application/x-www-form-urlencoded\n"); - client.print("Content-Length: "); - client.print(postStr.length()); - client.print("\n\n"); - client.print(postStr); + client_push.print("POST /pushingbox HTTP/1.1\n"); + client_push.print("Host: api.pushingbox.com\n"); + client_push.print("Connection: close\n"); + client_push.print("Content-Type: application/x-www-form-urlencoded\n"); + client_push.print("Content-Length: "); + client_push.print(postStr.length()); + client_push.print("\n\n"); + client_push.print(postStr); } - client.stop(); + client_push.stop(); Serial.println("- stopping the client"); } diff --git a/set.h b/set.h index 11fb4619..04c3de73 100644 --- a/set.h +++ b/set.h @@ -1,5 +1,5 @@ //===============FIRMWARE SETTINGS===================================== -String firmware_version = "2.3.2"; +String firmware_version = "2.3.3"; boolean mb_4_of_memory = true; //#define OTA_enable //#define MDNS_enable @@ -151,3 +151,4 @@ IPAddress udp_multicastIP (239, 255, 255, 255); #endif String received_ip; String received_udp_line; +int udp_period; diff --git a/udp.ino b/udp.ino index 2294c995..bab01d27 100644 --- a/udp.ino +++ b/udp.ino @@ -34,11 +34,14 @@ void UDP_init() { #endif handleUdp_esp32(); - - ts.add(UDP, 30000, [&](void*) { + + randomSeed(micros()); + udp_period = random(20000, 40000); + + ts.add(UDP, udp_period, [&](void*) { if (WiFi.status() == WL_CONNECTED) { if (!udp_busy) { - String line_to_send = chipID + ";" + jsonRead(configSetup, "name"); + String line_to_send = "iotm;" + chipID + ";" + jsonRead(configSetup, "name"); #ifdef ESP8266 Udp.beginPacketMulticast(udp_multicastIP, udp_port, WiFi.localIP()); Udp.write(line_to_send.c_str()); @@ -66,7 +69,14 @@ void handleUdp() { udp_incomingPacket[len] = 0; } received_udp_line = String(udp_incomingPacket); - udp_data_parse = true; + + if (received_udp_line.indexOf("iotm;") >= 0) { + udp_data_parse = true; + } + if (received_udp_line.indexOf("mqttServer") >= 0) { + udp_data_parse = true; + } + } } #endif @@ -78,7 +88,14 @@ void handleUdp_esp32() { udp.onPacket([](AsyncUDPPacket packet) { received_udp_line = (char*)packet.data(); received_ip = packet.remoteIP().toString(); - udp_data_parse = true; + + if (received_udp_line.indexOf("iotm;") >= 0) { + udp_data_parse = true; + } + if (received_udp_line.indexOf("mqttServer") >= 0) { + udp_data_parse = true; + } + }); } #endif @@ -90,7 +107,7 @@ void do_udp_data_parse() { Serial.print("[UDP=>] " + received_ip); Serial.print(" "); Serial.println(received_udp_line); - if (received_udp_line.indexOf("mqttServer") > 0) { + if (received_udp_line.indexOf("mqttServer") >= 0) { jsonWriteStr(configSetup, "mqttServer", jsonRead(received_udp_line, "mqttServer")); jsonWriteInt(configSetup, "mqttPort", jsonReadtoInt(received_udp_line, "mqttPort")); jsonWriteStr(configSetup, "mqttPrefix", jsonRead(received_udp_line, "mqttPrefix")); @@ -99,8 +116,9 @@ void do_udp_data_parse() { saveConfig(); Serial.println("[V] new mqtt setting received from udp and saved"); mqtt_connection = true; - } else { - add_dev_in_list("dev.csv", selectFromMarkerToMarker(received_udp_line, ";", 0), selectFromMarkerToMarker(received_udp_line, ";", 1), received_ip); + } + if (received_udp_line.indexOf("iotm;") >= 0) { + add_dev_in_list("dev.csv", selectFromMarkerToMarker(received_udp_line, ";", 1), selectFromMarkerToMarker(received_udp_line, ";", 2), received_ip); } } }