diff --git a/nspanel_esphome_addon_upload_tft.yaml b/nspanel_esphome_addon_upload_tft.yaml index 178fe1e..065b46a 100644 --- a/nspanel_esphome_addon_upload_tft.yaml +++ b/nspanel_esphome_addon_upload_tft.yaml @@ -90,15 +90,52 @@ script: - lambda: |- static const char *const TAG = "script.upload_tft"; ESP_LOGVV(TAG, "Starting..."); - ESP_LOGV(TAG, "Setting Nextion protocol reparse mode to passive"); - id(disp1).set_protocol_reparse_mode(false); ESP_LOGV(TAG, "Setting TFT url: %s", url.c_str()); id(disp1)->set_tft_url(url.c_str()); - ESP_LOGV(TAG, "Calling upload from Nextion component"); - id(disp1)->upload_tft(); - ESP_LOGVV(TAG, "Finished"); + unsigned int upload_tries = 0; + while (upload_tries < 5) { + upload_tries++; + ESP_LOGD(TAG, "Try #%i", upload_tries); + ESP_LOGD(TAG, "Setting Nextion protocol reparse mode to passive"); + id(disp1).set_protocol_reparse_mode(false); + ESP_LOGV(TAG, "Calling upload from Nextion component"); + if (id(disp1)->upload_tft()) 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 + } + 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_LOGV(TAG, "Finished!"); - - id: upload_tft_working + + - id: upload_tft_legacy # Not in use - To be removed when Nextion component is updated mode: single parameters: url: string