From 59d4c0985740b9314ef01b3c2e3778343e48c222 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sun, 17 Mar 2024 10:47:46 +0100 Subject: [PATCH] Update customizations --- ..._advanced_climate_heat_customizations.yaml | 16 ++++++++-------- docs/customization.md | 18 +++++++++--------- ...reate_us_land_and_CJK_hmi_from_original.md | 3 +++ hmi/nspanel_us_land.HMI | Bin 14743994 -> 14759084 bytes hmi/nspanel_us_land.tft | Bin 7498428 -> 7498488 bytes 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/.test/esphome_advanced_climate_heat_customizations.yaml b/.test/esphome_advanced_climate_heat_customizations.yaml index 7227c97..2d94bb0 100644 --- a/.test/esphome_advanced_climate_heat_customizations.yaml +++ b/.test/esphome_advanced_climate_heat_customizations.yaml @@ -26,7 +26,7 @@ binary_sensor: id: display_state platform: template lambda: |- - return (id(current_page).state != "screensaver"); + return (current_page->state != "screensaver"); # Enable Bluetooth proxy bluetooth_proxy: @@ -41,7 +41,7 @@ button: then: - logger.log: Button Sleep pressed - lambda: |- - if (id(current_page).state != "screensaver") id(disp1).goto_page("screensaver"); + goto_page->execute("screensaver"); # Adds a button to wake-up the panel (similar to the existing service) - name: ${device_name} Wake-up @@ -52,10 +52,10 @@ button: then: - logger.log: Button Wake-up pressed - lambda: |- - if (id(current_page).state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str()); - // id(timer_page).execute(id(wakeup_page_name).state.c_str()); // enable this if you want page timeout to be reset - id(timer_sleep).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_sleep).state)); - id(timer_dim).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_dim).state)); + if (current_page->state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str()); + // timer_page->execute(); // enable this if you want page timeout to be reset + timer_sleep->execute(); + timer_dim->execute(); # Add custom presets to your climate (heat in this example) climate: @@ -100,12 +100,12 @@ light: - lambda: |- ESP_LOGD("light.display_light", "Turn-on"); if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str()); - timer_reset_all->execute(wakeup_page_name->state.c_str()); + timer_reset_all->execute(); on_turn_off: then: - lambda: |- ESP_LOGD("light.display_light", "Turn-off"); - disp1->goto_page("screensaver"); + goto_page->execute("screensaver"); logger: # Enable hardware UART serial logging diff --git a/docs/customization.md b/docs/customization.md index f2e3175..bc1e18b 100644 --- a/docs/customization.md +++ b/docs/customization.md @@ -288,7 +288,7 @@ binary_sensor: id: display_state platform: template lambda: |- - return (id(current_page).state != "screensaver"); + return (current_page->state != "screensaver"); ``` You can easily invert the meaning to have a sensor for display sleeping: @@ -300,7 +300,7 @@ binary_sensor: id: display_sleeping platform: template lambda: |- - return (id(current_page).state == "screensaver"); + return (current_page->state == "screensaver"); ``` ### Deep sleep @@ -373,7 +373,7 @@ button: then: - logger.log: Button Sleep pressed - lambda: |- - if (id(current_page).state != "screensaver") id(disp1).goto_page("screensaver"); + goto_page->execute("screensaver"); # Adds a button to wake-up the panel (similar to the existing service) - name: Wake-up @@ -384,10 +384,10 @@ button: then: - logger.log: Button Wake-up pressed - lambda: |- - if (id(current_page).state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str()); - // id(timer_page).execute(id(wakeup_page_name).state.c_str()); // enable this if you want page timeout to be reset - id(timer_sleep).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_sleep).state)); - id(timer_dim).execute(id(wakeup_page_name).state.c_str(), int(id(timeout_dim).state)); + if (current_page->state == "screensaver") id(disp1).goto_page(id(wakeup_page_name).state.c_str()); + // timer_page->execute(); // enable this if you want page timeout to be reset + timer_sleep->execute(); + timer_dim->execute(); ``` ### Set display as a light @@ -408,12 +408,12 @@ light: - lambda: |- ESP_LOGD("light.display_light", "Turn-on"); if (current_page->state == "screensaver") disp1->goto_page(wakeup_page_name->state.c_str()); - timer_reset_all->execute(wakeup_page_name->state.c_str()); + timer_reset_all->execute(); on_turn_off: then: - lambda: |- ESP_LOGD("light.display_light", "Turn-off"); - disp1->goto_page("screensaver"); + goto_page->execute("screensaver"); output: # Output required by `display_light` to send the commands to Nextion diff --git a/hmi/dev/create_us_land_and_CJK_hmi_from_original.md b/hmi/dev/create_us_land_and_CJK_hmi_from_original.md index 1070c7f..dc37bfa 100644 --- a/hmi/dev/create_us_land_and_CJK_hmi_from_original.md +++ b/hmi/dev/create_us_land_and_CJK_hmi_from_original.md @@ -5,6 +5,9 @@ - **Program.s:** - Change to `display_mode=3` +- **Page boot:** + - Change component `progress` (the progress bar in the very bottom) width to 480. + ## Creating `nspanel_CJK_xxx.HMI` from `nspanel_xxx.HMI` - **Program.s:** diff --git a/hmi/nspanel_us_land.HMI b/hmi/nspanel_us_land.HMI index 35b215506c48b8b7ff1651a5e91feeb27ab03ef2..9d540e286fad5aececc69507778b0078d03faf32 100644 GIT binary patch delta 1144 zcmdVY*;CD79LMqBsZM81GtRhSnsMpEjG5Amp|WQyWZx1gvQ*j}M|RPNWGyX6vi!)J zsGK-NrA0(i*6fYDu7oQWX1vF6<1gTudCl|8e810ppU=!w^DWC(-XohOx60!2@i*cU zQUbywBaGiG+U78Nt%hN7cly+O4Nv~7ToB~^RW@ib+5;^^(b5~{+w7O&tr1S6co=xTemZ}1lH@E#xV(NhuJ?bqPr ppHmv{X{+mw3Mm@s=!7IrwTuEZp#`zJ0v&no}` delta 1224 zcmd7QS5FjS7zN;WX=^ZH5))%Envi&*B!X^&0YODVEGj4{ zHdL%@!9^EQ0Y$NwwRh*j8}CTe3nV6F(T-TXNxI#6Vt2Z=y9^bBf2Q%zHLf*=Y^ewq(TTlF-=)_Xswvcx3aep69O99HM6AJDtV0r#k%CmDAsrdW#CmLi30ckAH3s*_aIc_> z+V&nbuxPkz--rLfwOq^jdXZu+_j-!dX}Q`<|oA-?PyEjU5Mv8dq`brd!;!mgL5?_%vZ9}M^NS>Bk#`b4JfJnYJw*@*neyUk6 z%0NCVJ|iK~l$v2o@C$I*eyJ(rYCGag9u{kIHsw$*ZKOQfMEO)eg|wN9sF+Hql*|Mw zqjIv)7OJ4Fw2ih?C0VJ8cF<1RMb%V8yJ-*AQXTE3eN<2T=>Q$1Lv)xL=m;I9W7J5; z=>(mmQ*@fnkd4mLIXX`lsEIC;oto(qT_y*$&=qQ>t8|U7QyaBY2i>5X)JeDKHg(Y* xx=Z)yK0Tm^^oSnQ6M9NcdPdLb1-+zK^qSt#TY5+D=>vVFPxRSgO;$%&{RS&Z&`1CP diff --git a/hmi/nspanel_us_land.tft b/hmi/nspanel_us_land.tft index 8e7a8e7d18736fe1f345913ccf0c458bbc2f8439..6550896e76fedebbb1c739ac5b4bd58c6e107097 100644 GIT binary patch delta 18441 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 delta 16655 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 Dg&`%&