From 4daf567f44a7450dd9f9b4b3f638fc6cd3eacc2f Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Mon, 16 Oct 2023 11:59:38 +0200 Subject: [PATCH] Revert back to arduino It failed tests --- nspanel_esphome.yaml | 72 +++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 24 deletions(-) diff --git a/nspanel_esphome.yaml b/nspanel_esphome.yaml index 06c2031..944b503 100644 --- a/nspanel_esphome.yaml +++ b/nspanel_esphome.yaml @@ -69,8 +69,8 @@ esphome: ##### TYPE OF ESP BOARD ##### esp32: board: esp32dev - framework: - type: esp-idf +# framework: +# type: esp-idf ##### OTA PASSWORD ##### ota: @@ -2202,14 +2202,21 @@ script: return ret; }; - auto upload_end_ = [&](bool retry) -> bool + auto upload_end_ = [&](bool completed) -> bool { static const char *const TAG = "script.upload_tft.upload_end_"; + ESP_LOGD(TAG, "Completed: %i", completed ? 1 : 0); ESP_LOGD(TAG, "Restarting Nextion"); send_nextion_command("rest"); - if (is_updating_) is_updating_ = not retry; - if (retry) ESP_LOGD(TAG, "Nextion TFT upload will try again"); - return not retry; + #ifdef ARDUINO + delay(1500); + #elif defined(ESP_PLATFORM) + vTaskDelay(pdMS_TO_TICKS(1500)); + #endif + + is_updating_ = false; + if (!completed) ESP_LOGD(TAG, "Nextion TFT upload will try again"); + return completed; }; #ifdef ARDUINO // arduino # To do: Move to Nextion component on ESPHome @@ -2351,7 +2358,7 @@ script: ESP_LOGD(TAG, "Connection failed"); ExternalRAMAllocator allocator(ExternalRAMAllocator::ALLOW_FAILURE); allocator.deallocate(transfer_buffer_, transfer_buffer_size_); - return upload_end_(true); + return upload_end_(false); } else { ESP_LOGD(TAG, "Connected"); } @@ -2377,7 +2384,7 @@ script: } if ((code != 200 && code != 206) || tries > 5) { - return upload_end_(true); + return upload_end_(false); } String content_range_string = http.header("Content-Range"); @@ -2388,7 +2395,7 @@ script: if (content_length_ < 4096) { ESP_LOGE(TAG, "Failed to get file size"); - return upload_end_(true); + return upload_end_(false); } ESP_LOGD(TAG, "Updating Nextion"); @@ -2426,7 +2433,7 @@ script: ESP_LOGD(TAG, "Preparation for tft update done"); } else { ESP_LOGD(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str()); - return upload_end_(true); + return upload_end_(false); } // Nextion wants 4096 bytes at a time. Make chunk_size a multiple of 4096 @@ -2451,7 +2458,7 @@ script: if (!transfer_buffer_) { - return upload_end_(true); + return upload_end_(false); } } @@ -2466,7 +2473,7 @@ script: result = upload_by_chunks_arduino(&http, url, result); if (result < 0) { ESP_LOGD(TAG, "Error updating Nextion!"); - return upload_end_(true); + return upload_end_(false); } App.feed_wdt(); ESP_LOGD(TAG, "Heap Size %d, Bytes left %d", ESP.getFreeHeap(), content_length_); @@ -2474,7 +2481,7 @@ script: is_updating_ = false; ESP_LOGD(TAG, "Successfully updated Nextion!"); - return upload_end_(false); + return upload_end_(true); }; #elif defined(ESP_PLATFORM) // esp-idf # To do: Move to Nextion component on ESPHome auto upload_by_chunks_esp_idf = [&](const std::string &url, int range_start) -> int @@ -2512,7 +2519,7 @@ script: ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %d, retries(%d/10)", url.c_str(), status, tries); tries++; - delay(1000); + vTaskDelay(pdMS_TO_TICKS(1000)); } if (tries > 10) { @@ -2528,7 +2535,7 @@ script: while (fetched < range) { int size = esp_http_client_get_content_length(client); if (!size) { - delay(2); + vTaskDelay(pdMS_TO_TICKS(2)); continue; } int c = esp_http_client_read(client, reinterpret_cast(&transfer_buffer_[fetched]), size); @@ -2550,7 +2557,7 @@ script: if (!upload_first_chunk_sent_) { upload_first_chunk_sent_ = true; - delay(500); + vTaskDelay(pdMS_TO_TICKS(500)); } recv_ret_string_(recv_string, 5000, true); @@ -2607,17 +2614,17 @@ script: int tries = 1; int status = esp_http_client_perform(http); - delay(100); + vTaskDelay(pdMS_TO_TICKS(100)); while ((status != ESP_OK || (esp_http_client_get_status_code(http) != 200 && esp_http_client_get_status_code(http) != 206)) && tries <= 5) { ESP_LOGW(TAG, "HTTP Request failed; URL: %s; Error: %d, retrying (%d/5)", url.c_str(), status, tries); - delay(250); + vTaskDelay(pdMS_TO_TICKS(250)); status = esp_http_client_perform(http); tries++; } if (tries > 5) { esp_http_client_cleanup(http); - return upload_end_(true); + return upload_end_(false); } int http_status = esp_http_client_get_status_code(http); @@ -2651,7 +2658,7 @@ script: if (content_length_ < 4096) { ESP_LOGE(TAG, "File size check failed. Size: %d", content_length_); - return upload_end_(true); + return upload_end_(false); } else { ESP_LOGD(TAG, "File size check passed. Proceeding..."); } @@ -2691,7 +2698,7 @@ script: ESP_LOGD(TAG, "Preparation for tft update done"); } else { ESP_LOGD(TAG, "Preparation for tft update failed %d \"%s\"", response[0], response.c_str()); - return upload_end_(true); + return upload_end_(false); } // Nextion wants 4096 bytes at a time. Make chunk_size a multiple of 4096 @@ -2715,7 +2722,7 @@ script: transfer_buffer_ = allocator.allocate(chunk_size); if (!transfer_buffer_) { - return upload_end_(true); + return upload_end_(false); } } @@ -2730,7 +2737,7 @@ script: result = upload_by_chunks_esp_idf(url, result); if (result < 0) { ESP_LOGD(TAG, "Error updating Nextion!"); - return upload_end_(true); + return upload_end_(false); } App.feed_wdt(); ESP_LOGD(TAG, "Heap Size %d, Bytes left %d", esp_get_free_heap_size(), content_length_); @@ -2738,20 +2745,29 @@ script: is_updating_ = false; ESP_LOGD(TAG, "Successfully updated Nextion!"); - return upload_end_(false); + return upload_end_(true); }; #endif unsigned int upload_tries = 0; while (upload_tries < 5) { upload_tries++; + ESP_LOGD(TAG, "Try #%i", upload_tries); if (upload_tft_(url, id(tf_uart).get_baud_rate())) id(restart_nspanel).press(); ESP_LOGD(TAG, "Turn off Nextion"); id(screen_power).turn_off(); + #ifdef ARDUINO delay(1500); + #elif defined(ESP_PLATFORM) + vTaskDelay(pdMS_TO_TICKS(1500)); + #endif ESP_LOGD(TAG, "Turn on Nextion"); id(screen_power).turn_on(); + #ifdef ARDUINO delay(1500); + #elif defined(ESP_PLATFORM) + vTaskDelay(pdMS_TO_TICKS(1500)); + #endif } unsigned int new_baud_rate; if (id(tf_uart).get_baud_rate() == 115200) { @@ -2766,11 +2782,19 @@ script: ESP_LOGE(TAG, "TFT upload failed."); ESP_LOGD(TAG, "Turn off Nextion"); id(screen_power).turn_off(); + #ifdef ARDUINO delay(1500); + #elif defined(ESP_PLATFORM) + vTaskDelay(pdMS_TO_TICKS(1500)); + #endif ESP_LOGD(TAG, "Turn on Nextion"); id(screen_power).turn_on(); ESP_LOGD(TAG, "Restarting esphome"); + #ifdef ARDUINO delay(1500); + #elif defined(ESP_PLATFORM) + vTaskDelay(pdMS_TO_TICKS(1500)); + #endif id(restart_nspanel).press(); ESP_LOGD(TAG, "Finished!");