From fb8448fb7d41b3965445f4aa1af811358dad562b Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Sat, 16 Mar 2024 11:27:59 +0100 Subject: [PATCH] TFT version engine --- esphome/nspanel_esphome_core.yaml | 133 ++++++++++++++------------ hmi/dev/nspanel_eu_code/boot.txt | 2 +- hmi/dev/nspanel_us_code/boot.txt | 2 +- hmi/dev/nspanel_us_land_code/boot.txt | 2 +- hmi/nspanel_eu.HMI | Bin 15263259 -> 15263259 bytes hmi/nspanel_eu.tft | Bin 7497160 -> 7497164 bytes hmi/nspanel_us.HMI | Bin 15048136 -> 15048136 bytes hmi/nspanel_us.tft | Bin 7501456 -> 7501460 bytes hmi/nspanel_us_land.HMI | Bin 14728196 -> 14742532 bytes hmi/nspanel_us_land.tft | Bin 7497160 -> 7497164 bytes 10 files changed, 75 insertions(+), 64 deletions(-) diff --git a/esphome/nspanel_esphome_core.yaml b/esphome/nspanel_esphome_core.yaml index ae285b5..125a710 100644 --- a/esphome/nspanel_esphome_core.yaml +++ b/esphome/nspanel_esphome_core.yaml @@ -34,7 +34,7 @@ external_components: - source: type: git url: https://github.com/edwardtfn/esphome - ref: nextion-v425 + ref: nextion-23 # To do: nextion-v425 components: - nextion # Change this when that PR#6192 gets released (2024.3?) refresh: 300s @@ -509,7 +509,7 @@ api: if (!id(is_uploading_tft)) { set_component_visibility->execute("home.bt_notific", true); goto_page->execute("notification"); - timer_reset_all->execute("notification"); + timer_reset_all->execute(); disp1->set_component_text("notification.notifi_label", label.c_str()); display_wrapped_text->execute("notification.notifi_text01", message.c_str(), display_mode->state == 2 ? 23 : 32); notification_label->publish_state(label.c_str()); @@ -821,10 +821,10 @@ api: if (!id(is_uploading_tft)) { if (current_page->state == "screensaver") goto_page->execute(wakeup_page_name->state.c_str()); if (reset_timer) - timer_reset_all->execute(wakeup_page_name->state.c_str()); + timer_reset_all->execute(); 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(); + timer_dim->execute(); } } @@ -839,6 +839,7 @@ display: on_setup: lambda: |- nextion_init->publish_state(true); + version_tft->update(); goto_page->execute("boot"); on_page: @@ -850,7 +851,7 @@ display: on_touch: lambda: |- if (!id(is_uploading_tft)) { - timer_reset_all->execute(page_names[page_id]); + timer_reset_all->execute(); switch (page_id) { case 10: // light switch (component_id) { @@ -1227,8 +1228,8 @@ number: disp1->set_component_value("settings.brightslider", int(x)); if (current_page->state != "screensaver") { set_brightness->execute(x); - timer_dim->execute(current_page->state.c_str(), int(timeout_dim->state)); - timer_sleep->execute(current_page->state.c_str(), int(timeout_sleep->state)); + timer_dim->execute(); + timer_sleep->execute(); if (current_page->state == "settings") disp1->set_component_text_printf("bright_text", "%i%%", int(x)); } @@ -1251,7 +1252,7 @@ number: disp1->set_component_value("settings.dimslider", int(x)); if (current_page->state != "screensaver" and current_brightness->state <= x) { set_brightness->execute(x); - timer_sleep->execute(current_page->state.c_str(), int(timeout_sleep->state)); + timer_sleep->execute(); if (current_page->state == "settings") disp1->set_component_text_printf("dim_text", "%i%%", int(x)); } @@ -1306,7 +1307,7 @@ number: icon: mdi:timer unit_of_measurement: "s" on_value: - - lambda: timer_page->execute(current_page->state.c_str(), int(x)); + - lambda: timer_page->execute(); - name: Timeout Dimming platform: template id: timeout_dim @@ -1320,7 +1321,7 @@ number: icon: mdi:timer unit_of_measurement: "s" on_value: - - lambda: timer_dim->execute(current_page->state.c_str(), int(x)); + - lambda: timer_dim->execute(); - name: Timeout Sleep platform: template id: timeout_sleep @@ -1335,8 +1336,8 @@ number: unit_of_measurement: "s" on_value: - lambda: |- - timer_dim->execute(current_page->state.c_str(), int(timeout_dim->state)); - timer_sleep->execute(current_page->state.c_str(), int(x)); + timer_dim->execute(); + timer_sleep->execute(); ##### START - SELECT CONFIGURATION ##### select: @@ -1470,7 +1471,7 @@ sensor: id: display_brightness value: !lambda return int(x); - lambda: |- - timer_reset_all->execute("settings"); + timer_reset_all->execute(); ###### Display DIM Brightness GET VALUE FROM NSPanel SLIDER ##### - id: dimslider @@ -1484,7 +1485,7 @@ sensor: id: display_dim_brightness value: !lambda return int(x); - lambda: |- - timer_reset_all->execute("settings"); + timer_reset_all->execute(); ###### Display Brightness - Current value (%) ##### - id: current_brightness @@ -1639,6 +1640,11 @@ text_sensor: icon: mdi:tablet-dashboard internal: false disabled_by_default: false + filters: + - lambda: |- + x = x.c_str(); + x.shrink_to_fit(); + return x; on_value: lambda: |- if (!id(is_uploading_tft)) { @@ -1673,7 +1679,7 @@ text_sensor: deserializeJson(doc, x); std::string page = doc["page"]; std::string component = doc["component"]; - if (not (component == "currentpage" and (page == "screensaver" or page == "home"))) timer_reset_all->execute(page.c_str()); + if (not (component == "currentpage" and (page == "screensaver" or page == "home"))) timer_reset_all->execute(); std::string value = doc["value"]; std::string entity = detailed_entity->state.c_str(); // doc["entity"]; esphome::api::CustomAPIDevice ha_event; @@ -1787,16 +1793,12 @@ text_sensor: name: Version TFT platform: nextion component_name: boot.tft_version - # entity_category: diagnostic - # icon: mdi:tag-text-outline - internal: true + entity_category: diagnostic + icon: mdi:tag-text-outline + internal: false update_interval: never on_value: - lambda: |- - if (current_page->state == "boot") { - page_boot->execute(); - timer_reset_all->execute("boot"); - } check_versions->execute(); ### Scripts ###### @@ -1970,7 +1972,7 @@ script: - lambda: |- ESP_LOGD("script.global_settings", "Jump to wake-up page: %s", wakeup_page_name->state.c_str()); goto_page->execute(wakeup_page_name->state.c_str()); - timer_reset_all->execute(wakeup_page_name->state.c_str()); + timer_reset_all->execute(); - id: goto_page mode: restart @@ -1990,7 +1992,7 @@ script: then: - lambda: |- if (id(is_uploading_tft)) ha_button->stop(); - timer_reset_all->execute(page.c_str()); + timer_reset_all->execute(); esphome::api::CustomAPIDevice ha_event; ha_event.fire_homeassistant_event("esphome.nspanel_ha_blueprint", { @@ -2063,6 +2065,7 @@ script: - logger.log: Page boot called - lambda: |- set_brightness->execute(100); + update_tft_info->execute(); disp1->set_component_text_printf("boot.esph_version", "${version}"); // ESPHome version if (current_page->state == "boot") { #ifdef ARDUINO @@ -2070,7 +2073,6 @@ script: #elif defined(USE_ESP_IDF) disp1->set_component_text("framework", "ESP-IDF"); #endif - disp1->send_command_printf("tm_esphome.en=%i", (isnan(display_charset->state) or isnan(display_mode->state) or version_tft->state.empty()) ? 1 : 0); } - logger.log: Wait for Wi-Fi - wait_until: @@ -2137,7 +2139,7 @@ script: disp1->set_component_font("home.wifi_icon", id(home_chip_font_id)); disp1->set_component_font_color("home.chip_relay1", id(home_relay1_icon_color)); disp1->set_component_font_color("home.chip_relay2", id(home_relay2_icon_color)); - timer_reset_all->execute("boot"); + timer_reset_all->execute(); - wait_until: condition: - not: @@ -2217,7 +2219,7 @@ script: refresh_hardware_buttons_bars->execute(); // Reset timers - timer_reset_all->execute(page.c_str()); + timer_reset_all->execute(); // Report new page to Home Assistant esphome::api::CustomAPIDevice ha_event; @@ -2769,37 +2771,33 @@ script: timer_sleep->stop(); update_alarm_icon->stop(); update_climate_icon->stop(); + update_tft_info->stop(); ###### Timers ###### - id: timer_reset_all # Global timer reset - Triggered with a touch on the screen mode: restart - parameters: - page: string then: - lambda: |- - timer_page->execute(page.c_str(), int(timeout_page->state)); - timer_dim->execute(page.c_str(), int(timeout_dim->state)); - timer_sleep->execute(page.c_str(), int(timeout_sleep->state)); + timer_page->execute(); + timer_dim->execute(); + timer_sleep->execute(); - id: timer_page # Handles the fallback to home page after a timeout mode: restart - parameters: - page: string - timeout: uint then: - if: condition: - lambda: |- - return (timeout >= 1 and - page != "boot" and - page != "confirm" and - page != "home" and - page != "notification" and - page != "screensaver"); + return (timeout_page->state >= 1 and + current_page->state != "boot" and + current_page->state != "confirm" and + current_page->state != "home" and + current_page->state != "notification" and + current_page->state != "screensaver"); then: - - delay: !lambda return (timeout *1000); + - delay: !lambda return (int(timeout_page->state) *1000); - lambda: |- ESP_LOGV("script.timer_page", "Timed out on page: %s", current_page->state.c_str()); - if (timeout >= 1 and + if (timeout_page->state >= 1 and current_page->state != "boot" and current_page->state != "confirm" and current_page->state != "home" and @@ -2811,45 +2809,38 @@ script: } - id: timer_dim # Handles the brightness dimming after a timeout mode: restart - parameters: - page: string - timeout: uint then: - lambda: |- if (current_brightness->state <= display_dim_brightness->state - and page != "screensaver" - and page != "boot" - and page != "blank-screensaver") { - ESP_LOGD("script.timer_dim", "Waking up on page: %s", page.c_str()); + and current_page->state != "screensaver" + and current_page->state != "boot") { + ESP_LOGD("script.timer_dim", "Waking up on page: %s", current_page->state.c_str()); set_brightness->execute(display_brightness->state); } - if: condition: - - lambda: return (timeout >= 1); + - lambda: return (timeout_dim->state >= 1); then: - - delay: !lambda return (timeout *1000); + - delay: !lambda return (int(timeout_dim->state) *1000); - lambda: |- if (current_page->state != "screensaver" and - current_page->state != "blank-screensaver" and current_page->state != "boot" and - timeout >= 1) { + timeout_dim->state >= 1) { set_brightness->execute(display_dim_brightness->state); } - id: timer_sleep # Handles the sleep (go to screensaver page) after a timeout mode: restart - parameters: - page: string - timeout: uint then: - if: condition: - - lambda: return (timeout >= 1 and current_page->state != "screensaver" and current_page->state != "boot"); + - lambda: |- + return (timeout_sleep->state >= 1 and current_page->state != "screensaver" and current_page->state != "boot"); then: - - delay: !lambda return (timeout *1000); + - delay: !lambda return (int(timeout_sleep->state) *1000); - lambda: |- if (current_page->state != "screensaver" and current_page->state != "boot" and - timeout >= 1) { + timeout_sleep->state >= 1) { ESP_LOGD("script.timer_sleep", "Going to sleep from page %s", current_page->state.c_str()); goto_page->execute("screensaver"); set_brightness->execute(display_sleep_brightness->state); @@ -2976,4 +2967,24 @@ script: disp1->set_component_font_color(component.c_str(), 1530); // cyan break; } + + - id: update_tft_info + mode: restart + then: + - while: + condition: + - lambda: return (isnan(display_charset->state) or isnan(display_mode->state) or version_tft->state.empty()); + then: + - lambda: |- + ESP_LOGD("script.update_tft_info", "Updating TFT info"); + if (isnan(display_charset->state)) display_charset->update(); + if (isnan(display_mode->state)) display_mode->update(); + if (version_tft->state.empty()) version_tft->update(); + - wait_until: + condition: + - lambda: return (!isnan(display_charset->state) and !isnan(display_mode->state) and !(version_tft->state.empty())); + timeout: 10s + - lambda: |- + if (current_page->state == "boot") + disp1->send_command_printf("tm_esphome.en=%i", (isnan(display_charset->state) or isnan(display_mode->state) or version_tft->state.empty()) ? 1 : 0); ... diff --git a/hmi/dev/nspanel_eu_code/boot.txt b/hmi/dev/nspanel_eu_code/boot.txt index 52706d5..cda3e4e 100644 --- a/hmi/dev/nspanel_eu_code/boot.txt +++ b/hmi/dev/nspanel_eu_code/boot.txt @@ -207,7 +207,7 @@ Timer tm_esphome prints charset,0 printh FF FF FF printh 92 - prints "tft_version",0 + prints "boot.tft_version",0 printh 00 prints tft_version.txt,0 printh 00 diff --git a/hmi/dev/nspanel_us_code/boot.txt b/hmi/dev/nspanel_us_code/boot.txt index 2c993a9..e4fa860 100644 --- a/hmi/dev/nspanel_us_code/boot.txt +++ b/hmi/dev/nspanel_us_code/boot.txt @@ -17,7 +17,7 @@ Page boot baud_rate.txt+=" bps" vis unavailable,0 printh 92 - prints "current_page",0 + prints "boot.current_page",0 printh 00 prints "boot",0 printh 00 diff --git a/hmi/dev/nspanel_us_land_code/boot.txt b/hmi/dev/nspanel_us_land_code/boot.txt index 52706d5..9bef14e 100644 --- a/hmi/dev/nspanel_us_land_code/boot.txt +++ b/hmi/dev/nspanel_us_land_code/boot.txt @@ -17,7 +17,7 @@ Page boot baud_rate.txt+=" bps" vis unavailable,0 printh 92 - prints "current_page",0 + prints "boot.current_page",0 printh 00 prints "boot",0 printh 00 diff --git a/hmi/nspanel_eu.HMI b/hmi/nspanel_eu.HMI index 1a2f6e7ce3eb0e36ecf23d0d97a50d840fe9e6db..af2e0070b71bce165e2172857a40ac9a935e94cd 100644 GIT binary patch delta 1185 zcmd7QTTskl7{~GdZnYUT)3|7w9b=frjWJR)E>;l{3OVMG(3WH9plz*6k)Etn7SSI$ zEIE{8Y%Jw06s0XW9}B6wF1z&2WL&!Knfc7~d*^-To%fx2%Nol)%TP5^H%y67Ob&>M zid6cm%h#mzcqobnNhM)AKaJvu(fPO=f`S54twwo$_Cjeni~^E%0BC8mG2|0gTAwiP>j8>VITJ607`HWhfoR?hj9c)QHEnUjuSWuJ5J#=%5er~ zaSrEEfl6G!MO?yVT)|aT;To>Pfoj~qO*nB2w^4&y+`(Pk!+ku!Lp;J`)Zq!9;u-4E zfaiFDMl|6in&CnVTJZ{Pc#SuBi+6aB5BP{r_>3?3if?E~2fpJ6exehq(Ra-MU} zlk=SCCb#ZXQ+yq?&5%-xtq$j`++|CJHm;c5V#J8W4dE>54xKK#MoKcw7b6oS!}vvU zh1p}7*V!Y~i9+bQM}?R>%VpIrxG}Z1ctrnnoOR97MI#A!>%)Z!$>G7oaXJzGEwLcc zkn>m5ZIyX)Ri3N^J;Z?lj3B9ba(wG>SdoqG<8JLYRw{Cpf+iF+p`Zx`P2kxesfrvQ z8NL+~qKZ6JPV;F2rPD&Xk1{Be7Sa8bMT_YH%BCDzLJv|dEv1L(VS0p?(WA7SR!|;2 zMvv15^&{|qY`Lv!kPys1qrKiY7Pm`TC(k3b-2R%d2QV|uClS;@%&rvD4 zsjS^|ow+kBaDrVshD;n;95~Lc_co^S@|AuQD;0r=dTqda*}$3AF*A3}@tbSUdS`N^ z+H-_QLa}a+ob!(A=M}K-k63D=v!u+i(P6WeIZB*d6KpbBtTvn7RhDm=IW^znwHA5o z`IdBqrS>Ab)s4kg3wM%F=IwVjPOcq|E#Zv2+-ZFBytnsX70v8#zGS{xwu{#fdjHhV z+wdP{r`d3Q>Hn^p$pgDRv(?mQ_wNQNz2%-z|8!0d_~!bJabrJD1LjgKzCB)uJ}thO zAO!xKf5z4ELR4z|&LnJU`_5z`4jRUCWRnnQw4AGxga~SJ@nj(+E#IATGfonlrwFlM zJD4_=PcIB)@?me##BJ+(Q&m^cXVmlBZ1)7NN$JVp>>PhCca$GBaz#VK6pqw;%)IkL z`2kK&!^c}u-y^AxZN9kFs!*Q?yzo5uU^8ri7vM$M3gzI33J5?DDuEyb+n@?wg6;4! z?0}u{3cL!tpc-mmH-zCecpYkiVGrzuH=qvc;Z1l8-i8P?KqE9kGwg$R;9b}c@4*2$ z2rY034nr%n!4Y^LqRz=xp1NANLx0-wTX@Hxcb3+RAO=z?zOfunE?df`hr4kzFw zoPw|5YxoBG;53|pZ=oLs;5+ypet;k0CpZh|;5_^czrY||fM4MvT!JAOhRbTG?@F!d EZxeHja{vGU diff --git a/hmi/nspanel_eu.tft b/hmi/nspanel_eu.tft index 7d8297169fe8eb8f753eda32dfbc46df4ced7f06..eb8246aca3cc81a1763f817cc081c4e2e3c28d4e 100644 GIT binary patch delta 15531 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 QTXKvu?J5;EdHmh~1Jg7q6aWAK delta 16235 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 YnJ0RtdAU}4rfs5iw$YaRo#*WT2euNT>Hq)$ diff --git a/hmi/nspanel_us.HMI b/hmi/nspanel_us.HMI index 38d68905fcdfc2f99881700fb7ba8d9249ea0d77..5ca4af3aa030759022ed00a3d0d84d4d44c22070 100644 GIT binary patch delta 1287 zcmd7Q`%ler9LMqZ_nhzPj5d{xcFx$2W@~KDw6)5u6~=Z#VMuUbx?@t zq@+WUYvja1E)kVWyy#2+Lf`GNJwKm)Kkt2h_%ziPDw{y~QZ4w& zh1ddrxwAmlD0#a~paNezXF;%r*p-N$Zf@GR2pagBJrc>q3+o00(YJg>i))?i?;2aZ zx)p-YCm6iV;l*X5tt!A+DRUZyNpbPfx&(v9B~q_X(ApvbjaqjT z9y}yLGNiyZFhVM%!FEW84A=pgkOd6ckOL;z3Al)_Oc0}C93<4_J2Z~{(3C7goOa0br8IXDkhZ~-ntHCzHK)WBu90yek` z*WfzT!VS0yx8OF^!5z2@^>7dFLjyEI6Fh*2@CY75GdzK(&;rlkIlO?E@CshT8)$_# bcnj_D4m#jHbV3(=fRFGAx^2C>o;K}orc3$U delta 1074 zcmd7M`A^RQ9LMqR=llJ3nA!Yd`DR%^7&e{c_4}3krfqv~BU7_F(4s_)yOv5x>BNVQY8l}-1qX>=FIE~i?O;n^NDN50b z(PYIcPE#~h(==T(G*j`KrP-RJ1kKev&DR1g)FLG+NsF~aOO>o;TCNpZsZ~nRYNcw8 z(v+^X%FsHk*M=&4Q>e3cNVdPTu+Hx1Y4&%N8P2#K_WsW1UJXM%eSc?_MmlnG?bwJ- z*o-a6L>97LkW)K z1Ww`MIG*; z9{16J2Y84^Jc1XG@dQut3{7~B7ih*yyuxd=;0@m59p2*uTG57&_=L~+f_8kxH+;tr KPfl(}bkIK;$+-jo diff --git a/hmi/nspanel_us.tft b/hmi/nspanel_us.tft index d1398a005d00ae3d21fc89a8c2a421d2f7fdfca7..72c71be84ce4ab632a0148b8b01a5949a356d093 100644 GIT binary patch delta 15590 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≤Ya9Ji;@3Zd} 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 b+~D$g$lNh9Jsn;%GNuKV)LP5tWo-OE`;K#} delta 15661 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 N)bQ}Nx diff --git a/hmi/nspanel_us_land.HMI b/hmi/nspanel_us_land.HMI index ee76bbe236b0a24fdc4fc7bac2dd743fb1c24288..97639821bf5661045c342fc4d544ea32702963fa 100644 GIT binary patch delta 1353 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 F{||Oye@_4a