diff --git a/Upgrade.ino b/Upgrade.ino index 17fdc72d..17cb8875 100644 --- a/Upgrade.ino +++ b/Upgrade.ino @@ -1,79 +1,158 @@ void initUpgrade() { - server.on("/upgrade", HTTP_GET, [](AsyncWebServerRequest * request) { - Serial.println("start update..."); +#ifdef ESP32 + new_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt"); +#endif +#ifdef ESP8266 + new_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt"); +#endif - //WiFiClient client_for; + Serial.println(new_version); + + String tmp = "{}"; - //httpUpdate.rebootOnUpdate(false); + if (new_version != "error") { + if (new_version == firmware_version) { + jsonWrite(tmp, "title", "Последняя версия прошивки уже установлена."); + jsonWrite(tmp, "class", "pop-up"); + } else { + upgrade_flag = true; + jsonWrite(tmp, "title", "Идет обновление прошивки... После завершения устройство перезагрузится."); + jsonWrite(tmp, "class", "pop-up"); + } + } else { + jsonWrite(tmp, "title", "Ошибка... Cервер не найден. Попробуйте позже..."); + jsonWrite(tmp, "class", "pop-up"); + } - //t_httpUpdate_return ret = httpUpdate.updateSpiffs(client_for, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin"); - - //if (ret == HTTP_UPDATE_OK) { - - Serial.println("update Spiffs done!"); - - //t_httpUpdate_return ret = httpUpdate.update(client_for, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin"); - - // switch (ret) { - // case HTTP_UPDATE_FAILED: - // Serial.printf("HTTP_UPDATE_FAILED Error (%d): %s", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str()); - // break; - - // case HTTP_UPDATE_NO_UPDATES: - // Serial.println("HTTP_UPDATE_NO_UPDATES"); - // break; - - // case HTTP_UPDATE_OK: - // Serial.println("HTTP_UPDATE_OK"); - // break; - // } - - // } - - //UpdateStatus(ret); - - /* #ifdef ESP8266 - String new_version = getURL("http://91.204.228.124:1100/update/esp8266/version.txt"); - #endif - - #ifdef ESP32 - String new_version = getURL("http://91.204.228.124:1100/update/esp32/version.txt"); - #endif - - Serial.println(new_version); - - String tmp = "{}"; - if (new_version == firmware_version) { - jsonWrite(tmp, "title", " Установленна последняя версия: " + new_version); - jsonWrite(tmp, "class", "pop-up"); - } else { - jsonWrite(tmp, "title", " Начитаню обновление до версии: " + new_version); - jsonWrite(tmp, "class", "pop-up"); - webUpgrade(); - }*/ - - request->send(200, "text/text", "ok"); + request->send(200, "text/text", tmp); }); - } -void UpdateStatus(t_httpUpdate_return set) { +void upgrade_firmware() { + + String scenario_for_update; + String config_for_update; + String configSetup_for_update; + scenario_for_update = readFile("firmware.scenario.txt", 2048); + config_for_update = readFile("firmware.config.txt", 2048); + configSetup_for_update = configSetup; + + Serial.println("Start upgrade SPIFFS, please wait..."); + WiFiClient client_for_upgrade; + +#ifdef ESP32 + httpUpdate.rebootOnUpdate(false); + t_httpUpdate_return ret = httpUpdate.updateSpiffs(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin"); +#endif +#ifdef ESP8266 + ESPhttpUpdate.rebootOnUpdate(false); + t_httpUpdate_return ret = ESPhttpUpdate.updateSpiffs(client_for_upgrade, "http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.spiffs.bin"); +#endif + + if (ret == HTTP_UPDATE_OK) { + + writeFile("firmware.scenario.txt", scenario_for_update); + writeFile("firmware.config.txt", config_for_update); + writeFile("config.json", configSetup_for_update); + saveConfig(); + + Serial.println("SPIFFS upgrade done!"); + Serial.println("Start upgrade BUILD, please wait..."); + +#ifdef ESP32 + httpUpdate.rebootOnUpdate(true); + t_httpUpdate_return ret = httpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp32/esp32-esp8266_iot-manager_modules_firmware.ino.bin"); +#endif +#ifdef ESP8266 + ESPhttpUpdate.rebootOnUpdate(true); + t_httpUpdate_return ret = ESPhttpUpdate.update(client_for_upgrade, "http://91.204.228.124:1100/update/esp8266/esp32-esp8266_iot-manager_modules_firmware.ino.bin"); +#endif + + Serial.println("BUILD upgrade done!"); + Serial.println("Restart ESP...."); + + } else { + //upgrade_status(t_httpUpdate_return ret); + } +} + +void handle_upgrade() { + if (upgrade_flag) { + upgrade_flag = false; + upgrade_firmware(); + } +} + +/* + void upgrade_status(t_httpUpdate_return set) { switch (set) { case HTTP_UPDATE_FAILED: - Serial.printf("HTTP_UPDATE_FAILED Error (%d): %s\n", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str()); + Serial.printf("UPDATE_FAILED Error (%d): %s", httpUpdate.getLastError(), httpUpdate.getLastErrorString().c_str()); break; case HTTP_UPDATE_NO_UPDATES: - Serial.println("HTTP_UPDATE_NO_UPDATES"); + Serial.println("NO_UPDATES"); break; case HTTP_UPDATE_OK: Serial.println("HTTP_UPDATE_OK"); break; } -} + } +*/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + /* // ----------------------- Обновление с сайта void webUpgrade() { diff --git a/data/index.json b/data/index.json index a6fab9c0..01737869 100644 --- a/data/index.json +++ b/data/index.json @@ -19,6 +19,18 @@ "type": "h4", "title": "IP address: {{ip}}" }, + { + "type": "h4", + "title": "Uptime: {{uptime}}" + }, + { + "type": "h4", + "title": "Build version: {{firmware_version}}" + }, + { + "type": "h4", + "title": "SPIFFS version: 2.2" + }, { "type": "link", "title": "Конфигурация устройства", diff --git a/esp32-esp8266_iot-manager_modules_firmware.ino b/esp32-esp8266_iot-manager_modules_firmware.ino index 768b96b6..ad38568b 100644 --- a/esp32-esp8266_iot-manager_modules_firmware.ino +++ b/esp32-esp8266_iot-manager_modules_firmware.ino @@ -25,6 +25,8 @@ void setup() { Serial.setDebugOutput(0); #endif + jsonWrite(configSetup, "firmware_version", firmware_version); + prex = prefix + "/" + chipID; Serial.println(chipID); //-------------------------------------------------------------- @@ -58,10 +60,11 @@ void setup() { getMemoryLoad("[i] After loading"); - // ts.add(TEST, 20000, [&](void*) { + ts.add(TEST, 14400, [&](void*) { - // }, nullptr, true); + statistics(); + }, nullptr, false); } void loop() { @@ -81,4 +84,5 @@ void loop() { handleScenario(); ts.update(); + handle_upgrade(); } diff --git a/main.ino b/main.ino index 2ed3fa31..c6a2662f 100644 --- a/main.ino +++ b/main.ino @@ -137,8 +137,7 @@ String getURL(String urls) { if (httpCode == HTTP_CODE_OK) { answer = http.getString(); } - else - { + else { answer = "error"; } http.end(); diff --git a/set.h b/set.h index d571ae65..b836a8c9 100644 --- a/set.h +++ b/set.h @@ -1,4 +1,6 @@ String firmware_version = "2.2"; +String new_version; + //#define OTA_enable //#define MDNS_enable @@ -71,7 +73,7 @@ AsyncEventSource events("/events"); #include "time.h" #include TickerScheduler ts(30); -enum { ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TIME, TEST}; +enum {ROUTER_SEARCHING, WIFI_MQTT_CONNECTION_CHECK, LEVEL, ANALOG_, DALLAS, DHTT, DHTH, DHTC, DHTP, DHTD, ANALOG_LOG, LEVEL_LOG, DALLAS_LOG, PH_LOG, CMD , TIMER_COUNTDOWN, TIMERS, TIME, TEST}; //ssl//#include "dependencies/WiFiClientSecure/WiFiClientSecure.h" //using older WiFiClientSecure #include @@ -136,3 +138,7 @@ int wifi_lost_error = 0; int mqtt_lost_error = -1; String var; + +boolean upgrade_flag = false; + +boolean get_url_flag = false;