From fa8ee066ac3a29e3e9c95bee9f0096de23161996 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Fri, 8 Mar 2024 13:06:55 +0100 Subject: [PATCH] Return notific button engine to Blueprint Solves #1867 --- docs/api.md | 8 -- esphome/nspanel_esphome_core.yaml | 158 +++++++---------------- hmi/dev/nspanel_eu_code/Program.s.txt | 2 +- hmi/dev/nspanel_eu_code/alarm.txt | 2 - hmi/dev/nspanel_eu_code/boot.txt | 4 +- hmi/dev/nspanel_eu_code/buttonpage01.txt | 2 - hmi/dev/nspanel_eu_code/buttonpage02.txt | 2 - hmi/dev/nspanel_eu_code/buttonpage03.txt | 2 - hmi/dev/nspanel_eu_code/buttonpage04.txt | 2 - hmi/dev/nspanel_eu_code/climate.txt | 2 - hmi/dev/nspanel_eu_code/confirm.txt | 2 - hmi/dev/nspanel_eu_code/cover.txt | 2 - hmi/dev/nspanel_eu_code/entitypage01.txt | 2 - hmi/dev/nspanel_eu_code/entitypage02.txt | 2 - hmi/dev/nspanel_eu_code/entitypage03.txt | 2 - hmi/dev/nspanel_eu_code/entitypage04.txt | 2 - hmi/dev/nspanel_eu_code/fan.txt | 2 - hmi/dev/nspanel_eu_code/home.txt | 9 +- hmi/dev/nspanel_eu_code/keyb_num.txt | 2 - hmi/dev/nspanel_eu_code/light.txt | 2 - hmi/dev/nspanel_eu_code/media_player.txt | 2 - hmi/dev/nspanel_eu_code/notification.txt | 2 - hmi/dev/nspanel_eu_code/qrcode.txt | 2 - hmi/dev/nspanel_eu_code/screensaver.txt | 2 - hmi/dev/nspanel_eu_code/settings.txt | 2 - hmi/dev/nspanel_eu_code/utilities.txt | 2 - hmi/dev/nspanel_eu_code/weather01.txt | 2 - hmi/dev/nspanel_eu_code/weather02.txt | 2 - hmi/dev/nspanel_eu_code/weather03.txt | 2 - hmi/dev/nspanel_eu_code/weather04.txt | 2 - hmi/dev/nspanel_eu_code/weather05.txt | 2 - hmi/dev/nspanel_us_code/Program.s.txt | 2 +- hmi/dev/nspanel_us_code/alarm.txt | 2 - hmi/dev/nspanel_us_code/boot.txt | 4 +- hmi/dev/nspanel_us_code/buttonpage01.txt | 2 - hmi/dev/nspanel_us_code/buttonpage02.txt | 2 - hmi/dev/nspanel_us_code/buttonpage03.txt | 2 - hmi/dev/nspanel_us_code/buttonpage04.txt | 2 - hmi/dev/nspanel_us_code/climate.txt | 2 - hmi/dev/nspanel_us_code/confirm.txt | 2 - hmi/dev/nspanel_us_code/cover.txt | 2 - hmi/dev/nspanel_us_code/entitypage01.txt | 2 - hmi/dev/nspanel_us_code/entitypage02.txt | 2 - hmi/dev/nspanel_us_code/entitypage03.txt | 2 - hmi/dev/nspanel_us_code/entitypage04.txt | 2 - hmi/dev/nspanel_us_code/fan.txt | 2 - hmi/dev/nspanel_us_code/home.txt | 9 +- hmi/dev/nspanel_us_code/keyb_num.txt | 2 - hmi/dev/nspanel_us_code/light.txt | 2 - hmi/dev/nspanel_us_code/media_player.txt | 2 - hmi/dev/nspanel_us_code/notification.txt | 2 - hmi/dev/nspanel_us_code/qrcode.txt | 2 - hmi/dev/nspanel_us_code/screensaver.txt | 2 - hmi/dev/nspanel_us_code/settings.txt | 2 - hmi/dev/nspanel_us_code/utilities.txt | 2 - hmi/dev/nspanel_us_code/weather01.txt | 2 - hmi/dev/nspanel_us_code/weather02.txt | 2 - hmi/dev/nspanel_us_code/weather03.txt | 2 - hmi/dev/nspanel_us_code/weather04.txt | 2 - hmi/dev/nspanel_us_code/weather05.txt | 2 - hmi/nspanel_eu.HMI | Bin 15263259 -> 15263259 bytes hmi/nspanel_us.HMI | Bin 15048136 -> 15048136 bytes nspanel_blueprint.yaml | 66 ++++++++-- 63 files changed, 115 insertions(+), 251 deletions(-) diff --git a/docs/api.md b/docs/api.md index e2b2ddb..1ba92a5 100644 --- a/docs/api.md +++ b/docs/api.md @@ -403,11 +403,6 @@ It accommodates extensive customizations, impacting both visual appeal and funct - `meridiem` (string[]): Array of strings for AM/PM labels, applicable if the time format includes meridiem. - `chip_font` (int): Font Id for icons or chips displayed on the "Home" page. - `custom_buttons_font` (int): Font Id for custom button icons on the "Home" page. -- `notification_icon` (string): -Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html) -for the notification button. -- `notification_icon_color_normal` (int[]): RGB color array for the notification icon under normal conditions. -- `notification_icon_color_unread` (int[]): RGB color array for the notification icon when there are unread notifications. - `qrcode` (bool): Flag indicating whether the QR code button is enabled. - `qrcode_icon` (string): Icon codepoint from [HASwitchPlate Material Design Icons](https://htmlpreview.github.io/?https://github.com/jobr99/Generate-HASP-Fonts/blob/master/cheatsheet.html) @@ -434,9 +429,6 @@ data: meridiem: ["AM", "PM"] chip_font: 8 custom_buttons_font: 9 - notification_icon: "\uE1ED" # Example for mdi:email - notification_icon_color_normal: [255, 255, 255] # White - notification_icon_color_unread: [255, 0, 0] # Red qrcode: true qrcode_icon: "\uE432" # Example for mdi:qrcode-scan qrcode_icon_color: [0, 255, 0] # Green diff --git a/esphome/nspanel_esphome_core.yaml b/esphome/nspanel_esphome_core.yaml index 97b60c5..46d4a6a 100644 --- a/esphome/nspanel_esphome_core.yaml +++ b/esphome/nspanel_esphome_core.yaml @@ -18,7 +18,7 @@ substitutions: temp_units: "°C" invalid_cooldown: "100ms" ##### DON'T CHANGE THIS ###### - version: "4.3dev3" + version: "4.3dev4" ############################## ##### External components ##### @@ -66,6 +66,9 @@ esphome: } } device_name->publish_state(result.c_str()); + notification_label->publish_state(""); + notification_text->publish_state(""); + notification_unread->turn_off(); - script.execute: restore_settings - wait_until: condition: @@ -411,9 +414,6 @@ api: meridiem: string[] # Optional array for AM/PM labels if included in time format. chip_font: int # Font Id for chip icons displayed on the "Home" page. custom_buttons_font: int # Font Id for icons on custom buttons. - notification_icon: string # Icon codepoint for the notification button, sourced from HASwitchPlate Material Design Icons. - notification_icon_color_normal: int[] # RGB color array for normal notification icon state. - notification_icon_color_unread: int[] # RGB color array for unread notifications state. qrcode: bool # Enable/disable flag for QR code button display. qrcode_icon: string # Icon codepoint for QR code button, sourced from HASwitchPlate Material Design Icons. qrcode_icon_color: int[] # RGB color array for QR code button icon. @@ -461,19 +461,8 @@ api: // Outdoor temperature font size disp1->send_command_printf("home.outdoor_temp.font==%" PRIi32, outdoor_temp_font); - // Notification button - disp1->send_command_printf("is_notification=%i", (notification_text->state.empty() and notification_label->state.empty()) ? 0 : 1); - disp1->set_component_text_printf("home.bt_notific", "%s", notification_icon.c_str()); - id(home_notify_icon_color_normal) = esphome::display::ColorUtil::color_to_565(esphome::Color(notification_icon_color_normal[0], - notification_icon_color_normal[1], - notification_icon_color_normal[2])); - id(home_notify_icon_color_unread) = esphome::display::ColorUtil::color_to_565(esphome::Color(notification_icon_color_unread[0], - notification_icon_color_unread[1], - notification_icon_color_unread[2])); - disp1->set_component_font_color("home.bt_notific", notification_unread->state ? id(home_notify_icon_color_unread) : id(home_notify_icon_color_normal)); - // QRCode button - disp1->send_command_printf("is_qrcode=%i", qrcode ? 1 : 0); + set_component_visibility->execute("home.bt_qrcode", qrcode); disp1->set_component_text_printf("home.bt_qrcode", "%s", qrcode_icon.c_str()); disp1->set_component_font_color("home.bt_qrcode", esphome::display::ColorUtil::color_to_565(esphome::Color(qrcode_icon_color[0], qrcode_icon_color[1], qrcode_icon_color[2]))); @@ -513,7 +502,10 @@ api: # This service removes any displayed notifications from the screen, helping to keep the user interface clean and focused on its primary functions. - service: notification_clear then: - - script.execute: notification_clear + - lambda: |- + notification_label->publish_state(""); + notification_text->publish_state(""); + notification_unread->turn_off(); # Displays a notification message on the screen, useful for alerts or informational updates. - service: notification_show @@ -533,7 +525,6 @@ api: notification_label->publish_state(label.c_str()); notification_text->publish_state(message.c_str()); timer_reset_all->execute(current_page->state.c_str()); - refresh_notification->execute(); notification_unread->turn_on(); if (notification_sound->state) buzzer->play("two short:d=4,o=5,b=100:16e6,16e6"); } @@ -881,11 +872,6 @@ display: ##### START - GLOBALS CONFIGURATION ##### globals: - - id: mui_decimal_separator - type: char - restore_value: true - initial_value: "'.'" - ###### Buttons settings ###### # Bit # Settings # # 0 # Left Bt - Enabled # @@ -932,6 +918,23 @@ globals: type: uint8_t restore_value: true initial_value: '0' + ##### Relay icons ##### + - id: home_relay1_icon + type: char[4] + restore_value: true + initial_value: '' + - id: home_relay1_icon_color + type: uint16_t + restore_value: true + initial_value: '65535' + - id: home_relay2_icon + type: char[4] + restore_value: true + initial_value: '' + - id: home_relay2_icon_color + type: uint16_t + restore_value: true + initial_value: '65535' ##### Versioning ##### - id: version_blueprint @@ -951,24 +954,24 @@ globals: restore_value: false initial_value: 'false' + ##### Media Player ##### ###### Last volume level from Home Assistant ###### - id: last_volume_level type: uint8_t restore_value: false initial_value: '0' - ###### Last duration from Home Assistant ###### - id: last_media_duration type: uint restore_value: false initial_value: '0' - ###### Last duration from Home Assistant ###### - id: last_media_position type: uint restore_value: false initial_value: '0' + ##### Add-on Climate ##### ##### Is embedded thermostat set as main climate entity? ##### - id: is_embedded_thermostat type: bool @@ -1000,7 +1003,7 @@ globals: restore_value: false initial_value: '{"AM", "PM"}' - #### MUI strings #### + #### Localization (MUI) #### - id: mui_please_confirm_global type: std::string restore_value: true @@ -1009,6 +1012,10 @@ globals: type: std::string restore_value: true initial_value: '"Unavailable"' + - id: mui_decimal_separator + type: char + restore_value: true + initial_value: "'.'" ##### Chips ##### - id: home_chip_font_id @@ -1022,32 +1029,6 @@ globals: restore_value: true initial_value: '8' - ##### Relay icons ##### - - id: home_relay1_icon - type: char[4] - restore_value: true - initial_value: '' - - id: home_relay1_icon_color - type: uint16_t - restore_value: true - initial_value: '65535' - - - id: home_relay2_icon - type: char[4] - restore_value: true - initial_value: '' - - id: home_relay2_icon_color - type: uint16_t - restore_value: true - initial_value: '65535' - - - id: home_notify_icon_color_normal - type: uint16_t - restore_value: false - - id: home_notify_icon_color_unread - type: uint16_t - restore_value: false - ##### Screensaver ##### - id: screensaver_display_time type: bool @@ -1560,16 +1541,6 @@ switch: entity_category: config optimistic: true restore_mode: ALWAYS_OFF - on_turn_on: - - wait_until: - condition: - - lambda: !lambda return (blueprint_status->state > 99); - - lambda: disp1->set_component_font_color("home.bt_notific", id(home_notify_icon_color_unread)); - on_turn_off: - - wait_until: - condition: - - lambda: !lambda return (blueprint_status->state > 99); - - lambda: disp1->set_component_font_color("home.bt_notific", id(home_notify_icon_color_normal)); ##### Notification sound ##### - name: Notification sound @@ -1632,8 +1603,8 @@ switch: ##### START - TEXT SENSOR CONFIGURATION ##### text_sensor: ##### Device name - Used by bluepring to find service's names ##### - - name: Device Name - id: device_name + - id: device_name + name: Device Name platform: template icon: mdi:identifier entity_category: diagnostic @@ -1641,34 +1612,34 @@ text_sensor: disabled_by_default: false ##### Entity Id of the entity displayed on the detailed pages - - name: Detailed Entity - id: detailed_entity + - id: detailed_entity + name: Detailed Entity platform: template icon: mdi:tablet-dashboard internal: false disabled_by_default: false ##### Current page name ##### - - name: Current Page - id: current_page + - id: current_page + name: Current Page platform: template icon: mdi:tablet-dashboard internal: false disabled_by_default: false - - name: Notification Label + - id: notification_label + name: Notification Label platform: template - id: notification_label - - - name: Notification Text + + - id: notification_text + name: Notification Text platform: template - id: notification_text - + ##### NSPanel event sensor, the main action sensor - push to HA ##### - - name: NSPanel event + - id: disp1_nspanel_event + name: NSPanel event platform: nextion nextion_id: disp1 - id: disp1_nspanel_event component_name: nspanelevent internal: true filters: @@ -1702,10 +1673,10 @@ text_sensor: ESP_LOGE("text_sensor.nspanelevent", " Entity: %s", entity.c_str()); ##### NSPanel event - Execute actions from ESPHome - NO push to HA ##### - - name: NSPanel local event + - id: disp1_local_event + name: NSPanel local event platform: nextion nextion_id: disp1 - id: disp1_local_event component_name: localevent internal: true filters: @@ -2051,18 +2022,6 @@ script: id(embedded_indoor_temp) = embedded_indoor_temperature; display_embedded_temp->execute(); - - id: notification_clear - mode: restart - then: - - lambda: |- - if (!id(is_uploading_tft)) { - notification_label->publish_state(""); - notification_text->publish_state(""); - notification_unread->turn_off(); - refresh_notification->execute(); - if (current_page->state == "notification") goto_page->execute("home"); - } - - id: page_alarm mode: restart then: # There's nothing here so far @@ -2265,7 +2224,6 @@ script: then: - script.execute: refresh_relays - script.execute: refresh_wifi_icon - - script.execute: refresh_notification - id: page_keyb_num mode: restart @@ -2425,22 +2383,6 @@ script: } } - - id: refresh_notification - mode: restart - then: - - wait_until: - condition: - - lambda: !lambda return id(setup_sequence_completed); - - lambda: |- - bool is_notification = ((not notification_text->state.empty()) or (not notification_label->state.empty())); - disp1->send_command_printf("is_notification=%i", is_notification ? 1 : 0); - set_component_visibility->execute("home.bt_notific", is_notification); - - wait_until: - condition: - - lambda: return (blueprint_status->state > 99); - - lambda: |- - disp1->set_component_font_color("home.bt_notific", notification_unread->state ? id(home_notify_icon_color_unread) : id(home_notify_icon_color_normal)); - - id: refresh_relays mode: restart then: @@ -2742,7 +2684,6 @@ script: 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"); - notification_clear->execute(); id(setup_sequence_completed) = true; - wait_until: condition: @@ -2767,7 +2708,6 @@ script: ha_button->stop(); ha_call_service->stop(); init_hardware_climate->stop(); - notification_clear->stop(); page_alarm->stop(); page_blank->stop(); page_boot->stop(); diff --git a/hmi/dev/nspanel_eu_code/Program.s.txt b/hmi/dev/nspanel_eu_code/Program.s.txt index f349afd..b8d5912 100644 --- a/hmi/dev/nspanel_eu_code/Program.s.txt +++ b/hmi/dev/nspanel_eu_code/Program.s.txt @@ -9,7 +9,7 @@ Program.s int back_page_id=0 int dimdelta=0 int api=0 // 0 = disconnected from HA, 1 = connected to HA - int is_qrcode=0,is_notification=0,is_utilities=0 + int is_utilities=0 int brightness=100,brightness_dim=40,brightness_sleep=0 int display_mode=1 // 1 = EU, 2 = US, 3 = US landscape, 4 = blank int charset=1 // 1 = International (original), 2 = CJK diff --git a/hmi/dev/nspanel_eu_code/alarm.txt b/hmi/dev/nspanel_eu_code/alarm.txt index d4778be..9bb1c6a 100644 --- a/hmi/dev/nspanel_eu_code/alarm.txt +++ b/hmi/dev/nspanel_eu_code/alarm.txt @@ -24,8 +24,6 @@ Page alarm vis bt_bypass,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/boot.txt b/hmi/dev/nspanel_eu_code/boot.txt index 17a8d9f..6d97bca 100644 --- a/hmi/dev/nspanel_eu_code/boot.txt +++ b/hmi/dev/nspanel_eu_code/boot.txt @@ -16,8 +16,6 @@ Page boot covx baud,baud_rate.txt,0,0 baud_rate.txt+=" bps" vis unavailable,0 - - Postinitialize Event sendme Page Exit Event @@ -103,7 +101,7 @@ Text tft_version Dragging : 0 Send Component ID : on press and release Associated Keyboard: none - Text : 4.3dev3 + Text : 4.3dev4 Max. Text Size : 9 Text esph_version diff --git a/hmi/dev/nspanel_eu_code/buttonpage01.txt b/hmi/dev/nspanel_eu_code/buttonpage01.txt index 2026b19..0b5acd8 100644 --- a/hmi/dev/nspanel_eu_code/buttonpage01.txt +++ b/hmi/dev/nspanel_eu_code/buttonpage01.txt @@ -35,8 +35,6 @@ Page buttonpage01 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/buttonpage02.txt b/hmi/dev/nspanel_eu_code/buttonpage02.txt index 3d479dc..eed659f 100644 --- a/hmi/dev/nspanel_eu_code/buttonpage02.txt +++ b/hmi/dev/nspanel_eu_code/buttonpage02.txt @@ -35,8 +35,6 @@ Page buttonpage02 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/buttonpage03.txt b/hmi/dev/nspanel_eu_code/buttonpage03.txt index ed1c1f0..17f7232 100644 --- a/hmi/dev/nspanel_eu_code/buttonpage03.txt +++ b/hmi/dev/nspanel_eu_code/buttonpage03.txt @@ -35,8 +35,6 @@ Page buttonpage03 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/buttonpage04.txt b/hmi/dev/nspanel_eu_code/buttonpage04.txt index 088a871..3268c4d 100644 --- a/hmi/dev/nspanel_eu_code/buttonpage04.txt +++ b/hmi/dev/nspanel_eu_code/buttonpage04.txt @@ -35,8 +35,6 @@ Page buttonpage04 page_index.txt+="●" vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/climate.txt b/hmi/dev/nspanel_eu_code/climate.txt index c7530e1..e016bb6 100644 --- a/hmi/dev/nspanel_eu_code/climate.txt +++ b/hmi/dev/nspanel_eu_code/climate.txt @@ -33,8 +33,6 @@ Page climate page home } vis unavailable,0 - - Postinitialize Event sendme Page Exit Event diff --git a/hmi/dev/nspanel_eu_code/confirm.txt b/hmi/dev/nspanel_eu_code/confirm.txt index 131e50e..38da546 100644 --- a/hmi/dev/nspanel_eu_code/confirm.txt +++ b/hmi/dev/nspanel_eu_code/confirm.txt @@ -17,8 +17,6 @@ Page confirm page home } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) page_id diff --git a/hmi/dev/nspanel_eu_code/cover.txt b/hmi/dev/nspanel_eu_code/cover.txt index b7afc34..6b74670 100644 --- a/hmi/dev/nspanel_eu_code/cover.txt +++ b/hmi/dev/nspanel_eu_code/cover.txt @@ -17,8 +17,6 @@ Page cover page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) va1 diff --git a/hmi/dev/nspanel_eu_code/entitypage01.txt b/hmi/dev/nspanel_eu_code/entitypage01.txt index 977a7b4..e4cf268 100644 --- a/hmi/dev/nspanel_eu_code/entitypage01.txt +++ b/hmi/dev/nspanel_eu_code/entitypage01.txt @@ -30,8 +30,6 @@ Page entitypage01 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_eu_code/entitypage02.txt b/hmi/dev/nspanel_eu_code/entitypage02.txt index 4b25de6..624506d 100644 --- a/hmi/dev/nspanel_eu_code/entitypage02.txt +++ b/hmi/dev/nspanel_eu_code/entitypage02.txt @@ -30,8 +30,6 @@ Page entitypage02 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_eu_code/entitypage03.txt b/hmi/dev/nspanel_eu_code/entitypage03.txt index 38e1097..b2b9ed3 100644 --- a/hmi/dev/nspanel_eu_code/entitypage03.txt +++ b/hmi/dev/nspanel_eu_code/entitypage03.txt @@ -30,8 +30,6 @@ Page entitypage03 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_eu_code/entitypage04.txt b/hmi/dev/nspanel_eu_code/entitypage04.txt index a7c0222..5ae4454 100644 --- a/hmi/dev/nspanel_eu_code/entitypage04.txt +++ b/hmi/dev/nspanel_eu_code/entitypage04.txt @@ -30,8 +30,6 @@ Page entitypage04 page_index.txt+="â—‹" } page_index.txt+="●" - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_eu_code/fan.txt b/hmi/dev/nspanel_eu_code/fan.txt index 80c36db..95478b5 100644 --- a/hmi/dev/nspanel_eu_code/fan.txt +++ b/hmi/dev/nspanel_eu_code/fan.txt @@ -18,8 +18,6 @@ Page fan } vis unavailable,0 vis bt_oscillate,0 - - Postinitialize Event sendme Variable (string) fansetting diff --git a/hmi/dev/nspanel_eu_code/home.txt b/hmi/dev/nspanel_eu_code/home.txt index 6bd21a1..883f81c 100644 --- a/hmi/dev/nspanel_eu_code/home.txt +++ b/hmi/dev/nspanel_eu_code/home.txt @@ -20,8 +20,6 @@ Page home { vis bt_entities,0 } - vis bt_notific,is_notification - vis bt_qrcode,is_qrcode vis bt_utilities,is_utilities if(display_mode==3) { @@ -29,8 +27,6 @@ Page home vis right_bt_text,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick @@ -355,7 +351,10 @@ Text bt_qrcode Events Touch Release Event - page qrcode + if(bt_qrcode.txt!="") + { + page qrcode + } Text bt_entities Attributes diff --git a/hmi/dev/nspanel_eu_code/keyb_num.txt b/hmi/dev/nspanel_eu_code/keyb_num.txt index 07c3562..3c62216 100644 --- a/hmi/dev/nspanel_eu_code/keyb_num.txt +++ b/hmi/dev/nspanel_eu_code/keyb_num.txt @@ -17,8 +17,6 @@ Page keyb_num page page_id.val } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) page_id diff --git a/hmi/dev/nspanel_eu_code/light.txt b/hmi/dev/nspanel_eu_code/light.txt index da41027..734b183 100644 --- a/hmi/dev/nspanel_eu_code/light.txt +++ b/hmi/dev/nspanel_eu_code/light.txt @@ -37,8 +37,6 @@ Page light vis color_button,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) rgb565 diff --git a/hmi/dev/nspanel_eu_code/media_player.txt b/hmi/dev/nspanel_eu_code/media_player.txt index 7aceec7..dcf2a2f 100644 --- a/hmi/dev/nspanel_eu_code/media_player.txt +++ b/hmi/dev/nspanel_eu_code/media_player.txt @@ -17,8 +17,6 @@ Page media_player page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/notification.txt b/hmi/dev/nspanel_eu_code/notification.txt index b3e282f..ed2fbf2 100644 --- a/hmi/dev/nspanel_eu_code/notification.txt +++ b/hmi/dev/nspanel_eu_code/notification.txt @@ -17,8 +17,6 @@ Page notification page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_eu_code/qrcode.txt b/hmi/dev/nspanel_eu_code/qrcode.txt index e9a780b..6e55366 100644 --- a/hmi/dev/nspanel_eu_code/qrcode.txt +++ b/hmi/dev/nspanel_eu_code/qrcode.txt @@ -13,8 +13,6 @@ Page qrcode Events Preinitialize Event vis unavailable,0 - - Postinitialize Event sendme Text qrcode_label diff --git a/hmi/dev/nspanel_eu_code/screensaver.txt b/hmi/dev/nspanel_eu_code/screensaver.txt index 4c0ad19..6f8da50 100644 --- a/hmi/dev/nspanel_eu_code/screensaver.txt +++ b/hmi/dev/nspanel_eu_code/screensaver.txt @@ -15,8 +15,6 @@ Page screensaver vis text,0 dim=brightness_sleep vis unavailable,0 - - Postinitialize Event sendme Touch Release Event diff --git a/hmi/dev/nspanel_eu_code/settings.txt b/hmi/dev/nspanel_eu_code/settings.txt index adaf793..1881ea9 100644 --- a/hmi/dev/nspanel_eu_code/settings.txt +++ b/hmi/dev/nspanel_eu_code/settings.txt @@ -19,8 +19,6 @@ Page settings vis lbl_sleep,0 vis bt_sleep,0 vis unavailable,0 - - Postinitialize Event sendme Text bright_text diff --git a/hmi/dev/nspanel_eu_code/utilities.txt b/hmi/dev/nspanel_eu_code/utilities.txt index af61588..30c6040 100644 --- a/hmi/dev/nspanel_eu_code/utilities.txt +++ b/hmi/dev/nspanel_eu_code/utilities.txt @@ -20,8 +20,6 @@ Page utilities vis title_icon,1 vis title,1 vis button_back,1 - - Postinitialize Event sendme Variable (int32) line_main_d diff --git a/hmi/dev/nspanel_eu_code/weather01.txt b/hmi/dev/nspanel_eu_code/weather01.txt index 31c8edc..878553e 100644 --- a/hmi/dev/nspanel_eu_code/weather01.txt +++ b/hmi/dev/nspanel_eu_code/weather01.txt @@ -17,8 +17,6 @@ Page weather01 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_eu_code/weather02.txt b/hmi/dev/nspanel_eu_code/weather02.txt index d1e703a..9dbf735 100644 --- a/hmi/dev/nspanel_eu_code/weather02.txt +++ b/hmi/dev/nspanel_eu_code/weather02.txt @@ -17,8 +17,6 @@ Page weather02 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_eu_code/weather03.txt b/hmi/dev/nspanel_eu_code/weather03.txt index be8be75..d0d38c9 100644 --- a/hmi/dev/nspanel_eu_code/weather03.txt +++ b/hmi/dev/nspanel_eu_code/weather03.txt @@ -17,8 +17,6 @@ Page weather03 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_eu_code/weather04.txt b/hmi/dev/nspanel_eu_code/weather04.txt index 9760d9e..208299d 100644 --- a/hmi/dev/nspanel_eu_code/weather04.txt +++ b/hmi/dev/nspanel_eu_code/weather04.txt @@ -17,8 +17,6 @@ Page weather04 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_eu_code/weather05.txt b/hmi/dev/nspanel_eu_code/weather05.txt index 04ea0f0..73bd1b8 100644 --- a/hmi/dev/nspanel_eu_code/weather05.txt +++ b/hmi/dev/nspanel_eu_code/weather05.txt @@ -17,8 +17,6 @@ Page weather05 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_us_code/Program.s.txt b/hmi/dev/nspanel_us_code/Program.s.txt index edb9fe1..201bccf 100644 --- a/hmi/dev/nspanel_us_code/Program.s.txt +++ b/hmi/dev/nspanel_us_code/Program.s.txt @@ -9,7 +9,7 @@ Program.s int back_page_id=0 int dimdelta=0 int api=0 // 0 = disconnected from HA, 1 = connected to HA - int is_qrcode=0,is_notification=0,is_utilities=0 + int is_utilities=0 int brightness=100,brightness_dim=40,brightness_sleep=0 int display_mode=2 // 1 = EU, 2 = US, 3 = US landscape, 4 = blank int charset=1 // 1 = International (original), 2 = CJK diff --git a/hmi/dev/nspanel_us_code/alarm.txt b/hmi/dev/nspanel_us_code/alarm.txt index a358203..a2a65cf 100644 --- a/hmi/dev/nspanel_us_code/alarm.txt +++ b/hmi/dev/nspanel_us_code/alarm.txt @@ -24,8 +24,6 @@ Page alarm vis bt_bypass,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/boot.txt b/hmi/dev/nspanel_us_code/boot.txt index 3e63dce..daa69a3 100644 --- a/hmi/dev/nspanel_us_code/boot.txt +++ b/hmi/dev/nspanel_us_code/boot.txt @@ -16,8 +16,6 @@ Page boot covx baud,baud_rate.txt,0,0 baud_rate.txt+=" bps" vis unavailable,0 - - Postinitialize Event sendme Page Exit Event @@ -103,7 +101,7 @@ Text tft_version Dragging : 0 Send Component ID : on press and release Associated Keyboard: none - Text : 4.3dev3 + Text : 4.3dev4 Max. Text Size : 9 Events diff --git a/hmi/dev/nspanel_us_code/buttonpage01.txt b/hmi/dev/nspanel_us_code/buttonpage01.txt index 2026b19..0b5acd8 100644 --- a/hmi/dev/nspanel_us_code/buttonpage01.txt +++ b/hmi/dev/nspanel_us_code/buttonpage01.txt @@ -35,8 +35,6 @@ Page buttonpage01 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/buttonpage02.txt b/hmi/dev/nspanel_us_code/buttonpage02.txt index 3d479dc..eed659f 100644 --- a/hmi/dev/nspanel_us_code/buttonpage02.txt +++ b/hmi/dev/nspanel_us_code/buttonpage02.txt @@ -35,8 +35,6 @@ Page buttonpage02 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/buttonpage03.txt b/hmi/dev/nspanel_us_code/buttonpage03.txt index ed1c1f0..17f7232 100644 --- a/hmi/dev/nspanel_us_code/buttonpage03.txt +++ b/hmi/dev/nspanel_us_code/buttonpage03.txt @@ -35,8 +35,6 @@ Page buttonpage03 } vis page_index,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/buttonpage04.txt b/hmi/dev/nspanel_us_code/buttonpage04.txt index 0f5f3e6..6199075 100644 --- a/hmi/dev/nspanel_us_code/buttonpage04.txt +++ b/hmi/dev/nspanel_us_code/buttonpage04.txt @@ -22,8 +22,6 @@ Page buttonpage04 vis page_index,1 vis page_label,1 } - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/climate.txt b/hmi/dev/nspanel_us_code/climate.txt index 721f7ad..3ba81b3 100644 --- a/hmi/dev/nspanel_us_code/climate.txt +++ b/hmi/dev/nspanel_us_code/climate.txt @@ -33,8 +33,6 @@ Page climate page home } vis unavailable,0 - - Postinitialize Event sendme Page Exit Event diff --git a/hmi/dev/nspanel_us_code/confirm.txt b/hmi/dev/nspanel_us_code/confirm.txt index 131e50e..38da546 100644 --- a/hmi/dev/nspanel_us_code/confirm.txt +++ b/hmi/dev/nspanel_us_code/confirm.txt @@ -17,8 +17,6 @@ Page confirm page home } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) page_id diff --git a/hmi/dev/nspanel_us_code/cover.txt b/hmi/dev/nspanel_us_code/cover.txt index d2d624e..a103257 100644 --- a/hmi/dev/nspanel_us_code/cover.txt +++ b/hmi/dev/nspanel_us_code/cover.txt @@ -17,8 +17,6 @@ Page cover page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) va1 diff --git a/hmi/dev/nspanel_us_code/entitypage01.txt b/hmi/dev/nspanel_us_code/entitypage01.txt index 977a7b4..e4cf268 100644 --- a/hmi/dev/nspanel_us_code/entitypage01.txt +++ b/hmi/dev/nspanel_us_code/entitypage01.txt @@ -30,8 +30,6 @@ Page entitypage01 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_us_code/entitypage02.txt b/hmi/dev/nspanel_us_code/entitypage02.txt index 4b25de6..624506d 100644 --- a/hmi/dev/nspanel_us_code/entitypage02.txt +++ b/hmi/dev/nspanel_us_code/entitypage02.txt @@ -30,8 +30,6 @@ Page entitypage02 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_us_code/entitypage03.txt b/hmi/dev/nspanel_us_code/entitypage03.txt index 97fecd2..6112d73 100644 --- a/hmi/dev/nspanel_us_code/entitypage03.txt +++ b/hmi/dev/nspanel_us_code/entitypage03.txt @@ -30,8 +30,6 @@ Page entitypage03 { page_index.txt+="â—‹" } - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_us_code/entitypage04.txt b/hmi/dev/nspanel_us_code/entitypage04.txt index a7c0222..5ae4454 100644 --- a/hmi/dev/nspanel_us_code/entitypage04.txt +++ b/hmi/dev/nspanel_us_code/entitypage04.txt @@ -30,8 +30,6 @@ Page entitypage04 page_index.txt+="â—‹" } page_index.txt+="●" - - Postinitialize Event sendme Text value01_label diff --git a/hmi/dev/nspanel_us_code/fan.txt b/hmi/dev/nspanel_us_code/fan.txt index 80c36db..95478b5 100644 --- a/hmi/dev/nspanel_us_code/fan.txt +++ b/hmi/dev/nspanel_us_code/fan.txt @@ -18,8 +18,6 @@ Page fan } vis unavailable,0 vis bt_oscillate,0 - - Postinitialize Event sendme Variable (string) fansetting diff --git a/hmi/dev/nspanel_us_code/home.txt b/hmi/dev/nspanel_us_code/home.txt index 6bd21a1..883f81c 100644 --- a/hmi/dev/nspanel_us_code/home.txt +++ b/hmi/dev/nspanel_us_code/home.txt @@ -20,8 +20,6 @@ Page home { vis bt_entities,0 } - vis bt_notific,is_notification - vis bt_qrcode,is_qrcode vis bt_utilities,is_utilities if(display_mode==3) { @@ -29,8 +27,6 @@ Page home vis right_bt_text,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick @@ -355,7 +351,10 @@ Text bt_qrcode Events Touch Release Event - page qrcode + if(bt_qrcode.txt!="") + { + page qrcode + } Text bt_entities Attributes diff --git a/hmi/dev/nspanel_us_code/keyb_num.txt b/hmi/dev/nspanel_us_code/keyb_num.txt index aea6a3e..adcc655 100644 --- a/hmi/dev/nspanel_us_code/keyb_num.txt +++ b/hmi/dev/nspanel_us_code/keyb_num.txt @@ -17,8 +17,6 @@ Page keyb_num page page_id.val } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) page_id diff --git a/hmi/dev/nspanel_us_code/light.txt b/hmi/dev/nspanel_us_code/light.txt index ca91503..54e4869 100644 --- a/hmi/dev/nspanel_us_code/light.txt +++ b/hmi/dev/nspanel_us_code/light.txt @@ -37,8 +37,6 @@ Page light vis color_button,0 } vis unavailable,0 - - Postinitialize Event sendme Variable (int32) rgb565 diff --git a/hmi/dev/nspanel_us_code/media_player.txt b/hmi/dev/nspanel_us_code/media_player.txt index a0d7d1d..4050fd7 100644 --- a/hmi/dev/nspanel_us_code/media_player.txt +++ b/hmi/dev/nspanel_us_code/media_player.txt @@ -17,8 +17,6 @@ Page media_player page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/notification.txt b/hmi/dev/nspanel_us_code/notification.txt index 089013e..99d93c7 100644 --- a/hmi/dev/nspanel_us_code/notification.txt +++ b/hmi/dev/nspanel_us_code/notification.txt @@ -17,8 +17,6 @@ Page notification page home } vis unavailable,0 - - Postinitialize Event sendme Variable (string) lastclick diff --git a/hmi/dev/nspanel_us_code/qrcode.txt b/hmi/dev/nspanel_us_code/qrcode.txt index e9a780b..6e55366 100644 --- a/hmi/dev/nspanel_us_code/qrcode.txt +++ b/hmi/dev/nspanel_us_code/qrcode.txt @@ -13,8 +13,6 @@ Page qrcode Events Preinitialize Event vis unavailable,0 - - Postinitialize Event sendme Text qrcode_label diff --git a/hmi/dev/nspanel_us_code/screensaver.txt b/hmi/dev/nspanel_us_code/screensaver.txt index 4c0ad19..6f8da50 100644 --- a/hmi/dev/nspanel_us_code/screensaver.txt +++ b/hmi/dev/nspanel_us_code/screensaver.txt @@ -15,8 +15,6 @@ Page screensaver vis text,0 dim=brightness_sleep vis unavailable,0 - - Postinitialize Event sendme Touch Release Event diff --git a/hmi/dev/nspanel_us_code/settings.txt b/hmi/dev/nspanel_us_code/settings.txt index 501cdd2..7d51a3e 100644 --- a/hmi/dev/nspanel_us_code/settings.txt +++ b/hmi/dev/nspanel_us_code/settings.txt @@ -19,8 +19,6 @@ Page settings vis lbl_sleep,0 vis bt_sleep,0 vis unavailable,0 - - Postinitialize Event sendme Text bright_text diff --git a/hmi/dev/nspanel_us_code/utilities.txt b/hmi/dev/nspanel_us_code/utilities.txt index 0d47821..a664959 100644 --- a/hmi/dev/nspanel_us_code/utilities.txt +++ b/hmi/dev/nspanel_us_code/utilities.txt @@ -20,8 +20,6 @@ Page utilities vis title_icon,1 vis title,1 vis button_back,1 - - Postinitialize Event sendme Variable (int32) line_main_d diff --git a/hmi/dev/nspanel_us_code/weather01.txt b/hmi/dev/nspanel_us_code/weather01.txt index 31c8edc..878553e 100644 --- a/hmi/dev/nspanel_us_code/weather01.txt +++ b/hmi/dev/nspanel_us_code/weather01.txt @@ -17,8 +17,6 @@ Page weather01 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_us_code/weather02.txt b/hmi/dev/nspanel_us_code/weather02.txt index d1e703a..9dbf735 100644 --- a/hmi/dev/nspanel_us_code/weather02.txt +++ b/hmi/dev/nspanel_us_code/weather02.txt @@ -17,8 +17,6 @@ Page weather02 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_us_code/weather03.txt b/hmi/dev/nspanel_us_code/weather03.txt index be8be75..d0d38c9 100644 --- a/hmi/dev/nspanel_us_code/weather03.txt +++ b/hmi/dev/nspanel_us_code/weather03.txt @@ -17,8 +17,6 @@ Page weather03 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_us_code/weather04.txt b/hmi/dev/nspanel_us_code/weather04.txt index 9760d9e..208299d 100644 --- a/hmi/dev/nspanel_us_code/weather04.txt +++ b/hmi/dev/nspanel_us_code/weather04.txt @@ -17,8 +17,6 @@ Page weather04 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/dev/nspanel_us_code/weather05.txt b/hmi/dev/nspanel_us_code/weather05.txt index 04ea0f0..73bd1b8 100644 --- a/hmi/dev/nspanel_us_code/weather05.txt +++ b/hmi/dev/nspanel_us_code/weather05.txt @@ -17,8 +17,6 @@ Page weather05 page home } vis unavailable,0 - - Postinitialize Event sendme Text day diff --git a/hmi/nspanel_eu.HMI b/hmi/nspanel_eu.HMI index 281affe3a9d51b85f97831b974ee435cf79173f2..7825474d7cb328bcb83304de8200158e0aa2182a 100644 GIT binary patch delta 8052 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 HTQB}6{mwoN diff --git a/hmi/nspanel_us.HMI b/hmi/nspanel_us.HMI index e23ec97ce1fb90c56640bb0464e97149ae4cbf58..d19d12918ddff7acacebd5b505b11db69ec6bcdc 100644 GIT binary patch delta 6649 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 delta 11789 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 PhG;<8>G9o-UGD!6s;>Iq diff --git a/nspanel_blueprint.yaml b/nspanel_blueprint.yaml index 7a9c7d9..48ab345 100644 --- a/nspanel_blueprint.yaml +++ b/nspanel_blueprint.yaml @@ -10,7 +10,7 @@ blueprint: description: > # NSPanel Configuration via Blueprint: Complete UI-Based Setup - **Version**: v4.3dev3 + **Version**: v4.3dev4 This project enables comprehensive configuration of your NSPanel through a Blueprint featuring a user interface. @@ -3205,6 +3205,14 @@ trigger_variables: if nspanel_entities | selectattr(None, "search", "sensor.*_temperature") | list | count > 0 else ("sensor." ~ device_name ~ "_temperature") }} + + notification_text: > + {{ + nspanel_entities | selectattr(None, "search", "sensor.*_notification_text") | list | last + if nspanel_entities | selectattr(None, "search", "sensor.*_notification_text") | list | count > 0 + else ("sensor." ~ device_name ~ "_notification_text") + }} + notification_unread: > {{ nspanel_entities | selectattr(None, "search", "switch.*_notification_unread") | list | last @@ -3223,7 +3231,7 @@ trigger_variables: variables: ##### GENERAL ##### - blueprint_version: '4.3dev3' + blueprint_version: '4.3dev4' date_format_temp: !input 'date_format' # Avoid breaking change for existing users with legacy type format date_format: '{{ date_format_temp if date_format_temp not in ["%d.%m", "%d/%m", "%-d/%-m", "%-m/%-d"] else "%A, " ~ date_format_temp }}' @@ -6857,6 +6865,14 @@ trigger: entity_id: !input 'home_value03' id: home_value03_state + ##### Trigger - Home - Notification ####################################################################################################################### + - platform: template + value_template: '{{ states(notification_text) }}' + id: notification_changed + - platform: template + value_template: '{{ states(notification_unread) }}' + id: notification_changed + ##### Trigger - Home - Custom buttons - State change ################################################################################################################# ##### Custom button 01 - Trigger 'home_custom_buttons' ##### - platform: event @@ -7409,7 +7425,6 @@ action: - variables: bt_utilities_icon: !input home_button08_icon - bt_notific_icon: !input home_button04_icon bt_entities_icon: !input home_button06_icon bt_qrcode_icon: !input home_button05_icon qrcode: @@ -7424,14 +7439,6 @@ action: meridiem: '{{ dict.values(mui[language].meridiem) | list }}' chip_font: !input chip_font_size custom_buttons_font: !input custom_buttons_font_size - notification_icon: > - {{ - all_icons[bt_notific_icon.split(":")[1]] - if bt_notific_icon is string and bt_notific_icon.split(":")[1] in all_icons - else all_icons.email - }} - notification_icon_color_normal: !input home_button04_icon_color01 - notification_icon_color_unread: !input home_button04_icon_color02 qrcode: !input qrcode_enabled qrcode_icon: > {{ @@ -7710,7 +7717,6 @@ action: - alias: Home page conditions: '{{ nspanel_event.page == pages.home }}' sequence: &refresh_page_home - ##### Weather Icon Home Page ##### - &refresh-page_home-weather_pic service: '{{ nspanel.service.command }}' @@ -7801,6 +7807,34 @@ action: value_color: !input home_indoor_temp_label_color continue_on_error: true + ###### Notification button ###### + - &refresh_page_home_notification_button + if: '{{ true }}' + then: + - &variables_home_page_notify_button + variables: + notification_icon_color_normal: !input home_button04_icon_color01 + notification_icon_color_unread: !input home_button04_icon_color02 + bt_notific_icon: !input home_button04_icon + notification_text_state: '{{ states(notification_text) if has_value(notification_text) else "" }}' + notification_unread_state: '{{ states(notification_unread) | default(true) }}' + notification_visible: '{{ notification_text_state is string and notification_text_state | length > 0 }}' + notification_icon: > + {{ + ( + all_icons[bt_notific_icon.split(":")[1]] + if bt_notific_icon is string and bt_notific_icon.split(":")[1] in all_icons + else all_icons.email + ) if notification_visible else "" + }} + - service: '{{ nspanel.service.icon }}' + data: + id: home.bt_notific + icon: '{{ notification_icon }}' + icon_color: '{{ notification_icon_color_unread if notification_unread_state else notification_icon_color_normal }}' + visible: '{{ notification_visible }}' + continue_on_error: true + ###### Custom buttons ###### - &update_home_page_custom_buttons if: '{{ true }}' @@ -10131,6 +10165,14 @@ action: sequence: - *display_home_page_status_bar + ##### Home page - Notification changed ###### + - alias: Home page - Notification changed + conditions: + - condition: trigger + id: notification_changed + sequence: + - *variables_home_page_notify_button + ##### HW BUTTON - state ##### - alias: Hardware button - State conditions: