diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 0d13c2d..e9db845 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -78,6 +78,8 @@ wifi:
As multiple alarms are supported now, the system don't know which one to show on the wake-up.
11. **Changes in icon presentation.**
As part of our efforts to standardize icons across various pages, you might notice some differences in how they appear and behave. This includes new colors for lights and climate icons, as well as the introduction of new icon designs. While many aspects can still be customized through blueprint settings, the default presentation will now adhere to this new standardized format. These changes might be a departure from what you're accustomed to in previous versions, but they aim to enhance overall consistency and user experience.
+12. ***Action required:* Reset your wake-up page selection.**
+ We've enhanced the wake-up page functionality for improved consistency after power cycles. Previously, the system didn't remember your selection following a power outage. With our latest update, this issue has been resolved. However, this improvement requires you to reselect your wake-up page one more time. Thanks for your cooperation in making these settings more reliable for everyday use.
## Overview of noteworthy changes
diff --git a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
index b005547..d28738f 100644
--- a/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
+++ b/advanced/esphome/nspanel_esphome_addon_upload_tft.yaml
@@ -1204,7 +1204,7 @@ select:
- "NSPanel US (CJK languages)"
- "NSPanel US Landscape (CJK languages)"
initial_option: "Use nextion_update_url"
- optimistic: false
+ optimistic: true
restore_value: true
internal: false
entity_category: config
@@ -1222,7 +1222,7 @@ select:
- "beta"
- "dev"
initial_option: "main"
- optimistic: false
+ optimistic: true
restore_value: true
internal: false
entity_category: config
diff --git a/advanced/esphome/nspanel_esphome_core.yaml b/advanced/esphome/nspanel_esphome_core.yaml
index 5bd8815..a8c29b1 100644
--- a/advanced/esphome/nspanel_esphome_core.yaml
+++ b/advanced/esphome/nspanel_esphome_core.yaml
@@ -37,6 +37,9 @@ esphome:
static const char *const TAG = "on_boot";
ESP_LOGD(TAG, "After boot check-up starting");
set_baud_rate->execute(stoi(baud_rate->state), true);
+ - select.set:
+ id: wakeup_page_name
+ option: !lambda return id(page_names)[id(wakeup_page_id)].c_str();
on_shutdown:
then:
- switch.turn_off: screen_power
@@ -455,12 +458,12 @@ api:
reset_timer: bool
then:
- lambda: |-
- if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str());
+ if (current_page->state == "screensaver") disp1->goto_page(id(wakeup_page_id));
if (reset_timer)
- timer_reset_all->execute(wakeup_page_name->state.c_str());
+ timer_reset_all->execute(id(page_names)[id(wakeup_page_id)].c_str());
else {
- timer_sleep->execute(wakeup_page_name->state.c_str(), int(timeout_sleep->state));
- timer_dim->execute(wakeup_page_name->state.c_str(), int(timeout_dim->state));
+ timer_sleep->execute(id(page_names)[id(wakeup_page_id)].c_str(), int(timeout_sleep->state));
+ timer_dim->execute(id(page_names)[id(wakeup_page_id)].c_str(), int(timeout_dim->state));
}
#### Service to set the entities ####
@@ -719,6 +722,11 @@ display:
##### START - GLOBALS CONFIGURATION #####
globals:
+ ##### Wake-up page id #####
+ - id: wakeup_page_id
+ type: uint
+ restore_value: true
+ initial_value: '0'
##### Wi-Fi timeout #####
- id: wifi_timeout
@@ -1248,11 +1256,15 @@ select:
- qrcode
initial_option: home
optimistic: true
- restore_value: true
+ restore_value: false
internal: false
entity_category: config
icon: mdi:page-next-outline
set_action:
+ - lambda: |-
+ static const char *const TAG = "select.wakeup_page_name";
+ ESP_LOGD(TAG, "New wake-up page selected: %s", x.c_str());
+ set_page_id->execute("wakeup_page_id", x.c_str());
- script.execute: page_screensaver
##### START - SENSOR CONFIGURATION #####
@@ -1441,7 +1453,7 @@ switch:
- lambda: |-
if (id(setup_sequence_completed)) {
nextion_init->publish_state(disp1->is_setup());
- disp1->goto_page(wakeup_page_name->state.c_str());
+ disp1->goto_page(id(wakeup_page_id));
}
on_turn_off:
- lambda: |-
@@ -1869,9 +1881,9 @@ script:
- rtttl.play:
rtttl: 'two short:d=4,o=5,b=100:16e6,16e6'
- lambda: |-
- ESP_LOGD("script.global_settings", "Jump to wake-up page: %s", wakeup_page_name->state.c_str());
- disp1->goto_page(wakeup_page_name->state.c_str());
- timer_reset_all->execute(wakeup_page_name->state.c_str());
+ ESP_LOGD("script.global_settings", "Jump to wake-up page: %s", id(page_names)[id(wakeup_page_id)].c_str());
+ disp1->goto_page(id(wakeup_page_id));
+ timer_reset_all->execute(id(page_names)[id(wakeup_page_id)].c_str());
- lambda: |-
ESP_LOGV("script.global_settings", "Finished");
@@ -2202,7 +2214,7 @@ script:
if (current_page->state == "screensaver" and not id(is_uploading_tft)) {
static const char *const TAG = "script.page_screensaver";
ESP_LOGV(TAG, "Updating screensaver page");
- set_page_id->execute("back_page_id", wakeup_page_name->state.c_str());
+ disp1->send_command_printf("back_page_id=%i", id(wakeup_page_id));
set_component_color->execute("screensaver.text",id(screensaver_display_time_color));
refresh_datetime->execute();
}
@@ -2573,7 +2585,10 @@ script:
uint detected_page_id = pageIndex(page.c_str());
ESP_LOGV(TAG, "%s=%i", variable.c_str(), detected_page_id);
- disp1->send_command_printf("%s=%i", variable.c_str(), detected_page_id);
+ if (variable == "wakeup_page_id")
+ id(wakeup_page_id) = detected_page_id;
+ else
+ disp1->send_command_printf("%s=%i", variable.c_str(), detected_page_id);
- id: setup_sequence
mode: restart
@@ -2720,7 +2735,7 @@ script:
state: boot
timeout: 10s
- lambda: |-
- if (current_page->state == "boot") disp1->goto_page(wakeup_page_name->state.c_str());
+ if (current_page->state == "boot") disp1->goto_page(id(wakeup_page_id));
else: # Unknown TFT
- lambda: |-
static const char *const TAG = "script.setup_sequence";