From a3b55e341ff2ace97c045875e89225e0b2db6d80 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 17 Dec 2023 23:41:18 +0100 Subject: [PATCH] Stop timers before upload tft --- .../nspanel_esphome_addon_upload_tft.yaml | 61 ++++++++++--------- 1 file changed, 33 insertions(+), 28 deletions(-) diff --git a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml index aa123a4..e30f46d 100644 --- a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml +++ b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml @@ -20,23 +20,6 @@ substitutions: upload_tft_baud_rate: "0" ############################# -#external_components: -# - source: github://pr#3256 # adds esp-idf support to http_request -# components: -# - http_request -# - source: github://pr#5910 -# components: -# - nextion -# - uart -# refresh: 1s - -##### HTTP REQUEST ##### -# Enables http client # -# for upload_tft. # -######################## -#http_request: -# id: httpclient - api: services: ##### SERVICE TO UPDATE THE TFT FILE from URL ##### @@ -228,6 +211,25 @@ script: } }; + auto send_nextion_command = [](const std::string &command) -> bool + { + static const char *const TAG = "script.upload_tft.send_nextion_command"; + ESP_LOGD(TAG, "Sending: %s", command.c_str()); + id(tf_uart).write_str(command.c_str()); + const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF}; + id(tf_uart).write_array(to_send, sizeof(to_send)); + return true; + }; + + auto disable_boot_timers_ = [send_nextion_command]() { + ESP_LOGD(TAG, "Disabling timers on boot page"); + send_nextion_command("timer.en=0"); + send_nextion_command("tm_esphome.en=0"); + send_nextion_command("tm_pageid.en=0"); + send_nextion_command("wakeup_timer.en=0"); + send_nextion_command("dim=1"); + }; + std::string framework = "Unknown"; #ifdef ARDUINO framework = "Arduino"; @@ -235,6 +237,7 @@ script: framework = "ESP-IDF"; #endif + disable_boot_timers_(); if (disp1->is_setup()) { disp1->set_backlight_brightness(1); disp1->set_component_text_printf("confirm.title", "Upload TFT\\r%s", framework.c_str()); @@ -276,16 +279,6 @@ script: uart->setup(); }; - auto send_nextion_command = [](const std::string &command) -> bool - { - static const char *const TAG = "script.upload_tft.send_nextion_command"; - ESP_LOGD(TAG, "Sending: %s", command.c_str()); - id(tf_uart).write_str(command.c_str()); - const uint8_t to_send[3] = {0xFF, 0xFF, 0xFF}; - id(tf_uart).write_array(to_send, sizeof(to_send)); - return true; - }; - auto recv_ret_string_ = [](std::string &response, uint32_t timeout, bool recv_flag) -> uint16_t { static const char *const TAG = "script.upload_tft.recv_ret_string_"; @@ -905,6 +898,7 @@ script: ESP_LOGW(TAG, "Try #1 failed"); if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #1 failed", 18); delay_seconds_(5); + disable_boot_timers_(); sprintf(update_msg, "Try #2 at %d bps", target_upload_baud_rate_); ESP_LOGD(TAG, update_msg); if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", update_msg, 18); @@ -912,6 +906,7 @@ script: ESP_LOGW(TAG, "Try #2 failed"); if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", "Try #2 failed", 18); delay_seconds_(5); + disable_boot_timers_(); sprintf(update_msg, "Try #3 at %d bps", original_baud_rate_); ESP_LOGD(TAG, update_msg); if (disp1->is_setup()) display_wrapped_text->execute("confirm.body", update_msg, 18); @@ -926,7 +921,15 @@ script: delay_seconds_(2); ESP_LOGD(TAG, "Turn on Nextion"); id(screen_power).turn_on(); - delay_seconds_(10); + delay_seconds_(2); + disable_boot_timers_(); + send_nextion_command("vis 255,0"); + exit_reparse->execute(); + delay_seconds_(3); + disable_boot_timers_(); + send_nextion_command("vis 255,0"); + delay_seconds_(4); + disable_boot_timers_(); sprintf(update_msg, "Try #4 at %d bps", original_baud_rate_); ESP_LOGD(TAG, update_msg); if (disp1->is_setup()) { @@ -942,10 +945,12 @@ script: } if (upload_tft_(url, original_baud_rate_)) id(restart_nspanel).press(); ESP_LOGW(TAG, "Try #4 failed"); + disable_boot_timers_(); if (disp1->is_setup()) { display_wrapped_text->execute("confirm.body", "Try #4 failed.", 18); delay_seconds_(3); } + disable_boot_timers_(); sprintf(update_msg, "Try #5 at %d bps", 115200); ESP_LOGD(TAG, update_msg); if (disp1->is_setup()) {