From 10a9e417ea569b110ee4af3a64f884d29c901334 Mon Sep 17 00:00:00 2001 From: Edward Firmo <94725493+edwardtfn@users.noreply.github.com> Date: Tue, 4 Apr 2023 23:38:00 +0200 Subject: [PATCH] Code refactoring (#565) * Code refactoring - Nextion constants - Colors No changes in functionalities. Just renaming variables related to colors in order to improve readability. * Code refactoring - Nextion constants - Icons * Adding aliases on the first level actions This will make easier troubleshooting as aliases are shown in the logs. * Nextion constants - Pages * Nextion constants - Commands * Nextion constants - Other pics * Fixed typo in nextion.pics.hardware.button * Fixed " 'mui_weekday_today' is undefined" * Code refactoring/standardization Refactoring: - Weather pages - It might support any weather integration now, including OpenWeather) - New string for translation (when weather info is not available for a certain day) - Home page (partial) * Fix bug "'home_page_values' is undefined" * Code refactoring - Button pages Rebuilt button pages in order to improve readability and maintainability. No changes on functionalities, * Changed blueprint version to v3.2.2 * Refactoring entities pages * Reorganizing inputs to improve readability * Bug fixes: qrcode icon & weather provider - Fixed bug preventing to detect that QR Code was enabled in order to display the QR code icon on Home page - Fixed weather integration detection * Review states(entity_id) to make it more resilient Reduce the chances of crash if a `states(entity_id)` returns an error. * Make state_attr(entity_id, attr) more resilitent To avoid crashes with an invalid return. * Perf improv: Don't load weather vars unless needed Performance improvement - don't load weather vars when those are not needed. * Using alias for delay_value To make easier to maintain the code. * Code refactoring: Button press/status Optimizing code in order to improve readability & maintainability. * Reorganizing pages variables --- nspanel_blueprint.yaml | 10249 +++++++++++++++------------------------ 1 file changed, 3929 insertions(+), 6320 deletions(-) diff --git a/nspanel_blueprint.yaml b/nspanel_blueprint.yaml index 9c1cf87..f760767 100644 --- a/nspanel_blueprint.yaml +++ b/nspanel_blueprint.yaml @@ -35,7 +35,7 @@ The goal was to create a version that allows everyone to use the NSpanel fully l 🎉 Roadmap Roadmap can be found here [Roadmap](https://github.com/Blackymas/NSPanel_HA_Blueprint/labels/roadmap) -â„šī¸ Version: v.3.2.2 +â„šī¸ Version: v.3.2.3DEV ' @@ -46,2284 +46,2283 @@ The goal was to create a version that allows everyone to use the NSpanel fully l input: ##### MAIN NAME ##### - nspanel_name: - name: ESPhome Node Name - description: '* *"SYSTEM" - here you have to enter exactly the same **"device_name"** you entered in the Esphome file*' - default: [nspanel_name] - selector: - text: {} + nspanel_name: + name: ESPhome Node Name + description: '* *"SYSTEM" - here you have to enter exactly the same **"device_name"** you entered in the Esphome file*' + default: [nspanel_name] + selector: + text: {} ##### SYSTEM SETTINGS ##### - language: - name: Language for NSPanel - description: '* *"SYSTEM" - select the language for your NSPanel*' - default: 'ENG' - selector: - select: - mode: dropdown - options: - - label: 'Bulgarian' - value: BGR - - label: 'Czech' - value: CZE - - label: 'Danish' - value: DNK - - label: 'Dutch' - value: NLD - - label: 'English' - value: ENG - - label: 'Estonian' - value: EST - - label: 'Finnish' - value: FIN - - label: 'French' - value: FRA - - label: 'German' - value: DEU - - label: 'Greek' - value: GRC - - label: 'Hebrew' - value: HEB - - label: 'Hungarian' - value: HUN - - label: 'Indonesian' - value: IDN - - label: 'Italian' - value: ITA - - label: 'Latvian' - value: LVA - - label: 'Lithuanian' - value: LTU - - label: 'Norwegian' - value: NOR - - label: 'Polish' - value: POL - - label: 'Portuguese' - value: PRT - - label: 'Romanian' - value: ROU - - label: 'Russian' - value: RUS - - label: 'Swedish' - value: SWE - - label: 'Slovak' - value: SVK - - label: 'Slovene' - value: SVN - - label: 'Spanish' - value: ESP - - label: 'Turkish' - value: TUR - - label: 'Ukrainian' - value: UKR - date_format: - name: Date Format - description: '* *"SYSTEM" - select the format for date to display*' - default: '%d.%m' - selector: - select: - multiple: false - #mode: dropdown - options: - - label: 'DD.MM (ex. 22.03)' - value: '%d.%m' - - label: 'DD/MM (ex. 22/03)' - value: '%d/%m' - - label: 'D/M (ex. 3/22)' - value: '%-m/%-d' + language: + name: Language for NSPanel + description: '* *"SYSTEM" - select the language for your NSPanel*' + default: 'ENG' + selector: + select: + mode: dropdown + options: + - label: 'Bulgarian' + value: BGR + - label: 'Czech' + value: CZE + - label: 'Danish' + value: DNK + - label: 'Dutch' + value: NLD + - label: 'English' + value: ENG + - label: 'Estonian' + value: EST + - label: 'Finnish' + value: FIN + - label: 'French' + value: FRA + - label: 'German' + value: DEU + - label: 'Greek' + value: GRC + - label: 'Hebrew' + value: HEB + - label: 'Hungarian' + value: HUN + - label: 'Indonesian' + value: IDN + - label: 'Italian' + value: ITA + - label: 'Latvian' + value: LVA + - label: 'Lithuanian' + value: LTU + - label: 'Norwegian' + value: NOR + - label: 'Polish' + value: POL + - label: 'Portuguese' + value: PRT + - label: 'Romanian' + value: ROU + - label: 'Russian' + value: RUS + - label: 'Swedish' + value: SWE + - label: 'Slovak' + value: SVK + - label: 'Slovene' + value: SVN + - label: 'Spanish' + value: ESP + - label: 'Turkish' + value: TUR + - label: 'Ukrainian' + value: UKR + date_format: + name: Date Format + description: '* *"SYSTEM" - select the format for date to display*' + default: '%d.%m' + selector: + select: + multiple: false + #mode: dropdown + options: + - label: 'DD.MM (ex. 22.03)' + value: '%d.%m' + - label: 'DD/MM (ex. 22/03)' + value: '%d/%m' + - label: 'D/M (ex. 3/22)' + value: '%-m/%-d' - time_format: - name: Time Format - description: '* *"SYSTEM" - select the format for time to display*' - default: '%H:%M' - selector: - select: - multiple: false - #mode: dropdown - options: - - label: 'HH:MM (ex. 13:30)' - value: '%H:%M' - - label: 'H:MM AM/PM (ex. 1:30PM)' - value: '%-I:%M' + time_format: + name: Time Format + description: '* *"SYSTEM" - select the format for time to display*' + default: '%H:%M' + selector: + select: + multiple: false + #mode: dropdown + options: + - label: 'HH:MM (ex. 13:30)' + value: '%H:%M' + - label: 'H:MM AM/PM (ex. 1:30PM)' + value: '%-I:%M' - delay: - name: Delay to avoid synchronization problem - description: '* *"SYSTEM" - Synchronization Problems may occur due to the **NETWORK / WLAN**. To avoid this problem enter your value for the delay (milliseconds)*' - default: '1' - selector: - number: - min: 0 - max: 100 - - ##### PLACEHOLDER ###################################################################### - placeholder01: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ WEATHER AND TEMPERATURE ✅ ' - default: 'Weather and Temp' - selector: - select: - options: - - Weather and Temp - ##### PLACEHOLDER ###################################################################### + delay: + name: Delay to avoid synchronization problem + description: '* *"SYSTEM" - Synchronization Problems may occur due to the **NETWORK / WLAN**. To avoid this problem enter your value for the delay (milliseconds)*' + default: '1' + selector: + number: + min: 0 + max: 100 ##### WEATHER - Page Home / Weather 01-04 ##### - weather: - name: Weather Integration - description: '* *"SYSTEM" - select our Weather Integration*' - default: 'Default' - selector: - select: - options: - - Default - - AccuWeather - weather_entity: - name: Weather entity from HA - description: '* *"SYSTEM" - Select your weather entity.*' - default: [] - selector: - entity: - domain: - - weather + ##### PLACEHOLDER ###################################################################### + placeholder01: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ WEATHER AND TEMPERATURE ✅ ' + default: 'Weather and Temp' + selector: + select: + options: + - Weather and Temp + ##### PLACEHOLDER ###################################################################### + weather: + name: Weather Integration + description: '* *"SYSTEM" - select our Weather Integration*' + default: 'Default' + selector: + select: + options: + - Default + - AccuWeather + weather_entity: + name: Weather entity from HA + description: '* *"SYSTEM" - Select your weather entity.*' + default: [] + selector: + entity: + domain: + - weather - ##### Temp - Page Home ##### - outdoortemp: - name: Outdoor Temperature Sensor (Optional) - description: '* *Page "HOME" - If no outdoor sensor is available, leave the field empty and the value from your selected weather integration will be used automatically*' - default: [] - selector: - entity: - domain: - - sensor - home_outdoor_temp_label_color: - name: Outdoor Temperature Sensor - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed*' - default: [255,255,255] #65535 White - selector: &color-selector - color_rgb: - indoortemp: - name: Indoor Temperature Sensor - ENTITY (Optional) - description: '* *Page "HOME" - An indoor temperature sensor is not necessary. Leave the field empty if you want to use the temperature sensor of the NSPanel. Additionally a temperature correction for the NSPanel sensor is possible under HA Devices. So everyone can adjust the sensor exactly*' - default: [] - selector: - entity: - domain: - - sensor - home_indoor_temp_icon: - name: Indoor Temperature Sensor - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E50E)*' - default:  #E50E - selector: - text: {} - home_indoor_temp_icon_color: - name: Indoor Temperature Sensor - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [255,255,255] #65535 White - selector: *color-selector - home_indoor_temp_label_color: - name: Indoor Temperature Sensor - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed*' - default: [255,255,255] #65535 White - selector: *color-selector - - ##### PLACEHOLDER ###################################################################### - placeholder02: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ SENSOR HOME PAGE ✅ ' - default: 'sensor' - selector: - select: - options: - - sensor - ##### PLACEHOLDER ###################################################################### - - ##### Sensor - Page Home ##### - home_value01: - name: Sensor 01 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed*' - default: [] - selector: - entity: - domain: - - sensor - home_value01_icon: - name: Sensor 01 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: &icon-selector - text: {} - home_value01_icon_color: - name: Sensor 01 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - home_value01_label_color: - name: Sensor 01 - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - home_value02: - name: Sensor 02 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed*' - default: [] - selector: - entity: - domain: - - sensor - home_value02_icon: - name: Sensor 02 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: - text: {} - home_value02_icon_color: - name: Sensor 02 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - home_value02_label_color: - name: Sensor 02 - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - home_value03: - name: Sensor 03 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed*' - default: [] - selector: - entity: - domain: - - sensor - home_value03_icon: - name: Sensor 03 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - home_value03_icon_color: - name: Sensor 03 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - home_value03_label_color: - name: Sensor 03 - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - - ##### PLACEHOLDER ###################################################################### - placeholder03: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ CHIPS ✅ ' - default: 'chips' - selector: - select: - options: - - chips - ##### PLACEHOLDER ###################################################################### - - ##### Chips - Page Home ##### - chip01: - name: Chip 01 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: &chip-entity-selector - entity: - domain: - - binary_sensor - - input_boolean - - light - - sensor - - switch - chip01_icon: - name: Chip 01 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: - text: {} - chip01_icon_color: - name: Chip 01 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip02: - name: Chip 02 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip02_icon: - name: Chip 02 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip02_icon_color: - name: Chip 02 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip03: - name: Chip 03 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip03_icon: - name: Chip 03 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip03_icon_color: - name: Chip 03 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip04: - name: Chip 04 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip04_icon: - name: Chip 04 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip04_icon_color: - name: Chip 04 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip05: - name: Chip 05 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip05_icon: - name: Chip 05 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip05_icon_color: - name: Chip 05 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip06: - name: Chip 06 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip06_icon: - name: Chip 06 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip06_icon_color: - name: Chip 06 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - chip07: - name: Chip 07 - ENTITY (Optional) - description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' - default: [] - selector: *chip-entity-selector - chip07_icon: - name: Chip 07 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - chip07_icon_color: - name: Chip 07 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - - ##### PLACEHOLDER ###################################################################### - placeholder04: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ CLIMATE ✅ ' - default: 'climate' - selector: - select: - options: - - climate - ##### PLACEHOLDER ###################################################################### + ##### Page Home ##### + ##### Temperature - Page Home ##### + outdoortemp: + name: Outdoor Temperature Sensor (Optional) + description: '* *Page "HOME" - If no outdoor sensor is available, leave the field empty and the value from your selected weather integration will be used automatically*' + default: [] + selector: + entity: + domain: + - sensor + home_outdoor_temp_label_color: + name: Outdoor Temperature Sensor - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed*' + default: [255,255,255] #65535 White + selector: &color-selector + color_rgb: + indoortemp: + name: Indoor Temperature Sensor - ENTITY (Optional) + description: '* *Page "HOME" - An indoor temperature sensor is not necessary. Leave the field empty if you want to use the temperature sensor of the NSPanel. Additionally a temperature correction for the NSPanel sensor is possible under HA Devices. So everyone can adjust the sensor exactly*' + default: [] + selector: + entity: + domain: + - sensor + home_indoor_temp_icon: + name: Indoor Temperature Sensor - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E50E)*' + default:  #E50E + selector: + text: {} + home_indoor_temp_icon_color: + name: Indoor Temperature Sensor - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [255,255,255] #65535 White + selector: *color-selector + home_indoor_temp_label_color: + name: Indoor Temperature Sensor - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed*' + default: [255,255,255] #65535 White + selector: *color-selector + ##### Sensors - Page Home ##### + ##### PLACEHOLDER ###################################################################### + placeholder02: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ SENSOR HOME PAGE ✅ ' + default: 'sensor' + selector: + select: + options: + - sensor + ##### PLACEHOLDER ###################################################################### + home_value01: + name: Sensor 01 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed*' + default: [] + selector: + entity: + domain: + - sensor + home_value01_icon: + name: Sensor 01 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: &icon-selector + text: {} + home_value01_icon_color: + name: Sensor 01 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + home_value01_label_color: + name: Sensor 01 - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + home_value02: + name: Sensor 02 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed*' + default: [] + selector: + entity: + domain: + - sensor + home_value02_icon: + name: Sensor 02 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: + text: {} + home_value02_icon_color: + name: Sensor 02 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + home_value02_label_color: + name: Sensor 02 - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + home_value03: + name: Sensor 03 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed*' + default: [] + selector: + entity: + domain: + - sensor + home_value03_icon: + name: Sensor 03 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + home_value03_icon_color: + name: Sensor 03 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + home_value03_label_color: + name: Sensor 03 - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + ##### Chips - Page Home ##### + ##### PLACEHOLDER ###################################################################### + placeholder03: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ CHIPS ✅ ' + default: 'chips' + selector: + select: + options: + - chips + ##### PLACEHOLDER ###################################################################### + chip01: + name: Chip 01 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: &chip-entity-selector + entity: + domain: + - binary_sensor + - input_boolean + - light + - sensor + - switch + chip01_icon: + name: Chip 01 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: + text: {} + chip01_icon_color: + name: Chip 01 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip02: + name: Chip 02 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip02_icon: + name: Chip 02 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip02_icon_color: + name: Chip 02 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip03: + name: Chip 03 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip03_icon: + name: Chip 03 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip03_icon_color: + name: Chip 03 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip04: + name: Chip 04 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip04_icon: + name: Chip 04 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip04_icon_color: + name: Chip 04 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip05: + name: Chip 05 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip05_icon: + name: Chip 05 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip05_icon_color: + name: Chip 05 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip06: + name: Chip 06 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip06_icon: + name: Chip 06 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip06_icon_color: + name: Chip 06 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + chip07: + name: Chip 07 - ENTITY (Optional) + description: '* *Page "HOME" - Entity which should be displayed (ONLY light | switch | binary_sensor | sensor | with state ON/OFF)*' + default: [] + selector: *chip-entity-selector + chip07_icon: + name: Chip 07 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed when state ON (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + chip07_icon_color: + name: Chip 07 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed*' + default: [128,128,128] #33808 Grey light + selector: *color-selector ##### Climate - Page Climate ##### - climate: - name: Climate to control - ENTITY (Optional) - description: '* *Page "CLIMATE" - If an entity is selected, the **"Thermostat page"** is activated and enabled. If you have **"Underfloor Heating System"** and want to switch it via the relay, you must create a separate climate in HA. See HowTo*' - default: [] - selector: - entity: - domain: climate - climate_optimistic: - name: Climate control optimistic mode - TRUE/FALSE (Optional) - default: true - description: '* *Page "CLIMATE" - Depends on your climate device and HA-Integration. If optimisitc mode is **OFF** then changes are made will wait for response from device to update temperature in the display. This can cause delays or jumping values. If **ON** the script update the display immediately but apply changes after closing climate-page* ' - selector: - boolean: - hotwatercharge: - name: Hot Water Charge Button - ENTITY (Optional) - description: '* *Page "CLIMATE" - Choose your switch to turn on/off*' - default: [] - selector: - entity: - domain: - - switch - - input_boolean - - ##### PLACEHOLDER ###################################################################### - placeholder05: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ QR CODE ✅ ' - default: 'qrcode' - selector: - select: - options: - - qrcode - ##### PLACEHOLDER ###################################################################### + ##### PLACEHOLDER ###################################################################### + placeholder04: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ CLIMATE ✅ ' + default: 'climate' + selector: + select: + options: + - climate + ##### PLACEHOLDER ###################################################################### + climate: + name: Climate to control - ENTITY (Optional) + description: '* *Page "CLIMATE" - If an entity is selected, the **"Thermostat page"** is activated and enabled. If you have **"Underfloor Heating System"** and want to switch it via the relay, you must create a separate climate in HA. See HowTo*' + default: [] + selector: + entity: + domain: climate + climate_optimistic: + name: Climate control optimistic mode - TRUE/FALSE (Optional) + default: true + description: '* *Page "CLIMATE" - Depends on your climate device and HA-Integration. If optimisitc mode is **OFF** then changes are made will wait for response from device to update temperature in the display. This can cause delays or jumping values. If **ON** the script update the display immediately but apply changes after closing climate-page* ' + selector: + boolean: + hotwatercharge: + name: Hot Water Charge Button - ENTITY (Optional) + description: '* *Page "CLIMATE" - Choose your switch to turn on/off*' + default: [] + selector: + entity: + domain: + - switch + - input_boolean ##### QR Code - Page Home/QR Code ##### - qrcode_enabled: - name: Activate QR Code - TRUE/FALSE (Optional) - default: false - description: '* *Page "HOME" - activate QR Code page and QR Code Button on the home page* ' - selector: - boolean: + ##### PLACEHOLDER ###################################################################### + placeholder05: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ QR CODE ✅ ' + default: 'qrcode' + selector: + select: + options: + - qrcode + ##### PLACEHOLDER ###################################################################### + qrcode_enabled: + name: Activate QR Code - TRUE/FALSE (Optional) + default: false + description: '* *Page "HOME" - activate QR Code page and QR Code Button on the home page* ' + selector: + boolean: + qrcode_label: + name: QR Code page name - LABEL (Optional) + description: '* *Page "QRCODE" - Label which should be displayed*' + default: [] + selector: + text: {} + qrcode_value: + name: QR Code content - VALUE (Optional) + description: '* *Page "QRCODE" - Value you want to display as QR code*' + default: [] + selector: + text: {} + home_button05_icon: + name: QR Code - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E432)*' + default:  #E432 + selector: *icon-selector + home_button05_icon_color: + name: QR Code - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector - qrcode_label: - name: QR Code page name - LABEL (Optional) - description: '* *Page "QRCODE" - Label which should be displayed*' - default: [] - selector: - text: {} + ##### Page Home - Hardware Buttons ##### + ##### PLACEHOLDER ###################################################################### + placeholder06: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ HARDWARE BUTTONS ✅ ' + default: 'hardwarebuttons' + selector: + select: + options: + - hardwarebuttons + ##### PLACEHOLDER ###################################################################### + hold_delay: + name: Delay for HW-Button hold in seconds - VALUE + description: '* *"SYSTEM" - Time in seconds to detect a hold*' + default: 1.0 + selector: + number: + min: 1.0 + max: 10.0 + step: 1.0 + unit_of_measurement: seconds + relay_1_local_fallback: + name: Activate relay 1 local fallback - TRUE/FALSE (Optional) + default: false + description: '* *"SYSTEM" - activate this to use left button to toggle relay 1 if display is offline* ' + selector: + boolean: + left_button_entity: + name: Left hardware button - ENTITY (Optional) + description: '* *"SYSTEM" - Entity which should be switched*' + default: [] + selector: &hardware-button-selector + entity: + domain: + - light + - switch + - input_boolean + - cover + - automation + - button + - input_button + - scene + - script + - fan + left_button_name: + name: Left hardware button name - LABEL (Optional) + description: '* *Page "HOME" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + left_button_hold_select: + name: Left hardware button hold assignment - VALUE (Optional) + description: '* *"SYSTEM" - select what shold happen on hold*' + default: 'Default' + selector: &hardware-button-hold-selector + select: + options: + - Default + - Custom Action + left_button_hold_custom_action: + name: Left hardware button custom hold action - VALUE (Optional) + description: '*"SYSTEM" - The action(s) to launch on hold**' + default: [] + selector: + action: + left_button_color: + name: Left hardware button - LABEL COLOR (Optional) + description: '* *Page "HOME" - LABEL color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + relay_2_local_fallback: + name: Activate relay 2 local fallback - TRUE/FALSE (Optional) + default: false + description: '* *"SYSTEM" - activate this to use right button to toggle relay 2 if display is offline* ' + selector: + boolean: + right_button_entity: + name: Right hardware button - ENTITY (Optional) + description: '* *"SYSTEM" - Entity which should be switched*' + default: [] + selector: *hardware-button-selector + right_button_name: + name: Right hardware button name - LABEL (Optional) + description: '* *Page "HOME" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + right_button_hold_select: + name: Right button hold assignment - VALUE (Optional) + description: '* *"SYSTEM" - select what shold happen on hold*' + default: 'Default' + selector: *hardware-button-hold-selector + right_button_hold_custom_action: + name: Right button custom hold action - VALUE (Optional) + description: '*"SYSTEM" - The action(s) to launch on hold**' + default: [] + selector: + action: + right_button_color: + name: Right hardware button - LABEL COLOR (Optional) + description: '* *Page "HOME" - LABEL color which should be displayed*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector - qrcode_value: - name: QR Code content - VALUE (Optional) - description: '* *Page "QRCODE" - Value you want to display as QR code*' - default: [] - selector: - text: {} - home_button05_icon: - name: QR Code - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E432)*' - default:  #E432 - selector: *icon-selector - home_button05_icon_color: - name: QR Code - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector + ##### Button pages ##### + ##### Button page - Labels ##### + ##### PLACEHOLDER ###################################################################### + placeholder17: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ BUTTON PAGES LABELS ✅ ' + default: 'Button pages labels' + selector: + select: + options: + - Button pages labels + ##### PLACEHOLDER ###################################################################### + button_page01_label: + name: Button page 01 name - LABEL (Optional) + description: '* *Page "ButtonPage01" - Label which should be displayed*' + default: [] + selector: + text: {} + button_page02_label: + name: Button page 02 name - LABEL (Optional) + description: '* *Page "ButtonPage02" - Label which should be displayed*' + default: [] + selector: + text: {} + button_page03_label: + name: Button page 03 name - LABEL (Optional) + description: '* *Page "ButtonPage03" - Label which should be displayed*' + default: [] + selector: + text: {} + button_page04_label: + name: Button page 04 name - LABEL (Optional) + description: '* *Page "ButtonPage04" - Label which should be displayed*' + default: [] + selector: + text: {} + ##### Button page 01 ##### + ##### PLACEHOLDER ###################################################################### + placeholder07: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ BUTTON PAGES 01 ✅ ' + default: 'buttonpage01' + selector: + select: + options: + - buttonpage01 + ##### PLACEHOLDER ###################################################################### + entity01: + name: Button 01 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: &button-entity-selector + entity: + domain: + - light + - switch + - cover + - input_boolean + - automation + - button + - input_button + - scene + - person + - script + - binary_sensor + - fan + - climate + entity01_name: + name: Button 01 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity01_icon: + name: Button 01 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity01_icon_color: + name: Button 01 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity01_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button01** action*' + selector: + boolean: + entity02: + name: Button 02 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity02_name: + name: Button 02 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity02_icon: + name: Button 02 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity02_icon_color: + name: Button 02 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity02_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button02** action*' + selector: + boolean: + entity03: + name: Button 03 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity03_name: + name: Button 03 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity03_icon: + name: Button 03 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity03_icon_color: + name: Button 03 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity03_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button03** action*' + selector: + boolean: + entity04: + name: Button 04 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity04_name: + name: Button 04 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity04_icon: + name: Button 04 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity04_icon_color: + name: Button 04 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity04_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button04** action*' + selector: + boolean: + entity05: + name: Button 05 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity05_name: + name: Button 05 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity05_icon: + name: Button 05 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity05_icon_color: + name: Button 05 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity05_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button05** action*' + selector: + boolean: + entity06: + name: Button 06 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity06_name: + name: Button 06 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity06_icon: + name: Button 06 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity06_icon_color: + name: Button 06 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity06_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button06** action*' + selector: + boolean: + entity07: + name: Button 07 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity07_name: + name: Button 07 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity07_icon: + name: Button 07 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity07_icon_color: + name: Button 07 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity07_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button07** action*' + selector: + boolean: + entity08: + name: Button 08 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity08_name: + name: Button 08 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity08_icon: + name: Button 08 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity08_icon_color: + name: Button 08 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity08_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button08** action*' + selector: + boolean: + ##### Button page 02 ##### + ##### PLACEHOLDER ###################################################################### + placeholder08: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ BUTTON PAGE 02 ✅ ' + default: 'buttonpage02' + selector: + select: + options: + - buttonpage02 + ##### PLACEHOLDER ###################################################################### + entity09: + name: Button 09 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity09_name: + name: Button 09 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity09_icon: + name: Button 09 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity09_icon_color: + name: Button 09 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity09_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button09** action*' + selector: + boolean: + entity10: + name: Button 10 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity10_name: + name: Button 10 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity10_icon: + name: Button 10 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity10_icon_color: + name: Button 10 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity10_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button10** action*' + selector: + boolean: + entity11: + name: Button 11 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity11_name: + name: Button 11 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity11_icon: + name: Button 11 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity11_icon_color: + name: Button 11 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity11_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button11** action*' + selector: + boolean: + entity12: + name: Button 12 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity12_name: + name: Button 12 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity12_icon: + name: Button 12 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity12_icon_color: + name: Button 12 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity12_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button12** action*' + selector: + boolean: + entity13: + name: Button 13 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity13_name: + name: Button 13 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity13_icon: + name: Button 13 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity13_icon_color: + name: Button 13 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity13_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button13** action*' + selector: + boolean: + entity14: + name: Button 14 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity14_name: + name: Button 14 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity14_icon: + name: Button 14 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity14_icon_color: + name: Button 14 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity14_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button14** action*' + selector: + boolean: + entity15: + name: Button 15 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity15_name: + name: Button 15 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity15_icon: + name: Button 15 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity15_icon_color: + name: Button 15 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity15_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button15** action*' + selector: + boolean: + entity16: + name: Button 16 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity16_name: + name: Button 16 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity16_icon: + name: Button 16 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity16_icon_color: + name: Button 16 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity16_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button16** action*' + selector: + boolean: + ##### Button page 03 ##### + ##### PLACEHOLDER ###################################################################### + placeholder09: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ BUTTON PAGE 03 ✅ ' + default: 'buttonpage03' + selector: + select: + options: + - buttonpage03 + ##### PLACEHOLDER ###################################################################### + entity17: + name: Button 17 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity17_name: + name: Button 17 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity17_icon: + name: Button 17 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity17_icon_color: + name: Button 17 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity17_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button17** action*' + selector: + boolean: + entity18: + name: Button 18 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity18_name: + name: Button 18 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity18_icon: + name: Button 18 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity18_icon_color: + name: Button 18 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity18_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button18** action*' + selector: + boolean: + entity19: + name: Button 19 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity19_name: + name: Button 19 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity19_icon: + name: Button 19 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity19_icon_color: + name: Button 19 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity19_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button19** action*' + selector: + boolean: + entity20: + name: Button 20 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity20_name: + name: Button 20 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity20_icon: + name: Button 20 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity20_icon_color: + name: Button 20 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity20_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button20** action*' + selector: + boolean: + entity21: + name: Button 21 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity21_name: + name: Button 21 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity21_icon: + name: Button 21 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity21_icon_color: + name: Button 21 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity21_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button21** action*' + selector: + boolean: + entity22: + name: Button 22 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity22_name: + name: Button 22 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity22_icon: + name: Button 22 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity22_icon_color: + name: Button 22 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity22_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button22** action*' + selector: + boolean: + entity23: + name: Button 23 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity23_name: + name: Button 23 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity23_icon: + name: Button 23 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity23_icon_color: + name: Button 23 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity23_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button23** action*' + selector: + boolean: + entity24: + name: Button 24 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity24_name: + name: Button 24 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity24_icon: + name: Button 24 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity24_icon_color: + name: Button 24 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity24_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button24** action*' + selector: + boolean: + ##### Button page 04 ##### + ##### PLACEHOLDER ###################################################################### + placeholder10: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ BUTTON PAGE 04 ✅ ' + default: 'buttonpage04' + selector: + select: + options: + - buttonpage04 + ##### PLACEHOLDER ###################################################################### + entity25: + name: Button 25 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity25_name: + name: Button 25 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity25_icon: + name: Button 25 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity25_icon_color: + name: Button 25 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity25_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button25** action*' + selector: + boolean: + entity26: + name: Button 26 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity26_name: + name: Button 26 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity26_icon: + name: Button 26 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity26_icon_color: + name: Button 26 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity26_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button26** action*' + selector: + boolean: + entity27: + name: Button 27 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity27_name: + name: Button 27 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity27_icon: + name: Button 27 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity27_icon_color: + name: Button 27 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity27_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button27** action*' + selector: + boolean: + entity28: + name: Button 28 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity28_name: + name: Button 28 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity28_icon: + name: Button 28 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity28_icon_color: + name: Button 28 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity28_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button28** action*' + selector: + boolean: + entity29: + name: Button 29 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity29_name: + name: Button 29 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity29_icon: + name: Button 29 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity29_icon_color: + name: Button 29 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity29_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button29** action*' + selector: + boolean: + entity30: + name: Button 30 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity30_name: + name: Button 30 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity30_icon: + name: Button 30 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity30_icon_color: + name: Button 30 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity30_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button30** action*' + selector: + boolean: + entity31: + name: Button 31 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity31_name: + name: Button 31 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: + text: {} + entity31_icon: + name: Button 31 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: *icon-selector + entity31_icon_color: + name: Button 31 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity31_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button31** action*' + selector: + boolean: + entity32: + name: Button 32 - ENTITY (Optional) + description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' + default: [] + selector: *button-entity-selector + entity32_name: + name: Button 32 name - LABEL (Optional) + description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' + default: [] + selector: *icon-selector + entity32_icon: + name: Button 32 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' + default: [] + selector: + text: {} + entity32_icon_color: + name: Button 32 - ICON COLOR (Optional) + description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' + default: [0,128,248] #1055 Blue + selector: *color-selector + entity32_confirm: + name: Confirm execution of the button press - TRUE/FALSE (Optional) + default: false + description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button32** action*' + selector: + boolean: - ##### PLACEHOLDER ###################################################################### - placeholder06: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ HARDWARE BUTTONS ✅ ' - default: 'hardwarebuttons' - selector: - select: - options: - - hardwarebuttons - ##### PLACEHOLDER ###################################################################### - - ##### Hardware Buttons - Page Home ##### - hold_delay: - name: Delay for HW-Button hold in seconds - VALUE - description: '* *"SYSTEM" - Time in seconds to detect a hold*' - default: 1.0 - selector: - number: - min: 1.0 - max: 10.0 - step: 1.0 - unit_of_measurement: seconds - relay_1_local_fallback: - name: Activate relay 1 local fallback - TRUE/FALSE (Optional) - default: false - description: '* *"SYSTEM" - activate this to use left button to toggle relay 1 if display is offline* ' - selector: - boolean: - left_button_entity: - name: Left hardware button - ENTITY (Optional) - description: '* *"SYSTEM" - Entity which should be switched*' - default: [] - selector: &hardware-button-selector - entity: - domain: - - light - - switch - - input_boolean - - cover - - automation - - button - - input_button - - scene - - script - - fan - left_button_name: - name: Left hardware button name - LABEL (Optional) - description: '* *Page "HOME" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - left_button_hold_select: - name: Left hardware button hold assignment - VALUE (Optional) - description: '* *"SYSTEM" - select what shold happen on hold*' - default: 'Default' - selector: &hardware-button-hold-selector - select: - options: - - Default - - Custom Action - left_button_hold_custom_action: - name: Left hardware button custom hold action - VALUE (Optional) - description: '*"SYSTEM" - The action(s) to launch on hold**' - default: [] - selector: - action: - left_button_color: - name: Left hardware button - LABEL COLOR (Optional) - description: '* *Page "HOME" - LABEL color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - relay_2_local_fallback: - name: Activate relay 2 local fallback - TRUE/FALSE (Optional) - default: false - description: '* *"SYSTEM" - activate this to use right button to toggle relay 2 if display is offline* ' - selector: - boolean: - right_button_entity: - name: Right hardware button - ENTITY (Optional) - description: '* *"SYSTEM" - Entity which should be switched*' - default: [] - selector: *hardware-button-selector - right_button_name: - name: Right hardware button name - LABEL (Optional) - description: '* *Page "HOME" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - right_button_hold_select: - name: Right button hold assignment - VALUE (Optional) - description: '* *"SYSTEM" - select what shold happen on hold*' - default: 'Default' - selector: *hardware-button-hold-selector - right_button_hold_custom_action: - name: Right button custom hold action - VALUE (Optional) - description: '*"SYSTEM" - The action(s) to launch on hold**' - default: [] - selector: - action: - right_button_color: - name: Right hardware button - LABEL COLOR (Optional) - description: '* *Page "HOME" - LABEL color which should be displayed*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - - ##### PLACEHOLDER ###################################################################### - placeholder07: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ BUTTON PAGE 01 ✅ ' - default: 'buttonpage01' - selector: - select: - options: - - buttonpage01 - ##### PLACEHOLDER ###################################################################### - - ##### BUTTON Page Labels ##### - button_page01_label: - name: Button page 01 name - LABEL (Optional) - description: '* *Page "ButtonPage01" - Label which should be displayed*' - default: [] - selector: - text: {} - - button_page02_label: - name: Button page 02 name - LABEL (Optional) - description: '* *Page "ButtonPage02" - Label which should be displayed*' - default: [] - selector: - text: {} - - button_page03_label: - name: Button page 03 name - LABEL (Optional) - description: '* *Page "ButtonPage03" - Label which should be displayed*' - default: [] - selector: - text: {} - - button_page04_label: - name: Button page 04 name - LABEL (Optional) - description: '* *Page "ButtonPage04" - Label which should be displayed*' - default: [] - selector: - text: {} - - ##### BUTTONS ##### - entity01: - name: Button 01 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: &button-entity-selector - entity: - domain: - - light - - switch - - cover - - input_boolean - - automation - - button - - input_button - - scene - - person - - script - - binary_sensor - - fan - - climate - entity01_name: - name: Button 01 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity01_icon: - name: Button 01 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity01_icon_color: - name: Button 01 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity01_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button01** action*' - selector: - boolean: - entity02: - name: Button 02 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity02_name: - name: Button 02 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity02_icon: - name: Button 02 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity02_icon_color: - name: Button 02 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity02_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button02** action*' - selector: - boolean: - entity03: - name: Button 03 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity03_name: - name: Button 03 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity03_icon: - name: Button 03 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity03_icon_color: - name: Button 03 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity03_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button03** action*' - selector: - boolean: - entity04: - name: Button 04 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity04_name: - name: Button 04 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity04_icon: - name: Button 04 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity04_icon_color: - name: Button 04 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity04_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button04** action*' - selector: - boolean: - entity05: - name: Button 05 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity05_name: - name: Button 05 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity05_icon: - name: Button 05 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity05_icon_color: - name: Button 05 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity05_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button05** action*' - selector: - boolean: - entity06: - name: Button 06 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity06_name: - name: Button 06 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity06_icon: - name: Button 06 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity06_icon_color: - name: Button 06 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity06_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button06** action*' - selector: - boolean: - entity07: - name: Button 07 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity07_name: - name: Button 07 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity07_icon: - name: Button 07 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity07_icon_color: - name: Button 07 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity07_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button07** action*' - selector: - boolean: - entity08: - name: Button 08 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE01" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity08_name: - name: Button 08 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE01" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity08_icon: - name: Button 08 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity08_icon_color: - name: Button 08 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE01" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity08_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE01" - Ask for confirmation to execute **Button08** action*' - selector: - boolean: - ##### PLACEHOLDER ###################################################################### - placeholder08: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ BUTTON PAGE 02 ✅ ' - default: 'buttonpage02' - selector: - select: - options: - - buttonpage02 - ##### PLACEHOLDER ###################################################################### - entity09: - name: Button 09 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity09_name: - name: Button 09 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity09_icon: - name: Button 09 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity09_icon_color: - name: Button 09 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity09_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button09** action*' - selector: - boolean: - entity10: - name: Button 10 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity10_name: - name: Button 10 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity10_icon: - name: Button 10 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity10_icon_color: - name: Button 10 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity10_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button10** action*' - selector: - boolean: - entity11: - name: Button 11 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity11_name: - name: Button 11 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity11_icon: - name: Button 11 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity11_icon_color: - name: Button 11 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity11_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button11** action*' - selector: - boolean: - entity12: - name: Button 12 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity12_name: - name: Button 12 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity12_icon: - name: Button 12 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity12_icon_color: - name: Button 12 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity12_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button12** action*' - selector: - boolean: - entity13: - name: Button 13 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity13_name: - name: Button 13 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity13_icon: - name: Button 13 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity13_icon_color: - name: Button 13 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity13_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button13** action*' - selector: - boolean: - entity14: - name: Button 14 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity14_name: - name: Button 14 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity14_icon: - name: Button 14 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity14_icon_color: - name: Button 14 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity14_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button14** action*' - selector: - boolean: - entity15: - name: Button 15 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity15_name: - name: Button 15 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity15_icon: - name: Button 15 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity15_icon_color: - name: Button 15 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity15_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button15** action*' - selector: - boolean: - entity16: - name: Button 16 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE02" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity16_name: - name: Button 16 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE02" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity16_icon: - name: Button 16 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity16_icon_color: - name: Button 16 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE02" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity16_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE02" - Ask for confirmation to execute **Button16** action*' - selector: - boolean: - ##### PLACEHOLDER ###################################################################### - placeholder09: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ BUTTON PAGE 03 ✅ ' - default: 'buttonpage03' - selector: - select: - options: - - buttonpage03 - ##### PLACEHOLDER ###################################################################### - entity17: - name: Button 17 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity17_name: - name: Button 17 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity17_icon: - name: Button 17 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity17_icon_color: - name: Button 17 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity17_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button17** action*' - selector: - boolean: - entity18: - name: Button 18 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity18_name: - name: Button 18 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity18_icon: - name: Button 18 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity18_icon_color: - name: Button 18 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity18_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button18** action*' - selector: - boolean: - entity19: - name: Button 19 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity19_name: - name: Button 19 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity19_icon: - name: Button 19 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity19_icon_color: - name: Button 19 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity19_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button19** action*' - selector: - boolean: - entity20: - name: Button 20 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity20_name: - name: Button 20 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity20_icon: - name: Button 20 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity20_icon_color: - name: Button 20 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity20_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button20** action*' - selector: - boolean: - entity21: - name: Button 21 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity21_name: - name: Button 21 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity21_icon: - name: Button 21 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity21_icon_color: - name: Button 21 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity21_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button21** action*' - selector: - boolean: - entity22: - name: Button 22 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity22_name: - name: Button 22 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity22_icon: - name: Button 22 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity22_icon_color: - name: Button 22 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity22_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button22** action*' - selector: - boolean: - entity23: - name: Button 23 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity23_name: - name: Button 23 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity23_icon: - name: Button 23 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity23_icon_color: - name: Button 23 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity23_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button23** action*' - selector: - boolean: - entity24: - name: Button 24 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE03" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity24_name: - name: Button 24 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE03" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity24_icon: - name: Button 24 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity24_icon_color: - name: Button 24 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE03" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity24_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE03" - Ask for confirmation to execute **Button24** action*' - selector: - boolean: - ##### PLACEHOLDER ###################################################################### - placeholder10: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ BUTTON PAGE 04 ✅ ' - default: 'buttonpage04' - selector: - select: - options: - - buttonpage04 - ##### PLACEHOLDER ###################################################################### - entity25: - name: Button 25 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity25_name: - name: Button 25 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity25_icon: - name: Button 25 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity25_icon_color: - name: Button 25 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity25_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button25** action*' - selector: - boolean: - entity26: - name: Button 26 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity26_name: - name: Button 26 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity26_icon: - name: Button 26 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity26_icon_color: - name: Button 26 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity26_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button26** action*' - selector: - boolean: - entity27: - name: Button 27 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity27_name: - name: Button 27 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity27_icon: - name: Button 27 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity27_icon_color: - name: Button 27 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity27_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button27** action*' - selector: - boolean: - entity28: - name: Button 28 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity28_name: - name: Button 28 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity28_icon: - name: Button 28 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity28_icon_color: - name: Button 28 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity28_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button28** action*' - selector: - boolean: - entity29: - name: Button 29 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity29_name: - name: Button 29 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity29_icon: - name: Button 29 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity29_icon_color: - name: Button 29 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity29_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button29** action*' - selector: - boolean: - entity30: - name: Button 30 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity30_name: - name: Button 30 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity30_icon: - name: Button 30 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity30_icon_color: - name: Button 30 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity30_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button30** action*' - selector: - boolean: - entity31: - name: Button 31 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity31_name: - name: Button 31 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: - text: {} - entity31_icon: - name: Button 31 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: *icon-selector - entity31_icon_color: - name: Button 31 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity31_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button31** action*' - selector: - boolean: - entity32: - name: Button 32 - ENTITY (Optional) - description: '* *Page "BUTTONPAGE04" - Entity which should be switched (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan | climate)*' - default: [] - selector: *button-entity-selector - entity32_name: - name: Button 32 name - LABEL (Optional) - description: '* *Page "BUTTONPAGE04" - Label which should be displayed (10 characters are supported)*' - default: [] - selector: *icon-selector - entity32_icon: - name: Button 32 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (Default - an icon matching the entity will be set automatically)*' - default: [] - selector: - text: {} - entity32_icon_color: - name: Button 32 - ICON COLOR (Optional) - description: '* *Page "BUTTONPAGE04" - Icon color which should be displayed when button is on*' - default: [0,128,248] #1055 Blue - selector: *color-selector - entity32_confirm: - name: Confirm execution of the button press - TRUE/FALSE (Optional) - default: false - description: '* *Page "BUTTONPAGE04" - Ask for confirmation to execute **Button32** action*' - selector: - boolean: - - ##### PLACEHOLDER ###################################################################### - placeholder11: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ ENTITY PAGE SETTINGS ✅ ' - default: 'entitypage' - selector: - select: - options: - - entitypage - ##### PLACEHOLDER ###################################################################### - - ##### ENTITY Pages Config ##### - entitypages_enabled: - name: Activate entity page - TRUE/FALSE (Optional) - default: false - description: '* *"SYSTEM" - activate entity page and entity page Button on the home page* ' - selector: - boolean: - home_button06_icon: - name: Entity page - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #EDCF) *' - default:  #EDCF - selector: *icon-selector - home_button06_icon_color: - name: Entity page - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [200,204,200] #52857 Grey super light - selector: *color-selector - ##### ENTITY Page Labels ##### - ##### PLACEHOLDER ###################################################################### - placeholder12: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ ENTITY PAGE 01 ✅ ' - default: 'entitypage01' - selector: - select: - options: - - entitypage01 - ##### PLACEHOLDER ###################################################################### - entity_page01_label: - name: Entity page 01 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed*' - default: [] - selector: - text: {} - entity_page02_label: - name: Entity page 02 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed*' - default: [] - selector: - text: {} - entity_page03_label: - name: Entity page 03 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed*' - default: [] - selector: - text: {} - entity_page04_label: - name: Entity page 04 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed*' - default: [] - selector: - text: {} - - ##### ENTITIES ##### - entities_entity01: - name: Entity 01 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity01_name: - name: Entity 01 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity01_icon: - name: Entity 01 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity02: - name: Entity 02 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity02_name: - name: Entity 02 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity02_icon: - name: Entity 02 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity03: - name: Entity 03 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity03_name: - name: Entity 03 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity03_icon: - name: Entity 03 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity04: - name: Entity 04 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity04_name: - name: Entity 04 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity04_icon: - name: Entity 04 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity05: - name: Entity 05 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity05_name: - name: Entity 05 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity05_icon: - name: Entity 05 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity06: - name: Entity 06 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity06_name: - name: Entity 06 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity06_icon: - name: Entity 06 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity07: - name: Entity 07 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity07_name: - name: Entity 07 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity07_icon: - name: Entity 07 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity08: - name: Entity 08 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity08_name: - name: Entity 08 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity08_icon: - name: Entity 08 - ICON (Optional) - description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - ##### PLACEHOLDER ###################################################################### - placeholder13: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ ENTITY PAGE 02 ✅ ' - default: 'entitypage02' - selector: - select: - options: - - entitypage02 - ##### PLACEHOLDER ###################################################################### - entities_entity09: - name: Entity 09 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity09_name: - name: Entity 09 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity09_icon: - name: Entity 09 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity10: - name: Entity 10 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity10_name: - name: Entity 10 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity10_icon: - name: Entity 10 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity11: - name: Entity 11 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity11_name: - name: Entity 11 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity11_icon: - name: Entity 11 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity12: - name: Entity 12 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity12_name: - name: Entity 12 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity12_icon: - name: Entity 12 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity13: - name: Entity 13 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity13_name: - name: Entity 13 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity13_icon: - name: Entity 13 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity14: - name: Entity 14 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity14_name: - name: Entity 14 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity14_icon: - name: Entity 14 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity15: - name: Entity 15 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity15_name: - name: Entity 15 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity15_icon: - name: Entity 15 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity16: - name: Entity 16 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity16_name: - name: Entity 16 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity16_icon: - name: Entity 16 - ICON (Optional) - description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - ##### PLACEHOLDER ###################################################################### - placeholder14: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ ENTITY PAGE 03 ✅ ' - default: 'entitypage03' - selector: - select: - options: - - entitypage03 - ##### PLACEHOLDER ###################################################################### - entities_entity17: - name: Entity 17 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity17_name: - name: Entity 17 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity17_icon: - name: Entity 17 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity18: - name: Entity 18 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity18_name: - name: Entity 18 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity18_icon: - name: Entity 18 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity19: - name: Entity 19 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity19_name: - name: Entity 19 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity19_icon: - name: Entity 19 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity20: - name: Entity 20 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity20_name: - name: Entity 20 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity20_icon: - name: Entity 20 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity21: - name: Entity 21 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity21_name: - name: Entity 21 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity21_icon: - name: Entity 21 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity22: - name: Entity 22 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity22_name: - name: Entity 22 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity22_icon: - name: Entity 22 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity23: - name: Entity 23 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity23_name: - name: Entity 23 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity23_icon: - name: Entity 23 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity24: - name: Entity 24 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity24_name: - name: Entity 24 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity24_icon: - name: Entity 24 - ICON (Optional) - description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - ##### PLACEHOLDER ###################################################################### - placeholder15: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ ENTITY PAGE 04 ✅ ' - default: 'entitypage04' - selector: - select: - options: - - entitypage04 - ##### PLACEHOLDER ###################################################################### - entities_entity25: - name: Entity 25 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity25_name: - name: Entity 25 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity25_icon: - name: Entity 25 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity26: - name: Entity 26 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity26_name: - name: Entity 26 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity26_icon: - name: Entity 26 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity27: - name: Entity 27 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity27_name: - name: Entity 27 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity27_icon: - name: Entity 27 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity28: - name: Entity 28 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity28_name: - name: Entity 28 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity28_icon: - name: Entity 28 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity29: - name: Entity 29 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity29_name: - name: Entity 29 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity29_icon: - name: Entity 29 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity30: - name: Entity 30 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity30_name: - name: Entity 30 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity30_icon: - name: Entity 30 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity31: - name: Entity 31 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity31_name: - name: Entity 31 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity31_icon: - name: Entity 31 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - entities_entity32: - name: Entity 32 - ENTITY (Optional) - description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' - default: [] - selector: - entity: - entities_entity32_name: - name: Entity 32 name - LABEL (Optional) - description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' - default: [] - selector: - text: {} - entities_entity32_icon: - name: Entity 32 - ICON (Optional) - description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' - default: [] - selector: *icon-selector - - ##### PLACEHOLDER ###################################################################### - placeholder16: - name: 'Is only a placeholder without function for a better overview' - description: '# ✅ CUSTOM CONFIGURATION ✅ ' - default: 'configuration' - selector: - select: - options: - - configuration - ##### PLACEHOLDER ###################################################################### + ##### Entity pages ##### + ##### Entity pages - Config ##### + ##### PLACEHOLDER ###################################################################### + placeholder11: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ ENTITY PAGE SETTINGS ✅ ' + default: 'entitypage' + selector: + select: + options: + - entitypage + ##### PLACEHOLDER ###################################################################### + entitypages_enabled: + name: Activate entity page - TRUE/FALSE (Optional) + default: false + description: '* *"SYSTEM" - activate entity page and entity page Button on the home page* ' + selector: + boolean: + home_button06_icon: + name: Entity page - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #EDCF) *' + default:  #EDCF + selector: *icon-selector + home_button06_icon_color: + name: Entity page - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [200,204,200] #52857 Grey super light + selector: *color-selector + ##### Entity pages - Labels ##### + ##### PLACEHOLDER ###################################################################### + placeholder12: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ ENTITY PAGE 01 ✅ ' + default: 'entitypage01' + selector: + select: + options: + - entitypage01 + ##### PLACEHOLDER ###################################################################### + entity_page01_label: + name: Entity page 01 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed*' + default: [] + selector: + text: {} + entity_page02_label: + name: Entity page 02 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed*' + default: [] + selector: + text: {} + entity_page03_label: + name: Entity page 03 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed*' + default: [] + selector: + text: {} + entity_page04_label: + name: Entity page 04 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed*' + default: [] + selector: + text: {} + ##### Entity page 01 - Entities ##### + entities_entity01: + name: Entity 01 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity01_name: + name: Entity 01 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity01_icon: + name: Entity 01 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity02: + name: Entity 02 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity02_name: + name: Entity 02 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity02_icon: + name: Entity 02 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity03: + name: Entity 03 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity03_name: + name: Entity 03 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity03_icon: + name: Entity 03 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity04: + name: Entity 04 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity04_name: + name: Entity 04 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity04_icon: + name: Entity 04 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity05: + name: Entity 05 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity05_name: + name: Entity 05 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity05_icon: + name: Entity 05 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity06: + name: Entity 06 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity06_name: + name: Entity 06 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity06_icon: + name: Entity 06 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity07: + name: Entity 07 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity07_name: + name: Entity 07 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity07_icon: + name: Entity 07 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity08: + name: Entity 08 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE01" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity08_name: + name: Entity 08 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE01" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity08_icon: + name: Entity 08 - ICON (Optional) + description: '* *Page "BUTTONPAGE01" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + ##### Entity page 02 - Entities ##### + ##### PLACEHOLDER ###################################################################### + placeholder13: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ ENTITY PAGE 02 ✅ ' + default: 'entitypage02' + selector: + select: + options: + - entitypage02 + ##### PLACEHOLDER ###################################################################### + entities_entity09: + name: Entity 09 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity09_name: + name: Entity 09 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity09_icon: + name: Entity 09 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity10: + name: Entity 10 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity10_name: + name: Entity 10 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity10_icon: + name: Entity 10 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity11: + name: Entity 11 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity11_name: + name: Entity 11 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity11_icon: + name: Entity 11 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity12: + name: Entity 12 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity12_name: + name: Entity 12 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity12_icon: + name: Entity 12 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity13: + name: Entity 13 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity13_name: + name: Entity 13 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity13_icon: + name: Entity 13 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity14: + name: Entity 14 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity14_name: + name: Entity 14 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity14_icon: + name: Entity 14 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity15: + name: Entity 15 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity15_name: + name: Entity 15 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity15_icon: + name: Entity 15 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity16: + name: Entity 16 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE02" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity16_name: + name: Entity 16 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE02" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity16_icon: + name: Entity 16 - ICON (Optional) + description: '* *Page "BUTTONPAGE02" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + ##### Entity page 03 - Entities ##### + ##### PLACEHOLDER ###################################################################### + placeholder14: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ ENTITY PAGE 03 ✅ ' + default: 'entitypage03' + selector: + select: + options: + - entitypage03 + ##### PLACEHOLDER ###################################################################### + entities_entity17: + name: Entity 17 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity17_name: + name: Entity 17 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity17_icon: + name: Entity 17 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity18: + name: Entity 18 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity18_name: + name: Entity 18 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity18_icon: + name: Entity 18 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity19: + name: Entity 19 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity19_name: + name: Entity 19 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity19_icon: + name: Entity 19 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity20: + name: Entity 20 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity20_name: + name: Entity 20 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity20_icon: + name: Entity 20 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity21: + name: Entity 21 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity21_name: + name: Entity 21 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity21_icon: + name: Entity 21 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity22: + name: Entity 22 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity22_name: + name: Entity 22 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity22_icon: + name: Entity 22 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity23: + name: Entity 23 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity23_name: + name: Entity 23 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity23_icon: + name: Entity 23 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity24: + name: Entity 24 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE03" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity24_name: + name: Entity 24 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE03" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity24_icon: + name: Entity 24 - ICON (Optional) + description: '* *Page "BUTTONPAGE03" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + ##### Entity page 04 - Entities ##### + ##### PLACEHOLDER ###################################################################### + placeholder15: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ ENTITY PAGE 04 ✅ ' + default: 'entitypage04' + selector: + select: + options: + - entitypage04 + ##### PLACEHOLDER ###################################################################### + entities_entity25: + name: Entity 25 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity25_name: + name: Entity 25 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity25_icon: + name: Entity 25 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity26: + name: Entity 26 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity26_name: + name: Entity 26 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity26_icon: + name: Entity 26 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity27: + name: Entity 27 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity27_name: + name: Entity 27 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity27_icon: + name: Entity 27 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity28: + name: Entity 28 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity28_name: + name: Entity 28 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity28_icon: + name: Entity 28 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity29: + name: Entity 29 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity29_name: + name: Entity 29 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity29_icon: + name: Entity 29 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity30: + name: Entity 30 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity30_name: + name: Entity 30 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity30_icon: + name: Entity 30 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity31: + name: Entity 31 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity31_name: + name: Entity 31 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity31_icon: + name: Entity 31 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector + entities_entity32: + name: Entity 32 - ENTITY (Optional) + description: '* *Page "ENTITYPAGE04" - entity which should be displayed*' + default: [] + selector: + entity: + entities_entity32_name: + name: Entity 32 name - LABEL (Optional) + description: '* *Page "ENTITYPAGE04" - Label which should be displayed (replaces the **"friendly_name"** of the entity)*' + default: [] + selector: + text: {} + entities_entity32_icon: + name: Entity 32 - ICON (Optional) + description: '* *Page "BUTTONPAGE04" - Icon which should be displayed (if not set, no icon is shown)*' + default: [] + selector: *icon-selector ##### General Custom Design ##### - home_button04_icon: - name: Notification - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E1ED) *' - default:  #E1ED - selector: *icon-selector - home_button04_icon_color01: - name: Notification read - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [200,204,200] #52857 Grey super light #Grey super light - selector: *color-selector - home_button04_icon_color02: - name: Notification unread - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [248,0,0] #63488 Red - selector: *color-selector - relay01_icon: - name: Relay 01 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E3A5) *' - default: îŽĨ #E3A5 - selector: *icon-selector - relay01_icon_color: - name: Relay 01 - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - relay02_icon: - name: Relay 02 - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E3A8) *' - default:  #E3A8 - selector: *icon-selector - relay02_icon_color: - name: Relay - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - thermostat_icon: - name: Thermostat - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E50E) *' - default:  #E50E - selector: *icon-selector - heat_icon: - name: Thermostat - ICON (Optional) - description: '* *Page "HOME" - Icon which should be displayed (Default #E50F) *' - default:  #E50F - selector: *icon-selector - thermostat_icon_color: - name: Thermostat / Heat - ICON COLOR (Optional) - description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' - default: [128,128,128] #33808 Grey light - selector: *color-selector - time_label_color: - name: Time - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed (default color is set)*' - default: [255,255,255] #65535 White - selector: *color-selector - date_label_color: - name: Date - LABEL COLOR (Optional) - description: '* *Page "HOME" - Label color which should be displayed (default color is set)*' - default: [255,255,255] #65535 White - selector: *color-selector + ##### PLACEHOLDER ###################################################################### + placeholder16: + name: 'Is only a placeholder without function for a better overview' + description: '# ✅ CUSTOM CONFIGURATION ✅ ' + default: 'configuration' + selector: + select: + options: + - configuration + ##### PLACEHOLDER ###################################################################### + home_button04_icon: + name: Notification - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E1ED) *' + default:  #E1ED + selector: *icon-selector + home_button04_icon_color01: + name: Notification read - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [200,204,200] #52857 Grey super light #Grey super light + selector: *color-selector + home_button04_icon_color02: + name: Notification unread - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [248,0,0] #63488 Red + selector: *color-selector + relay01_icon: + name: Relay 01 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E3A5) *' + default: îŽĨ #E3A5 + selector: *icon-selector + relay01_icon_color: + name: Relay 01 - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + relay02_icon: + name: Relay 02 - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E3A8) *' + default:  #E3A8 + selector: *icon-selector + relay02_icon_color: + name: Relay - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + thermostat_icon: + name: Thermostat - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E50E) *' + default:  #E50E + selector: *icon-selector + heat_icon: + name: Thermostat - ICON (Optional) + description: '* *Page "HOME" - Icon which should be displayed (Default #E50F) *' + default:  #E50F + selector: *icon-selector + thermostat_icon_color: + name: Thermostat / Heat - ICON COLOR (Optional) + description: '* *Page "HOME" - Icon color which should be displayed (default color is set)*' + default: [128,128,128] #33808 Grey light + selector: *color-selector + time_label_color: + name: Time - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed (default color is set)*' + default: [255,255,255] #65535 White + selector: *color-selector + date_label_color: + name: Date - LABEL COLOR (Optional) + description: '* *Page "HOME" - Label color which should be displayed (default color is set)*' + default: [255,255,255] #65535 White + selector: *color-selector -###### Muss noch Raus ############################################################################################################################################################################### - hotwatertemp: - name: Hot Water Temperature Sensor (Optional) - description: '* *Choose your hot water sensor*' - default: [] - selector: - entity: - domain: - - sensor - tft_path: - name: Nextion TFT File Folder (Optional) - description: '* *TFT Path where the Nextion TFT File is stored. Attention! The **"Folder-Watcher"** must also be configured in the configuration.yaml. **Only necessary for manual upload of TFT file in ESPHome Advaced mode.** See HowTo*' - default: [] - selector: - text: {} - sync_value_ha: - name: Synchronization of all values (Optional) - description: '* *Synchronization of values between HA and NSPanel for Lightsetting and Coversetting Page -> Maybe causes number jumps*' - default: 'select_no' - selector: &sync-selector-bool - select: - options: - - label: 'No' - value: select_no - - label: 'Yes' - value: select_yes - sync_slider_ha: - name: Synchronization of all Sliders (Optional) - description: '* *Synchronization of sliders between HA and NSPanel for Lightsetting and Coversetting Page -> Maybe causes flickering on the Slider*' - default: 'select_no' - selector: *sync-selector-bool - - -mode: parallel -max: 5000 -trace: - stored_traces: 10 + ###### Muss noch Raus ############################################################################################################################################################################### + hotwatertemp: + name: Hot Water Temperature Sensor (Optional) + description: '* *Choose your hot water sensor*' + default: [] + selector: + entity: + domain: + - sensor + tft_path: + name: Nextion TFT File Folder (Optional) + description: '* *TFT Path where the Nextion TFT File is stored. Attention! The **"Folder-Watcher"** must also be configured in the configuration.yaml. **Only necessary for manual upload of TFT file in ESPHome Advaced mode.** See HowTo*' + default: [] + selector: + text: {} + sync_value_ha: + name: Synchronization of all values (Optional) + description: '* *Synchronization of values between HA and NSPanel for Lightsetting and Coversetting Page -> Maybe causes number jumps*' + default: 'select_no' + selector: &sync-selector-bool + select: + options: + - label: 'No' + value: select_no + - label: 'Yes' + value: select_yes + sync_slider_ha: + name: Synchronization of all Sliders (Optional) + description: '* *Synchronization of sliders between HA and NSPanel for Lightsetting and Coversetting Page -> Maybe causes flickering on the Slider*' + default: 'select_no' + selector: *sync-selector-bool ############################################################# ##### CLOSE - INPUT ##### ############################################################# +mode: parallel +max: 5000 +trace: + stored_traces: 10 ############################################################# ##### START - Variables ##### @@ -2356,28 +2355,111 @@ trigger_variables: variables: ##### GENERAL ##### - blueprint_version: "3.2.2" + blueprint_version: "3.2.3DEV" language: !input "language" - date_format: !input "date_format" time_format: !input "time_format" time: "{{ as_timestamp(now()) | timestamp_custom(time_format) }}" meridiem: "{{ as_timestamp(now()) | timestamp_custom('%p') if time_format == '%-I:%M' else '' }}" + sun_is_up: "{{ is_state('sun.sun', 'above_horizon') }}" notification_sound: "switch.{{ nspanel_name }}_notification_sound" confirmation_message: "switch.{{ nspanel_name }}_confirmation_message" ##### Nextion dict #### nextion: + colors: + blue: "1055" # rgb(0,128,248) + grey_dark: "10597" # rgb(40,44,40) + grey_light: "33808" # rgb(128,128,128) + grey_super_light: "52857" # rgb(200,204,200) + red: "63488" # rgb(248,0,0) + white: "65535" # rgb(255,255,255) + yellow: "65472" # rgb(248,248,0) + commands: + text_printf: "esphome.{{ nspanel_name }}_send_command_text_printf" + value: "esphome.{{ nspanel_name }}_send_command_value" + printf: "esphome.{{ nspanel_name }}_send_command_printf" + font_color: "esphome.{{ nspanel_name }}_send_command_font_color" + background_color: "esphome.{{ nspanel_name }}_send_command_background_color" + thermostat_cycle: "esphome.{{ nspanel_name }}_send_thermostat_cycle_state" + notification_show: "esphome.{{ nspanel_name }}_notification_show" + notification_clear: "esphome.{{ nspanel_name }}_notification_clear" + play_rtttl: "esphome.{{ nspanel_name }}_play_rtttl" + set_settings_entity: "esphome.{{ nspanel_name }}_set_settings_entity" + show_all: "esphome.{{ nspanel_name }}_send_command_show_all" + tft_upload: "esphome.{{ nspanel_name }}_upload_tft" + set_button: "esphome.{{ nspanel_name }}_set_button" icons: + battery: "\U0000F2A1" #F2A1 + blank: "\U0000FFFF" #blank macbook bug + buttons: + automation: "\U0000F6FC" #F6FC + binary_sensor: "\U0000E7C0" #E7C0 + button: "\U0000ED76" #ED76 + climate: "\U0000E392" #E392 + cover: "\U0000E0AB" #E0AB + fan: "\U0000E20F" #E20F + input_boolean: "\U0000EA19" #EA19 + input_button: "\U0000F2A7" #F2A7 + light: "\U0000E334" #E334 + person: "\U0000E003" #E003 + scene: "\U0000EE0B" #EE0B + script: "\U0000F45D" #F45D + switch: "\U0000E97D" #E97D + unknown: "\U00000E27" #E027 weather: lightning: "\U0000E592" #E592 protect: "\U0000F05C" #F05C - rain: "\U0000E595" #E595 + rain: "\U0000E595" #E595 sun: "\U0000E5A7" #E5A7 - wind: "\U0000E59C" #E59C + wind: "\U0000E59C" #E59C + pages: + home: "home" + weatherpages: + - "weather01" + - "weather02" + - "weather03" + - "weather04" + - "weather05" + climate: "climate" + settings: "settings" + boot: "boot" + screensaver: "screensaver" + light: "lightsettings" + cover: "coversettings" + buttonpages: + - "buttonpage01" + - "buttonpage02" + - "buttonpage03" + - "buttonpage04" + notification: "notification" + qrcode: "qrcode" + entitypages: + - "entitypage01" + - "entitypage02" + - "entitypage03" + - "entitypage04" + current: "{{ states(current_page) | default('unavailable') if current_page is string else 'unavailable' }}" pics: + hvac: + button: + blank: "79" + 'off': "80" + 'on': "81" + unknown: "79" + hardware: + button: + "off": "77" + "on": "78" + button: + 'off': "101" + 'on': "102" + heating: + button: + "off": "82" + "on": "83" weather: - sunny: "{{ '2' if is_state('sun.sun', 'above_horizon') else '15'}}" #some weather providers returns 'sunny' for 'clear-night' + sunny: "{{ '2' if sun_is_up else '15'}}" #some weather providers returns 'sunny' for 'clear-night' cloudy: "3" rainy: "4" pouring: "5" @@ -2387,636 +2469,18 @@ variables: fog: "8" windy: "9" windy_variant: "9" + windy-variant: "9" lightning: "10" - partlycloudy: "{{ '11' if is_state('sun.sun', 'above_horizon') else '12'}}" - lightning_rainy: "{{ '13' if is_state('sun.sun', 'above_horizon') else '14'}}" - execptional: "{{ '13' if is_state('sun.sun', 'above_horizon') else '14'}}" + partlycloudy: "{{ '11' if sun_is_up else '12'}}" + lightning_rainy: "{{ '13' if sun_is_up else '14'}}" + execptional: "{{ '13' if sun_is_up else '14'}}" clear_night: "15" - unknown: "" - unavailable: "" - - ##### WEATHER #### - weather_entity: !input "weather_entity" # used only during the creation of weather in variables - weather: - type: !input "weather" - entity: !input "weather_entity" - name: '{{ weather_entity | replace("weather.","") }}' # used only during the creation of accuweather in variables - units: - hours_of_sun: "{{ state_attr(weather_entity, 'hours_of_sun_unit') if state_attr(weather_entity, 'hours_of_sun_unit') else 'h' }}" - precipitation: "{{ state_attr(weather_entity, 'precipitation_unit') if state_attr(weather_entity, 'precipitation_unit') else 'mm' }}" - precipitation_probability: "{{ state_attr(weather_entity, 'precipitation_probability_unit') if state_attr(weather_entity, 'precipitation_probability_unit') else '%' }}" - pressure: "{{ state_attr(weather_entity, 'temperature_unit') if state_attr(weather_entity, 'pressure_unit') }}" - temperature: "{{ state_attr(weather_entity, 'temperature_unit') if state_attr(weather_entity, 'temperature_unit') else '°' }}" - thunderstorm_probability: "{{ state_attr(weather_entity, 'thunderstorm_probability_unit') if state_attr(weather_entity, 'thunderstorm_probability_unit') else '%' }}" - uv_index: "{{ state_attr(weather_entity, 'uv_index_unit') if state_attr(weather_entity, 'uv_index_unit') }}" - visibility: "{{ state_attr(weather_entity, 'visibility_unit') if state_attr(weather_entity, 'visibility_unit') }}" - wind_speed: "{{ state_attr(weather_entity, 'wind_speed_unit') if state_attr(weather_entity, 'wind_speed_unit') }}" - - ##### PUSH TO NEXTION DISPLAY ##### - command_text_printf: "esphome.{{ nspanel_name }}_send_command_text_printf" - command_value: "esphome.{{ nspanel_name }}_send_command_value" - command_printf: "esphome.{{ nspanel_name }}_send_command_printf" - command_font_color: "esphome.{{ nspanel_name }}_send_command_font_color" - command_background_color: "esphome.{{ nspanel_name }}_send_command_background_color" - command_thermostat_cycle: "esphome.{{ nspanel_name }}_send_thermostat_cycle_state" - command_notification_show: "esphome.{{ nspanel_name }}_notification_show" - command_notification_clear: "esphome.{{ nspanel_name }}_notification_clear" - command_play_rtttl: "esphome.{{ nspanel_name }}_play_rtttl" - command_set_settings_entity: "esphome.{{ nspanel_name }}_set_settings_entity" - command_show_all: "esphome.{{ nspanel_name }}_send_command_show_all" - command_set_button: "esphome.{{ nspanel_name }}_set_button" - - ###### SYNC SETTINGS ##### - delay_boot: !input "delay" - delay_value: !input "delay" - delay_jump_page: !input "delay" - sync_slider_ha: !input "sync_slider_ha" - sync_value_ha: !input "sync_value_ha" - climate_optimistic: !input "climate_optimistic" - - ##### TFT UPLOAD ##### - tft_upload: "esphome.{{ nspanel_name }}_upload_tft" - tft_path: !input "tft_path" - - ##### GENERAL ENTITYS ##### - hotwatertemp: !input "hotwatertemp" - outdoortemp: !input "outdoortemp" - indoortemp: !input "indoortemp" - climate: !input "climate" - qrcode_label: !input "qrcode_label" - qrcode_value: !input "qrcode_value" - qrcode_enabled: !input "qrcode_enabled" - relay_1_local_fallback: !input "relay_1_local_fallback" - relay_2_local_fallback: !input "relay_2_local_fallback" - - #### HARDWARE BUTTONS ##### - left_button_entity: !input "left_button_entity" - left_button_name: !input "left_button_name" - right_button_entity: !input "right_button_entity" - right_button_name: !input "right_button_name" - left_button_hold_select: !input "left_button_hold_select" - right_button_hold_select: !input "right_button_hold_select" - - ##### NEXTION PIC MAPPING ##### - - # button_light_off: "62" - # button_light_on: "63" - # button_switch_off: "64" - # button_switch_on: "65" - # button_cover_off: "66" - # button_cover_on: "67" - # button_automation_off: "107" - # button_automation_on: "108" - # button_button_off: "109" - # button_button_on: "110" - # button_scene_off: "113" - # button_scene_on: "114" - # button_person_off: "111" - # button_person_on: "112" - # button_script_off: "107" - # button_script_on: "108" - # button_binary_sensor_off: '107' - # button_binary_sensor_on: '108' - # button_fan_off: "121" - # button_fan_on: "122" - # button_climate_off: "121" - # button_climate_on: "122" + clear-night: "15" + unknown: '' + unavailable: '' - # cover_pic_closed: "78" - # cover_pic_open: "79" - # light_pic_off: "96" - # light_pic_on: "97" - # # hotwater_pic_off: "60" - # hotwater_pic_on: "61" - # flame_pic_on: "57" - # # flame_pic_off: "60" - # top_menu_blank: "60" - - hotw_bt_blank: "79" - hotw_bt_off: "80" - hotw_bt_on: "81" - - - -##### CHANGE ME START ########################################################################################################## - ###### GENERAL - NEXTION COLOR MAPPING ##### - color_01: "65535" #White rgb(255,255,255) - color_02: "10597" #Grey dark rgb(40,44,40) - color_03: "33808" #Grey light rgb(128,128,128) - color_04: "1055" #Blue rgb(0,128,248) - color_05: "63488" #Red rgb(248,0,0) - color_06: "52857" #Grey super light rgb(200,204,200) - color_07: "65472" #Yellow rgb(248,248,0) - - ###### "GENERAL" NEXTION FONT ICON MAPPING ##### - blank_icon: "\U0000FFFF" #blank macbook bug - battery_icon: "\U0000F2A1" #F2A1 - battery_icon_color: "52857" #Grey super light - - ###### "BUTTON" NEXTION FONT ICON MAPPING ##### - button_icon_unknown: "\U00000E27" #E027 - button_icon_light: "\U0000E334" #E334 - button_icon_switch: "\U0000E97D" #E97D - button_icon_input_boolan: "\U0000EA19" #EA19 - button_icon_cover: "\U0000E0AB" #E0AB - button_icon_automation: "\U0000F6FC" #F6FC - button_icon_button: "\U0000ED76" #ED76 - button_icon_input_button: "\U0000F2A7" #F2A7 - button_icon_scene: "\U0000EE0B" #EE0B - button_icon_script: "\U0000F45D" #F45D - button_icon_person: "\U0000E003" #E003 - button_icon_binary_sensor: "\U0000E7C0" #E7C0 - button_icon_fan: "\U0000E20F" #E20F - button_icon_climate: "\U0000E392" #E392 - -##### CHANGE ME END ########################################################################################################## - - - - ### Home Page - Feature Buttons ### - home_button01_icon: "" - home_button01_icon_color01: "" - home_button02_icon: "" - home_button02_icon_color02: "" - home_button03_icon: "" - home_button03_icon_color03: "" - home_button04_icon: !input "home_button04_icon" #E1ED - home_button04_icon_color01_value: !input "home_button04_icon_color01" - home_button04_icon_color01: '{% set rgb = home_button04_icon_color01_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_button04_icon_color02_value: !input "home_button04_icon_color02" - home_button04_icon_color02: '{% set rgb = home_button04_icon_color02_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_button05_icon: !input "home_button05_icon" #E432 - home_button05_icon_color_value: !input "home_button05_icon_color" - home_button05_icon_color: '{% set rgb = home_button05_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_button06_icon: !input "home_button06_icon" #EDCF - home_button06_icon_color_value: !input "home_button06_icon_color" - home_button06_icon_color: '{% set rgb = home_button06_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_button07_icon: "" - home_button07_icon_color: "" - - ### Home Page - Value 01 - 03 - home_value01: !input "home_value01" - home_value01_icon: !input "home_value01_icon" - home_value01_icon_color_value: !input "home_value01_icon_color" - home_value01_icon_color: '{% set rgb = home_value01_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_value01_label_color_value: !input "home_value01_label_color" - home_value01_label_color: '{% set rgb = home_value01_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_value02: !input "home_value02" - home_value02_icon: !input "home_value02_icon" - home_value02_icon_color_value: !input "home_value02_icon_color" - home_value02_icon_color: '{% set rgb = home_value02_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_value02_label_color_value: !input "home_value02_label_color" - home_value02_label_color: '{% set rgb = home_value02_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_value03: !input "home_value03" - home_value03_icon: !input "home_value03_icon" - home_value03_icon_color_value: !input "home_value03_icon_color" - home_value03_icon_color: '{% set rgb = home_value03_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_value03_label_color_value: !input "home_value03_label_color" - home_value03_label_color: '{% set rgb = home_value03_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - - ### Home Page - Chips ### - chip01: !input "chip01" - chip01_icon: !input "chip01_icon" - chip01_icon_color_value: !input "chip01_icon_color" - chip01_icon_color: '{% set rgb = chip01_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip02: !input "chip02" - chip02_icon: !input "chip02_icon" - chip02_icon_color_value: !input "chip02_icon_color" - chip02_icon_color: '{% set rgb = chip02_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip03: !input "chip03" - chip03_icon: !input "chip03_icon" - chip03_icon_color_value: !input "chip03_icon_color" - chip03_icon_color: '{% set rgb = chip03_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip04: !input "chip04" - chip04_icon: !input "chip04_icon" - chip04_icon_color_value: !input "chip04_icon_color" - chip04_icon_color: '{% set rgb = chip04_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip05: !input "chip05" - chip05_icon: !input "chip05_icon" - chip05_icon_color_value: !input "chip05_icon_color" - chip05_icon_color: '{% set rgb = chip05_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip06: !input "chip06" - chip06_icon: !input "chip06_icon" - chip06_icon_color_value: !input "chip06_icon_color" - chip06_icon_color: '{% set rgb = chip06_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - chip07: !input "chip07" - chip07_icon: !input "chip07_icon" - chip07_icon_color_value: !input "chip07_icon_color" - chip07_icon_color: '{% set rgb = chip07_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - - ### Home Page - Chips General ### - relay01_icon: !input "relay01_icon" #E3A5 - relay01_icon_color_value: !input "relay01_icon_color" - relay01_icon_color: '{% set rgb = relay01_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - relay02_icon: !input "relay02_icon" #E3A8 - relay02_icon_color_value: !input "relay02_icon_color" - relay02_icon_color: '{% set rgb = relay02_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - thermostat_icon: !input "thermostat_icon" #E50E - thermostat_icon_color_value: !input "thermostat_icon_color" - thermostat_icon_color: '{% set rgb = thermostat_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - heat_icon: !input "heat_icon" #\U0000E50F - - ### Home Page - General ### - home_outdoor_temp_label_color_value: !input "home_outdoor_temp_label_color" - home_outdoor_temp_label_color: '{% set rgb = home_outdoor_temp_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_indoor_temp_icon: !input "home_indoor_temp_icon" #E50E - home_indoor_temp_icon_color_value: !input "home_indoor_temp_icon_color" - home_indoor_temp_icon_color: '{% set rgb = home_indoor_temp_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - home_indoor_temp_label_color_value: !input "home_indoor_temp_label_color" - home_indoor_temp_label_color: '{% set rgb = home_indoor_temp_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - time_label_color_value: !input "time_label_color" - time_label_color: '{% set rgb = time_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - date_label_color_value: !input "date_label_color" - date_label_color: '{% set rgb = date_label_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - right_button_color_value: !input "right_button_color" - right_button_color: '{% set rgb = right_button_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - left_button_color_value: !input "left_button_color" - left_button_color: '{% set rgb = left_button_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - - ##### BUTTON Page Labels ##### - button_page01_label: !input button_page01_label - button_page02_label: !input button_page02_label - button_page03_label: !input button_page03_label - button_page04_label: !input button_page04_label - - ##### BUTTONS 1- 32 ##### - entity01: !input "entity01" - entity01_name: !input "entity01_name" - entity01_icon: !input "entity01_icon" - entity01_icon_color_value: !input "entity01_icon_color" - entity01_icon_color: '{% set rgb = entity01_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity01_confirm: !input "entity01_confirm" - - entity02: !input "entity02" - entity02_name: !input "entity02_name" - entity02_icon: !input "entity02_icon" - entity02_icon_color_value: !input "entity02_icon_color" - entity02_icon_color: '{% set rgb = entity02_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity02_confirm: !input "entity02_confirm" - - entity03: !input "entity03" - entity03_name: !input "entity03_name" - entity03_icon: !input "entity03_icon" - entity03_icon_color_value: !input "entity03_icon_color" - entity03_icon_color: '{% set rgb = entity03_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity03_confirm: !input "entity03_confirm" - - entity04: !input "entity04" - entity04_name: !input "entity04_name" - entity04_icon: !input "entity04_icon" - entity04_icon_color_value: !input "entity04_icon_color" - entity04_icon_color: '{% set rgb = entity04_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity04_confirm: !input "entity04_confirm" - - entity05: !input "entity05" - entity05_name: !input "entity05_name" - entity05_icon: !input "entity05_icon" - entity05_icon_color_value: !input "entity05_icon_color" - entity05_icon_color: '{% set rgb = entity05_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity05_confirm: !input "entity05_confirm" - - entity06: !input "entity06" - entity06_name: !input "entity06_name" - entity06_icon: !input "entity06_icon" - entity06_icon_color_value: !input "entity06_icon_color" - entity06_icon_color: '{% set rgb = entity06_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity06_confirm: !input "entity06_confirm" - - entity07: !input "entity07" - entity07_name: !input "entity07_name" - entity07_icon: !input "entity07_icon" - entity07_icon_color_value: !input "entity07_icon_color" - entity07_icon_color: '{% set rgb = entity07_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity07_confirm: !input "entity07_confirm" - - entity08: !input "entity08" - entity08_name: !input "entity08_name" - entity08_icon: !input "entity08_icon" - entity08_icon_color_value: !input "entity08_icon_color" - entity08_icon_color: '{% set rgb = entity08_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity08_confirm: !input "entity08_confirm" - - entity09: !input "entity09" - entity09_name: !input "entity09_name" - entity09_icon: !input "entity09_icon" - entity09_icon_color_value: !input "entity09_icon_color" - entity09_icon_color: '{% set rgb = entity09_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity09_confirm: !input "entity09_confirm" - - entity10: !input "entity10" - entity10_name: !input "entity10_name" - entity10_icon: !input "entity10_icon" - entity10_icon_color_value: !input "entity10_icon_color" - entity10_icon_color: '{% set rgb = entity10_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity10_confirm: !input "entity10_confirm" - - entity11: !input "entity11" - entity11_name: !input "entity11_name" - entity11_icon: !input "entity11_icon" - entity11_icon_color_value: !input "entity11_icon_color" - entity11_icon_color: '{% set rgb = entity11_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity11_confirm: !input "entity11_confirm" - - entity12: !input "entity12" - entity12_name: !input "entity12_name" - entity12_icon: !input "entity12_icon" - entity12_icon_color_value: !input "entity12_icon_color" - entity12_icon_color: '{% set rgb = entity12_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity12_confirm: !input "entity12_confirm" - - entity13: !input "entity13" - entity13_name: !input "entity13_name" - entity13_icon: !input "entity13_icon" - entity13_icon_color_value: !input "entity13_icon_color" - entity13_icon_color: '{% set rgb = entity13_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity13_confirm: !input "entity13_confirm" - - entity14: !input "entity14" - entity14_name: !input "entity14_name" - entity14_icon: !input "entity14_icon" - entity14_icon_color_value: !input "entity14_icon_color" - entity14_icon_color: '{% set rgb = entity14_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity14_confirm: !input "entity14_confirm" - - entity15: !input "entity15" - entity15_name: !input "entity15_name" - entity15_icon: !input "entity15_icon" - entity15_icon_color_value: !input "entity15_icon_color" - entity15_icon_color: '{% set rgb = entity15_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity15_confirm: !input "entity15_confirm" - - entity16: !input "entity16" - entity16_name: !input "entity16_name" - entity16_icon: !input "entity16_icon" - entity16_icon_color_value: !input "entity16_icon_color" - entity16_icon_color: '{% set rgb = entity16_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity16_confirm: !input "entity16_confirm" - - entity17: !input "entity17" - entity17_name: !input "entity17_name" - entity17_icon: !input "entity17_icon" - entity17_icon_color_value: !input "entity17_icon_color" - entity17_icon_color: '{% set rgb = entity17_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity17_confirm: !input "entity17_confirm" - - entity18: !input "entity18" - entity18_name: !input "entity18_name" - entity18_icon: !input "entity18_icon" - entity18_icon_color_value: !input "entity18_icon_color" - entity18_icon_color: '{% set rgb = entity18_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity18_confirm: !input "entity18_confirm" - - entity19: !input "entity19" - entity19_name: !input "entity19_name" - entity19_icon: !input "entity19_icon" - entity19_icon_color_value: !input "entity19_icon_color" - entity19_icon_color: '{% set rgb = entity19_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity19_confirm: !input "entity19_confirm" - - entity20: !input "entity20" - entity20_name: !input "entity20_name" - entity20_icon: !input "entity20_icon" - entity20_icon_color_value: !input "entity20_icon_color" - entity20_icon_color: '{% set rgb = entity20_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity20_confirm: !input "entity20_confirm" - - entity21: !input "entity21" - entity21_name: !input "entity21_name" - entity21_icon: !input "entity21_icon" - entity21_icon_color_value: !input "entity21_icon_color" - entity21_icon_color: '{% set rgb = entity21_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity21_confirm: !input "entity21_confirm" - - entity22: !input "entity22" - entity22_name: !input "entity22_name" - entity22_icon: !input "entity22_icon" - entity22_icon_color_value: !input "entity22_icon_color" - entity22_icon_color: '{% set rgb = entity22_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity22_confirm: !input "entity22_confirm" - - entity23: !input "entity23" - entity23_name: !input "entity23_name" - entity23_icon: !input "entity23_icon" - entity23_icon_color_value: !input "entity23_icon_color" - entity23_icon_color: '{% set rgb = entity23_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity23_confirm: !input "entity23_confirm" - - entity24: !input "entity24" - entity24_name: !input "entity24_name" - entity24_icon: !input "entity24_icon" - entity24_icon_color_value: !input "entity24_icon_color" - entity24_icon_color: '{% set rgb = entity24_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity24_confirm: !input "entity24_confirm" - - entity25: !input "entity25" - entity25_name: !input "entity25_name" - entity25_icon: !input "entity25_icon" - entity25_icon_color_value: !input "entity25_icon_color" - entity25_icon_color: '{% set rgb = entity25_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity25_confirm: !input "entity25_confirm" - - entity26: !input "entity26" - entity26_name: !input "entity26_name" - entity26_icon: !input "entity26_icon" - entity26_icon_color_value: !input "entity26_icon_color" - entity26_icon_color: '{% set rgb = entity26_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity26_confirm: !input "entity26_confirm" - - entity27: !input "entity27" - entity27_name: !input "entity27_name" - entity27_icon: !input "entity27_icon" - entity27_icon_color_value: !input "entity27_icon_color" - entity27_icon_color: '{% set rgb = entity27_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity27_confirm: !input "entity27_confirm" - - entity28: !input "entity28" - entity28_name: !input "entity28_name" - entity28_icon: !input "entity28_icon" - entity28_icon_color_value: !input "entity28_icon_color" - entity28_icon_color: '{% set rgb = entity28_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity28_confirm: !input "entity28_confirm" - - entity29: !input "entity29" - entity29_name: !input "entity29_name" - entity29_icon: !input "entity29_icon" - entity29_icon_color_value: !input "entity29_icon_color" - entity29_icon_color: '{% set rgb = entity29_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity29_confirm: !input "entity29_confirm" - - entity30: !input "entity30" - entity30_name: !input "entity30_name" - entity30_icon: !input "entity30_icon" - entity30_icon_color_value: !input "entity30_icon_color" - entity30_icon_color: '{% set rgb = entity30_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity30_confirm: !input "entity30_confirm" - - entity31: !input "entity31" - entity31_name: !input "entity31_name" - entity31_icon: !input "entity31_icon" - entity31_icon_color_value: !input "entity31_icon_color" - entity31_icon_color: '{% set rgb = entity31_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity31_confirm: !input "entity31_confirm" - - entity32: !input "entity32" - entity32_name: !input "entity32_name" - entity32_icon: !input "entity32_icon" - entity32_icon_color_value: !input "entity32_icon_color" - entity32_icon_color: '{% set rgb = entity32_icon_color_value %}{{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }}' - entity32_confirm: !input "entity32_confirm" - - ##### ENTITIES ##### - entitypages_enabled: !input "entitypages_enabled" - - ##### ENTITY Page Labels ##### - entity_page01_label: !input "entity_page01_label" - entity_page02_label: !input "entity_page02_label" - entity_page03_label: !input "entity_page03_label" - entity_page04_label: !input "entity_page04_label" - - ##### ENTITIES 1- 32 ##### - ## page 01 - entities_entity01: !input "entities_entity01" - entities_entity02: !input "entities_entity02" - entities_entity03: !input "entities_entity03" - entities_entity04: !input "entities_entity04" - entities_entity05: !input "entities_entity05" - entities_entity06: !input "entities_entity06" - entities_entity07: !input "entities_entity07" - entities_entity08: !input "entities_entity08" - ## page 02 - entities_entity09: !input "entities_entity09" - entities_entity10: !input "entities_entity10" - entities_entity11: !input "entities_entity11" - entities_entity12: !input "entities_entity12" - entities_entity13: !input "entities_entity13" - entities_entity14: !input "entities_entity14" - entities_entity15: !input "entities_entity15" - entities_entity16: !input "entities_entity16" - ## page 03 - entities_entity17: !input "entities_entity17" - entities_entity18: !input "entities_entity18" - entities_entity19: !input "entities_entity19" - entities_entity20: !input "entities_entity20" - entities_entity21: !input "entities_entity21" - entities_entity22: !input "entities_entity22" - entities_entity23: !input "entities_entity23" - entities_entity24: !input "entities_entity24" - ## page 04 - entities_entity25: !input "entities_entity25" - entities_entity26: !input "entities_entity26" - entities_entity27: !input "entities_entity27" - entities_entity28: !input "entities_entity28" - entities_entity29: !input "entities_entity29" - entities_entity30: !input "entities_entity30" - entities_entity31: !input "entities_entity31" - entities_entity32: !input "entities_entity32" - ## page 01 - name - entities_entity01_name: !input "entities_entity01_name" - entities_entity02_name: !input "entities_entity02_name" - entities_entity03_name: !input "entities_entity03_name" - entities_entity04_name: !input "entities_entity04_name" - entities_entity05_name: !input "entities_entity05_name" - entities_entity06_name: !input "entities_entity06_name" - entities_entity07_name: !input "entities_entity07_name" - entities_entity08_name: !input "entities_entity08_name" - ## page 02 - name - entities_entity09_name: !input "entities_entity09_name" - entities_entity10_name: !input "entities_entity10_name" - entities_entity11_name: !input "entities_entity11_name" - entities_entity12_name: !input "entities_entity12_name" - entities_entity13_name: !input "entities_entity13_name" - entities_entity14_name: !input "entities_entity14_name" - entities_entity15_name: !input "entities_entity15_name" - entities_entity16_name: !input "entities_entity16_name" - ## page 03 - name - entities_entity17_name: !input "entities_entity17_name" - entities_entity18_name: !input "entities_entity18_name" - entities_entity19_name: !input "entities_entity19_name" - entities_entity20_name: !input "entities_entity20_name" - entities_entity21_name: !input "entities_entity21_name" - entities_entity22_name: !input "entities_entity22_name" - entities_entity23_name: !input "entities_entity23_name" - entities_entity24_name: !input "entities_entity24_name" - ## page 04 - name - entities_entity25_name: !input "entities_entity25_name" - entities_entity26_name: !input "entities_entity26_name" - entities_entity27_name: !input "entities_entity27_name" - entities_entity28_name: !input "entities_entity28_name" - entities_entity29_name: !input "entities_entity29_name" - entities_entity30_name: !input "entities_entity30_name" - entities_entity31_name: !input "entities_entity31_name" - entities_entity32_name: !input "entities_entity32_name" - ## page 01 - icon - entities_entity01_icon: !input "entities_entity01_icon" - entities_entity02_icon: !input "entities_entity02_icon" - entities_entity03_icon: !input "entities_entity03_icon" - entities_entity04_icon: !input "entities_entity04_icon" - entities_entity05_icon: !input "entities_entity05_icon" - entities_entity06_icon: !input "entities_entity06_icon" - entities_entity07_icon: !input "entities_entity07_icon" - entities_entity08_icon: !input "entities_entity08_icon" - ## page 02 - icon - entities_entity09_icon: !input "entities_entity09_icon" - entities_entity10_icon: !input "entities_entity10_icon" - entities_entity11_icon: !input "entities_entity11_icon" - entities_entity12_icon: !input "entities_entity12_icon" - entities_entity13_icon: !input "entities_entity13_icon" - entities_entity14_icon: !input "entities_entity14_icon" - entities_entity15_icon: !input "entities_entity15_icon" - entities_entity16_icon: !input "entities_entity16_icon" - ## page 03 - icon - entities_entity17_icon: !input "entities_entity17_icon" - entities_entity18_icon: !input "entities_entity18_icon" - entities_entity19_icon: !input "entities_entity19_icon" - entities_entity20_icon: !input "entities_entity20_icon" - entities_entity21_icon: !input "entities_entity21_icon" - entities_entity22_icon: !input "entities_entity22_icon" - entities_entity23_icon: !input "entities_entity23_icon" - entities_entity24_icon: !input "entities_entity24_icon" - ## page 04 - icon - entities_entity25_icon: !input "entities_entity25_icon" - entities_entity26_icon: !input "entities_entity26_icon" - entities_entity27_icon: !input "entities_entity27_icon" - entities_entity28_icon: !input "entities_entity28_icon" - entities_entity29_icon: !input "entities_entity29_icon" - entities_entity30_icon: !input "entities_entity30_icon" - entities_entity31_icon: !input "entities_entity31_icon" - entities_entity32_icon: !input "entities_entity32_icon" - - ###### NEXTION PIC MAPPING ##### - hardware_button_pic_off: "77" - hardware_button_pic_on: "78" - button_off: "101" - button_on: "102" - heating_bt_pic_off: "82" - heating_bt_pic_on: "83" - - ###### NEXTION PAGE MAPPING ##### - page_home: "home" - page_weather01: "weather01" - page_weather02: "weather02" - page_weather03: "weather03" - page_weather04: "weather04" - page_weather05: "weather05" - page_climate: "climate" - page_settings: "settings" - page_boot: "boot" - page_screensaver: "screensaver" - page_lightsettings: "lightsettings" - page_coversettings: "coversettings" - page_buttonpage01: "buttonpage01" - page_buttonpage02: "buttonpage02" - page_buttonpage03: "buttonpage03" - page_buttonpage04: "buttonpage04" - page_notification: "notification" - page_qrcode: "qrcode" - page_entitypage01: "entitypage01" - page_entitypage02: "entitypage02" - page_entitypage03: "entitypage03" - page_entitypage04: "entitypage04" - -##### MUI Multilingual User Interface (DE/EN) ##### + ##### MUI Multilingual User Interface ##### mui: BGR: weekdays: @@ -3039,6 +2503,8 @@ variables: "off": иСĐēĐģŅŽŅ‡Đ˛Đ°ĐŊĐĩ heat: Ņ‚ĐžĐŋĐģиĐŊа please_confirm: МоĐģŅ, ĐŋĐžŅ‚Đ˛ŅŠŅ€Đ´ĐĩŅ‚Đĩ + unavailable: Unavailable + no_name: No name CZE: weekdays: mon: Pondělí @@ -3060,6 +2526,8 @@ variables: "off": vypnuto heat: topení please_confirm: Potvrďte prosím + unavailable: Unavailable + no_name: No name DEU: weekdays: mon: Montag @@ -3081,6 +2549,8 @@ variables: "off": aus heat: heizen please_confirm: Bitte bestätigen + unavailable: Unavailable + no_name: No name DNK: weekdays: mon: Mandag @@ -3102,6 +2572,8 @@ variables: "off": off heat: varme please_confirm: BekrÃĻft venligst + unavailable: Unavailable + no_name: No name ENG: weekdays: mon: Monday @@ -3123,6 +2595,8 @@ variables: "off": off heat: heat please_confirm: Please confirm + unavailable: Unavailable + no_name: No name ESP: weekdays: mon: Lunes @@ -3144,6 +2618,8 @@ variables: "off": off heat: calor please_confirm: Por favor, confirme + unavailable: Unavailable + no_name: No name EST: weekdays: mon: Esmaspäev @@ -3165,6 +2641,8 @@ variables: "off": välja heat: soojus please_confirm: Palun kinnitage + unavailable: Unavailable + no_name: No name FIN: weekdays: mon: Maanantai @@ -3186,6 +2664,8 @@ variables: "off": off heat: lämpÃļ please_confirm: Vahvistakaa + unavailable: Unavailable + no_name: No name FRA: weekdays: mon: Lundi @@ -3207,6 +2687,8 @@ variables: "off": off heat: Chaleur please_confirm: Veuillez confirmer + unavailable: Unavailable + no_name: No name GRC: weekdays: mon: ΔÎĩĪ…Ī„Î­ĪÎą @@ -3228,6 +2710,8 @@ variables: "off": ΑÎŊÎĩÎŊÎĩĪÎŗĪŒ heat: Î˜Î­ĪÎŧÎąÎŊĪƒÎˇ please_confirm: Î ÎąĪÎąÎēÎąÎģĪŽ ÎĩĪ€ÎšÎ˛ÎĩÎ˛ÎąÎšĪŽĪƒĪ„Îĩ + unavailable: Unavailable + no_name: No name HEB: weekdays: mon: ינש @@ -3249,6 +2733,8 @@ variables: "off": יובכ heat: םוח please_confirm: ר׊א השקבב + unavailable: Unavailable + no_name: No name HUN: weekdays: mon: HÊtfő @@ -3270,6 +2756,8 @@ variables: "off": off heat: hő please_confirm: KÊrjÃŧk, erősítse meg + unavailable: Unavailable + no_name: No name IDN: weekdays: mon: Senin @@ -3291,6 +2779,8 @@ variables: "off": off heat: panas please_confirm: Mohon konfirmasi + unavailable: Unavailable + no_name: No name ITA: weekdays: mon: LunedÃŦ @@ -3312,6 +2802,8 @@ variables: "off": off heat: caldo please_confirm: Confermare + unavailable: Unavailable + no_name: No name LTU: weekdays: mon: Pirmadienis @@ -3333,6 +2825,8 @@ variables: "off": iÅĄjungta heat: ÅĄiluma please_confirm: PraÅĄome patvirtinti + unavailable: Unavailable + no_name: No name LVA: weekdays: mon: Pirmdiena @@ -3354,6 +2848,8 @@ variables: "off": izslēgts heat: siltums please_confirm: LÅĢdzu, apstipriniet + unavailable: Unavailable + no_name: No name NLD: weekdays: mon: Maandag @@ -3375,6 +2871,8 @@ variables: "off": uit heat: verwarm please_confirm: Bevestig alstublieft + unavailable: Unavailable + no_name: No name NOR: weekdays: mon: Mandag @@ -3396,6 +2894,8 @@ variables: "off": av heat: varme please_confirm: Vennligst bekreft + unavailable: Unavailable + no_name: No name POL: weekdays: mon: Poniedziałek @@ -3417,6 +2917,8 @@ variables: "off": off heat: ciepło please_confirm: Proszę o potwierdzenie + unavailable: Unavailable + no_name: No name PRT: weekdays: mon: Segunda-feira @@ -3438,6 +2940,8 @@ variables: "off": desligado heat: Aquecimento please_confirm: Confirme, por favor + unavailable: Indisponível + no_name: Sem nome ROU: weekdays: mon: Luni @@ -3459,6 +2963,8 @@ variables: "off": off heat: căldură please_confirm: Vă rugăm să confirmați + unavailable: Unavailable + no_name: No name RUS: weekdays: mon: ПоĐŊĐĩĐ´ĐĩĐģҌĐŊиĐē @@ -3480,6 +2986,8 @@ variables: "off": Đ˛Ņ‹ĐēĐģŅŽŅ‡ĐĩĐŊĐž heat: ĐŊĐ°ĐŗŅ€Đĩв please_confirm: ПоĐļаĐģŅƒĐšŅŅ‚Đ°, ĐŋĐžĐ´Ņ‚Đ˛ĐĩŅ€Đ´Đ¸Ņ‚Đĩ + unavailable: Unavailable + no_name: No name SVK: weekdays: mon: Pondelok @@ -3501,6 +3009,8 @@ variables: "off": vypnutÊ heat: kÃērenie please_confirm: Potvrďte, prosím + unavailable: Unavailable + no_name: No name SVN: weekdays: mon: Ponedeljek @@ -3522,6 +3032,8 @@ variables: "off": izklop heat: toplota please_confirm: Prosimo, potrdite + unavailable: Unavailable + no_name: No name SWE: weekdays: mon: MÃĨndag @@ -3543,6 +3055,8 @@ variables: "off": av heat: värme please_confirm: Vänligen bekräfta + unavailable: Unavailable + no_name: No name TUR: weekdays: mon: Pazartesi @@ -3564,6 +3078,8 @@ variables: "off": kapalÄą heat: ÄąsÄą please_confirm: LÃŧtfen onaylayÄąn + unavailable: Unavailable + no_name: No name UKR: weekdays: mon: ПоĐŊĐĩĐ´Ņ–ĐģĐžĐē @@ -3585,14 +3101,93 @@ variables: "off": виĐŧĐē heat: ĐŊĐ°ĐŗŅ€Ņ–Đ˛ please_confirm: Đ‘ŅƒĐ´ŅŒ ĐģĐ°ŅĐēа, ĐŋŅ–Đ´Ņ‚Đ˛ĐĩŅ€Đ´Ņ–Ņ‚ŅŒ + unavailable: Unavailable + no_name: No name - mui_weekday_today: "{{ (dict.values(mui[language].weekdays) | list)[now().weekday()] ~ ', ' ~ as_timestamp(now()) | timestamp_custom(date_format) }}" - mui_weekday_tomorrow: "{{ (dict.values(mui[language].weekdays) | list)[(now() + timedelta(days=1)).weekday()] ~ ', ' ~ as_timestamp(now() + timedelta(days=1)) | timestamp_custom(date_format) }}" - mui_weekday_in_2_days: "{{ (dict.values(mui[language].weekdays) | list)[(now() + timedelta(days=2)).weekday()] ~ ', ' ~ as_timestamp(now() + timedelta(days=2)) | timestamp_custom(date_format) }}" - mui_weekday_in_3_days: "{{ (dict.values(mui[language].weekdays) | list)[(now() + timedelta(days=3)).weekday()] ~ ', ' ~ as_timestamp(now() + timedelta(days=3)) | timestamp_custom(date_format) }}" - mui_weekday_in_4_days: "{{ (dict.values(mui[language].weekdays) | list)[(now() + timedelta(days=4)).weekday()] ~ ', ' ~ as_timestamp(now() + timedelta(days=4)) | timestamp_custom(date_format) }}" - #heat_mui: "{{ mui[language].climate.heat }}" + ##### WEATHER #### + weather_entity: !input "weather_entity" # used only during the creation of weather in variables + ##### Home page ##### + page_home: + buttons: ### Feature Buttons ### + - icon: '' # NOT IN USE + color_rgb: + 'on': '' # NOT IN USE + 'off': '' # NOT IN USE + - icon: '' # NOT IN USE + color_rgb: + 'on': '' # NOT IN USE + 'off': '' # NOT IN USE + - icon: '' # NOT IN USE + color_rgb: + 'on': '' # NOT IN USE + 'off': '' # NOT IN USE + - icon: !input "home_button04_icon" #E1ED + color_rgb: + 'on': !input "home_button04_icon_color01" + 'off': !input "home_button04_icon_color02" + - icon: !input "home_button05_icon" #E432 + color_rgb: + 'on': !input "home_button05_icon_color" + 'off': '' # NOT IN USE + - icon: !input "home_button06_icon" #EDCF + color_rgb: + 'on': !input "home_button06_icon_color" + 'off': '' # NOT IN USE + - icon: '' # NOT IN USE + color_rgb: + 'on': '' # NOT IN USE + 'off': '' # NOT IN USE + general: + outdoor_temp: + label: + color_rgb: !input "home_outdoor_temp_label_color" + indoor_temp: + icon: + icon: !input "home_indoor_temp_icon" #E50E + color_rgb: !input "home_indoor_temp_icon_color" + label: + color_rgb: !input "home_indoor_temp_label_color" + time: + label: + color_rgb: !input "time_label_color" + date: + label: + color_rgb: !input "date_label_color" + hardware: + buttons: #### HARDWARE BUTTONS ##### + left: + entity: !input "left_button_entity" + name: !input "left_button_name" + color_rgb: !input "left_button_color" + hold_select: !input "left_button_hold_select" + #sequence: !input left_button_hold_custom_action + right: + entity: !input "right_button_entity" + name: !input "right_button_name" + color_rgb: !input "right_button_color" + hold_select: !input "right_button_hold_select" + #sequence: !input right_button_hold_custom_action + qrcode_enabled: !input "qrcode_enabled" + + ###### SYNC SETTINGS ##### + #delay_boot: !input "delay" # NOT IN USE + delay_value: !input "delay" + #delay_jump_page: !input "delay" # NOT IN USE + #sync_slider_ha: !input "sync_slider_ha" # NOT IN USE + #sync_value_ha: !input "sync_value_ha" # NOT IN USE + climate_optimistic: !input "climate_optimistic" + + ##### GENERAL ENTITYS ##### + hotwatertemp: !input "hotwatertemp" + outdoortemp: !input "outdoortemp" + indoortemp: !input "indoortemp" + climate: !input "climate" + relay_1_local_fallback: !input "relay_1_local_fallback" + relay_2_local_fallback: !input "relay_2_local_fallback" + + ##### ENTITIES ##### + entitypages_enabled: !input "entitypages_enabled" ############################################################# ##### CLOSE - Variables ##### @@ -3610,12 +3205,12 @@ trigger: ###### DELME - Trigger "nspanel_boot_init" ###### - platform: state entity_id: input_boolean.trigger_nspanel_boot - to: "on" + to: 'on' id: nspanel_boot_init ##### Reboot - Trigger "nspanel_boot_init" ##### - platform: template - value_template: '{{ states(nextion_inited_trigger) is match "on" }}' + value_template: "{{ is_state(nextion_inited_trigger, 'on') | default(false) if nextion_inited_trigger is string else false }}" for: seconds: 1 id: nspanel_boot_init @@ -3653,24 +3248,27 @@ trigger: id: weather_state_change ##### HOME Value 01 - Trigger "home_value01_state" ##### - - platform: event - event_type: state_changed - event_data: - entity_id: !input "home_value01" + - platform: state + entity_id: !input "home_value01" + not_to: + - unknown + - unavailable id: home_value01_state - ##### HOME Value 02 - Trigger "home_value02_state" ##### - - platform: event - event_type: state_changed - event_data: - entity_id: !input "home_value02" + ##### HOME Value 01 - Trigger "home_value02_state" ##### + - platform: state + entity_id: !input "home_value02" + not_to: + - unknown + - unavailable id: home_value02_state - ##### HOME Value 03 - Trigger "home_value03_state" ##### - - platform: event - event_type: state_changed - event_data: - entity_id: !input "home_value03" + ##### HOME Value 01 - Trigger "home_value03_state" ##### + - platform: state + entity_id: !input "home_value03" + not_to: + - unknown + - unavailable id: home_value03_state ##### Climate - Trigger "climate_state" ##### @@ -3705,7 +3303,7 @@ trigger: - platform: event event_type: state_changed event_data: - entity_id: '{{ nspaneltemp }}' + entity_id: "{{ nspaneltemp }}" id: nspaneltemp_state ##### Hot Water Charge - Trigger "hotwatercharge_state" ##### @@ -3768,99 +3366,101 @@ trigger: - platform: event event_type: state_changed event_data: - entity_id: '{{ relay01_entity }}' + entity_id: "{{ relay01_entity }}" id: relay01_state ##### Relay02 - Trigger "relay02_state" ##### - platform: event event_type: state_changed event_data: - entity_id: '{{ relay02_entity }}' + entity_id: "{{ relay02_entity }}" id: relay02_state ##### Left Button - Trigger "left_button_press" ##### - platform: template - value_template: '{{ states(left_button) is match "on" }}' + value_template: "{{ is_state(left_button, 'on') | default(false) if left_button is string else false }}" id: left_button_press ##### Right Button - Trigger "right_button_press" ##### - platform: template - value_template: '{{ states(right_button) is match "on" }}' + value_template: "{{ is_state(right_button, 'on') | default(false) if right_button is string else false }}" id: right_button_press ##### Left Button - State "left_button_state" ##### - - platform: event - event_type: state_changed - event_data: - entity_id: !input "left_button_entity" + - platform: state + entity_id: !input "left_button_entity" + to: + - 'on' + - 'off' id: left_button_state ##### Right Button - State "right_button_state" ##### - - platform: event - event_type: state_changed - event_data: - entity_id: !input "right_button_entity" + - platform: state + entity_id: !input "right_button_entity" + to: + - 'on' + - 'off' id: right_button_state ##### Notification Text - Trigger "notification_text_state" ##### - platform: event event_type: state_changed event_data: - entity_id: '{{ notification_text }}' + entity_id: "{{ notification_text }}" id: notification_text_state ##### Notification Text - Trigger "notification_text_state" ##### - platform: event event_type: state_changed event_data: - entity_id: '{{ notification_unread }}' + entity_id: "{{ notification_unread }}" id: notification_unread_state #### Show notification - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "homebutton04release" }}' + value_template: "{{ is_state(last_click, 'homebutton04release') | default(false) if last_click is string else false }}" id: open_notification_page #### Notification clear - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "notificationclearrelease" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'notificationclearrelease') if last_click is string else false }}" id: btn_notificationclearrelease #### Notification accept - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "notificationacceptrelease" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'notificationacceptrelease') if last_click is string else false }}" id: btn_notificationacceptrelease #### Show QR code - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "homebutton05release" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'homebutton05release') if last_click is string else false }}" id: open_qrcode_page #### Show ENTITIES - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "homebutton06release" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'homebutton06release') if last_click is string else false }}" id: open_entity_page #### Show Climate - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "weatherpagerelease" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'weatherpagerelease') if last_click is string else false }}" id: open_weather_page #### Climate - Trigger #### - platform: template - value_template: '{{ states(last_click) is match "climaterelease" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'climaterelease') if last_click is string else false }}" id: open_climate_page ##### Trigger - Button General ################################################################################################################# ##### Page Button - Trigger "short_press" - SHORT Press via "last_click" ##### - platform: template - value_template: '{{ states(last_click) is match "releasebutton" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'releasebutton') if last_click is string else false }}" id: short_press ##### Page Button - Trigger "long_press" - LONG Press via "last_click" - Button LONG Press for jump to Lightsetting or Coversetting Page ##### - platform: template - value_template: '{{ states(last_click) is match "press" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'press') if last_click is string else false }}" for: seconds: 1 id: long_press @@ -3895,7 +3495,7 @@ trigger: ##### Page Button - Trigger "button_page" Entity sync ##### - platform: template - value_template: '{{ states(last_click) is match "button" }}' + value_template: "{{ (states(last_click) | default('unavailable') is match 'button') if last_click is string else false }}" id: button_page @@ -4067,129 +3667,82 @@ trigger: ##### CLOSE - Trigger ##### ############################################################# +condition: "{{ is_state(nextion_inited_trigger, 'on') | default(false) if nextion_inited_trigger is string else false }}" ############################################################# ##### START - Action ##### ############################################################# -#condition: '{{ states(relay01_entity) != "unavailable" and states(relay02_entity) != "unavailable" }}' -condition: '{{ states(nextion_inited_trigger) == "on" }}' action: - variables: - #settings_entity_value: '{{ states(settings_entity) }}' - settings_entity_value: >- - {%- if states(settings_entity) != "unavailable" -%} {{ states(settings_entity) }} - {%- else -%} unknown - {%- endif -%} - entity_long: >- - {%- if settings_entity_value != "unknown" and settings_entity_value.split(',') | count >= 1 -%} {{ settings_entity_value.split(',')[0] }} - {%- else -%} unknown - {%- endif -%} - entity_back: >- - {%- if settings_entity_value != "unknown" and settings_entity_value.split(',') | count >= 2 -%} {{ settings_entity_value.split(',')[1] }} - {%- else -%} unknown - {%- endif -%} - entity_long_name: >- - {%- if settings_entity_value != "unknown" and settings_entity_value.split(',') | count >= 3 -%} {{ settings_entity_value.split(',')[2] }} - {%- else -%} unknown - {%- endif -%} - entity_long_icon: >- - {%- if settings_entity_value != "unknown" and settings_entity_value.split(',') | count >= 4 -%} {{ settings_entity_value.split(',')[3] }} - {%- else -%} unknown - {%- endif -%} - entity_long_icon_color: >- - {%- if settings_entity_value != "unknown" and settings_entity_value.split(',') | count >= 5 -%} {{ settings_entity_value.split(',')[4] }} - {%- else -%} unknown - {%- endif -%} + #settings_entity_value: "{{ states(settings_entity) }}" + settings_entity_value: "{{ states(settings_entity) | default('unavailable') if settings_entity is string else 'unavailable' }}" + settings_entity_split: "{{ settings_entity_value.split(',') if settings_entity_value is string and settings_entity_value not in ['unavailable', 'unknown', None] else [] }}" + settings_entity_count: "{{ settings_entity_split | count if settings_entity_split else 0 }}" + entity_long: "{{ settings_entity_split[0] if settings_entity_count >= 1 else 'unknown' }}" + entity_back: "{{ settings_entity_split[1] if settings_entity_count >= 2 else 'unknown' }}" + entity_long_name: "{{ settings_entity_split[2] if settings_entity_count >= 3 else 'unknown' }}" + entity_long_icon: "{{ settings_entity_split[3] if settings_entity_count >= 4 else 'unknown' }}" + entity_long_icon_color: "{{ settings_entity_split[4] if settings_entity_count >= 5 else 'unknown' }}" + entity_long_domain: "{{ entity_long.split('.')[0] if entity_long.split('.') | count > 0 else 'unknown' }}" ######################################################################################################################## # main - alias: "choose alias (name)" - alias: Main choices choose: - ##### JUMP TO - settings page lightsettings /coversettings / climate (SETTINGS ENTITY CHANGED) ##### - - conditions: + - alias: "Jump to light/cover/climate settings page" + conditions: - condition: trigger id: settings_entity - - condition: template - value_template: "{{ trigger.event.data.new_state.state != 'unknown' }}" + - "{{ trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" + - "{{ entity_long_domain in ['light', 'cover', 'climate'] }}" sequence: - - choose: - - conditions: '{{ entity_long is match "light." }}' - sequence: - - service: "{{ command_printf }}" - data: - cmd: "page {{ page_lightsettings }}" - - conditions: '{{ entity_long is match "cover." }}' - sequence: - - service: "{{ command_printf }}" - data: - cmd: "page {{ page_coversettings }}" - - conditions: '{{ entity_long is match "climate." }}' - sequence: - - service: "{{ command_printf }}" - data: - cmd: "page {{ page_climate }}" + - service: "{{ nextion.commands.printf }}" + data: + cmd: "page {{ nextion.pages[entity_long_domain] }}" ##### BOOT NSPANEL - boot init ##### - - conditions: + - alias: Boot init + conditions: - condition: trigger id: nspanel_boot_init - - condition: template - value_template: '{{ states(current_page) != page_home or states(last_click) == "unknown" }}' + - "{{ nextion.pages.current != nextion.pages.home or (is_state(last_click, ['unavailable', 'unknown', None]) | default(False) if last_click is string else False) }}" sequence: + ##### NSPanel boot init only ##### - delay: milliseconds: 100 - - ##### NSPanel boot init only ##### - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: boot.bluep_version message: "{{ blueprint_version }}" ###### Set local fallback ###### - - if: - - condition: template - value_template: '{{ relay_1_local_fallback }}' - then: - - service: switch.turn_on - data: - entity_id: 'switch.{{ nspanel_name }}_relay_1_local_fallback' - else: - - service: switch.turn_off - data: - entity_id: 'switch.{{ nspanel_name }}_relay_1_local_fallback' - - if: - - condition: template - value_template: '{{ relay_2_local_fallback }}' - then: - - service: switch.turn_on - data: - entity_id: 'switch.{{ nspanel_name }}_relay_2_local_fallback' - else: - - service: switch.turn_off - data: - entity_id: 'switch.{{ nspanel_name }}_relay_2_local_fallback' + - service: "switch.turn_{{ 'on' if relay_1_local_fallback else 'off' }}" + data: + entity_id: 'switch.{{ nspanel_name }}_relay_1_local_fallback' + - service: "switch.turn_{{ 'on' if relay_2_local_fallback else 'off' }}" + data: + entity_id: 'switch.{{ nspanel_name }}_relay_2_local_fallback' ##### clear notification icon ##### - - service: "{{ command_notification_clear }}" + - service: "{{ nextion.commands.notification_clear }}" data: {} ###### NSPanel beep ###### - delay: milliseconds: 2000 - - if: - - condition: template - value_template: '{{ is_state(notification_sound, "on") }}' + - if: "{{ is_state(notification_sound, 'on') }}" then: - - service: "{{ command_play_rtttl }}" + - service: "{{ nextion.commands.play_rtttl }}" data: song_str: "two short:d=4,o=5,b=100:16e6,16e6" ##### NSPanel boot init finished and jump to Home Page##### - - delay: + - &delay-default + delay: milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: page home @@ -4200,1748 +3753,1021 @@ action: id: current_page_changed sequence: ##### climate-page left - apply climate temperature if climate_optimistic ##### ## TODO - remove from here - - if: - - condition: template - value_template: '{{ trigger.event.data.old_state.state == page_climate and climate_optimistic and is_number(states(display_target_temperature)) and states(display_target_temperature) | float(0) != 0.0 }}' + - if: "{{ trigger.event.data.old_state.state == nextion.pages.climate and climate_optimistic }}" then: - - service: climate.set_temperature - data: - entity_id: '{{ entity_long }}' - #hvac_mode: 'heat' - temperature: "{{ states(display_target_temperature) | round(1) }}" + - variables: + display_target_temperature_state: "{{ states(display_target_temperature) | default('unavailable') if display_target_temperature is string else 'unavailable' }}" + - if: "{{ is_number(display_target_temperature_state) }}" + then: + - service: climate.set_temperature + data: + entity_id: "{{ entity_long }}" + #hvac_mode: 'heat' + temperature: "{{ display_target_temperature_state }}" - choose: ## PAGE HOME ## - - conditions: '{{ trigger.event.data.new_state.state == page_home }}' - alias: 'home page' + - alias: Home page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.home }}" sequence: &refresh_page_home - - service: '{{ command_set_settings_entity }}' + - &variables-weather + variables: + weather_attribution: "{{ state_attr(weather_entity, 'attribution') | default('unavailable') if weather_entity is string else 'unavailable' }}" + weather_type: > + {% if 'AccuWeather' in weather_attribution %} AccuWeather + {% elif 'OpenWeatherMap' in weather_attribution %} OpenWeather + {% elif 'SMHI' in weather_attribution %} SMHI + {% elif 'met.no' in weather_attribution %} Met.no + {% elif 'OpenWeatherMap' in weather_attribution %} OpenWeather + {% else %} Other + {% endif %} + weather_units: + hours_of_sun: "{{ state_attr(weather_entity, 'hours_of_sun_unit') | default('h') if weather_entity is string and state_attr(weather_entity, 'hours_of_sun_unit') else 'h' }}" + precipitation: "{{ state_attr(weather_entity, 'precipitation_unit') | default('mm') if weather_entity is string and state_attr(weather_entity, 'precipitation_unit') else 'mm' }}" + precipitation_probability: "{{ state_attr(weather_entity, 'precipitation_probability_unit') | default('%') if weather_entity is string and state_attr(weather_entity, 'precipitation_probability_unit') else '%' }}" + pressure: "{{ state_attr(weather_entity, 'pressure_unit') | default('') if weather_entity is string and state_attr(weather_entity, 'pressure_unit') }}" + temperature: "{{ state_attr(weather_entity, 'temperature_unit') | default('°') if weather_entity is string and state_attr(weather_entity, 'temperature_unit') else '°' }}" + thunderstorm_probability: "{{ state_attr(weather_entity, 'thunderstorm_probability_unit') | default('%') if weather_entity is string and state_attr(weather_entity, 'thunderstorm_probability_unit') else '%' }}" + uv_index: "{{ state_attr(weather_entity, 'uv_index_unit') | default('') if weather_entity is string and state_attr(weather_entity, 'uv_index_unit') }}" + visibility: "{{ state_attr(weather_entity, 'visibility_unit') | default('') if weather_entity is string and state_attr(weather_entity, 'visibility_unit') }}" + wind_speed: "{{ state_attr(weather_entity, 'wind_speed_unit') | default('') if weather_entity is string and state_attr(weather_entity, 'wind_speed_unit') }}" + + - service: "{{ nextion.commands.set_settings_entity }}" data: entity: 'unknown' ##### NSPanel Date ##### ### DATE Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.date - message: "{{ date_label_color }}" + message: "{{ page_home.general.date.label.color_rgb if is_number(page_home.general.date.label.color_rgb) else ((page_home.general.date.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.date.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.date.label.color_rgb[2] //(2**3)) }}" ### DATE Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.date - message: "{{ mui_weekday_today }}" + message: "{{ (dict.values(mui[language].weekdays) | list)[now().weekday()] ~ ', ' ~ as_timestamp(now()) | timestamp_custom('%d.%m') }}" ##### NSPanel Time ##### ### TIME Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.time - message: "{{ time_label_color }}" + message: "{{ page_home.general.time.label.color_rgb if is_number(page_home.general.time.label.color_rgb) else ((page_home.general.time.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.time.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.time.label.color_rgb[2] //(2**3)) }}" ### TIME Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.time message: "{{ time }}" ### TIME Meridiem Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.meridiem - message: "{{ time_label_color }}" + message: "{{ page_home.general.time.label.color_rgb if is_number(page_home.general.time.label.color_rgb) else ((page_home.general.time.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.time.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.time.label.color_rgb[2] //(2**3)) }}" ### TIME Meridiem Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.meridiem message: "{{ meridiem }}" ##### NSPanel Outdoor Temp ##### - variables: - outdoor_temp: >- - {%- if outdoortemp and is_number(states(outdoortemp)) -%}{{ states(outdoortemp) | round(1) }} - {%- else -%} {{state_attr(weather.entity,"temperature") | round(1) if state_attr(weather.entity, "temperature") else 0 }} - {%- endif -%} + outdoor_temp_state: "{{ states(outdoortemp) | default('unavailable') if outdoortemp is string else 'unavailable' }}" + outdoor_temp: "{{ outdoor_temp_state if is_number(outdoor_temp_state) else state_attr(weather_entity, 'temperature') | default('unavailable') if weather_entity is string else 'unavailable' }}" ### LABEL Outdoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.outdoor_temp - message: "{{ home_outdoor_temp_label_color }}" + message: "{{ page_home.general.outdoor_temp.label.color_rgb if is_number(page_home.general.outdoor_temp.label.color_rgb) else ((page_home.general.outdoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.outdoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.outdoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Outdoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.outdoor_temp - message: '{{ outdoor_temp }}{{ weather.units.temperature }}' + message: "{{ (outdoor_temp | round(1) ~ weather_units.temperature) if is_number(outdoor_temp) else (mui[language].unavailable if outdoor_temp in ['unavailable', 'unknown', None] else outdoor_temp) }}" ##### NSPanel Indoor Temp ##### + - variables: + indoor_temp_state: "{{ states(indoortemp) | default('unavailable') if indoortemp is string else 'unavailable' }}" ### ICON Indoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.indoortempicon - message: "{{ home_indoor_temp_icon_color }}" + message: "{{ page_home.general.indoor_temp.icon.color_rgb if is_number(page_home.general.indoor_temp.icon.color_rgb) else ((page_home.general.indoor_temp.icon.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.indoor_temp.icon.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.indoor_temp.icon.color_rgb[2] //(2**3)) }}" ### ICON Indoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.indoortempicon - message: "{{ home_indoor_temp_icon }}" + message: "{{ page_home.general.indoor_temp.icon.icon }}" ### LABEL Indoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.current_temp - message: "{{ home_indoor_temp_label_color }}" + message: "{{ page_home.general.indoor_temp.label.color_rgb if is_number(page_home.general.indoor_temp.label.color_rgb) else ((page_home.general.indoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.indoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.indoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Indoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.current_temp - message: "{{ states(indoortemp) | round(1) if indoortemp is match 'sensor.' and states(indoortemp) not in ['unavailable', 'unknown', 'none'] else states(nspaneltemp) | round(1) }}{{ weather.units.temperature }}" + message: "{{ (indoor_temp_state | round(1) ~ weather_units.temperature) if is_number(indoor_temp_state) else (mui[language].unavailable if indoor_temp_state in ['unavailable', 'unknown', None] else indoor_temp_state) }}" ##### Weather Icon Home Page ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" + - *delay-default + - service: "{{ nextion.commands.printf }}" data: - cmd: home.weather.pic={{ nextion.pics.weather[states(weather_entity) | default('unknown')] }} + cmd: home.weather.pic={{ nextion.pics.weather[states(weather_entity) | default('unavailable') if weather_entity is string else 'unavailable'] | default(None) }} + + ##### NSPanel Buttons ##### + - variables: + left_button_state: "{{ states(page_home.hardware.buttons.left.entity) | default('unavailable') if page_home.hardware.buttons.left.entity is string else 'unavailable' }}" + right_button_state: "{{ states(page_home.hardware.buttons.right.entity) | default('unavailable') if page_home.hardware.buttons.right.entity is string else 'unavailable' }}" ##### NSPanel Left Button Name ##### - - if: - - condition: template - value_template: '{{ left_button_name |length > 0 }}' + - if: "{{ page_home.hardware.buttons.left.name | length > 0 }}" then: ### LABEL Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.left_bt_text - message: "{{ left_button_color }}" + message: "{{ page_home.hardware.buttons.left.color_rgb if is_number(page_home.hardware.buttons.left.color_rgb) else ((page_home.hardware.buttons.left.color_rgb[0] //(2**3)) *(2**11))+((page_home.hardware.buttons.left.color_rgb[1] //(2**2)) *(2**5))+(page_home.hardware.buttons.left.color_rgb[2] //(2**3)) }}" ### LABEL Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.left_bt_text - message: "{{ left_button_name }}" + message: "{{ page_home.hardware.buttons.left.name }}" ##### SET Left Hardware Button PIC on Home Page #### - - if: - - condition: template - value_template: '{{ left_button_entity |length > 0 and states(left_button_entity).state != "unavailable" }}' + - if: "{{ left_button_state not in ['unavailable', 'unknown', None] }}" then: - variables: # Hardware Button PIC - left_hardware_button_state: >- - {%- if states(left_button_entity) == 'off' -%} {{ hardware_button_pic_off }} - {%- elif states(left_button_entity) == 'on' -%} {{ hardware_button_pic_on }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" + left_hardware_button_state: "{{ nextion.pics.hardware.button[left_button_state] | default(None) }}" + - *delay-default + - service: "{{ nextion.commands.printf }}" data: cmd: home.left_bt_pic.pic={{ left_hardware_button_state }} ##### NSPanel Right Button Name ##### - - if: - - condition: template - value_template: '{{ right_button_name |length > 0 }}' + - if: "{{ page_home.hardware.buttons.right.name | length > 0 }}" then: ### LABEL Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.right_bt_text - message: "{{ right_button_color }}" + message: "{{ page_home.hardware.buttons.right.color_rgb if is_number(page_home.hardware.buttons.right.color_rgb) else ((page_home.hardware.buttons.right.color_rgb[0] //(2**3)) *(2**11))+((page_home.hardware.buttons.right.color_rgb[1] //(2**2)) *(2**5))+(page_home.hardware.buttons.right.color_rgb[2] //(2**3)) }}" ### LABEL Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.right_bt_text - message: "{{ right_button_name }}" + message: "{{ page_home.hardware.buttons.right.name }}" ##### SET Right Hardware Button PIC on Home Page ##### - - if: - - condition: template - value_template: '{{ right_button_entity |length > 0 and states(right_button_entity).state != "unavailable" }}' + - if: "{{ right_button_state not in ['unavailable', 'unknown', None] }}" then: - variables: # Hardware Button PIC - right_hardware_button_state: >- - {%- if states(right_button_entity) == 'off' -%} {{ hardware_button_pic_off }} - {%- elif states(right_button_entity) == 'on' -%} {{ hardware_button_pic_on }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" + right_hardware_button_state: "{{ nextion.pics.hardware.button[right_button_state] | default(None) }}" + - *delay-default + - service: "{{ nextion.commands.printf }}" data: cmd: home.right_bt_pic.pic={{ right_hardware_button_state }} - ##### StatusBar - Climate Symbol ###### - - if: - - condition: template - value_template: '{{ climate |length > 0 }}' - then: - - variables: - chip_climate: >- - {%- if states(climate) == "heat" and state_attr(climate, "hvac_action") != None and state_attr(climate, "hvac_action") == "heating" -%} {{ heat_icon }} - {%- elif states(climate) == "heat" -%} {{ thermostat_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Thermostat Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_03 - message: "{{ thermostat_icon_color }}" - ### ICON Thermostat Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_03 - message: "{{ chip_climate }}" - - ##### StatusBar - Relay Symbols ###### - - variables: - chip_relay01: >- - {%- if states(relay01_entity) == 'on' -%} {{ relay01_icon }} - {%- else -%} {{ blank_icon}} - {%- endif -%} - chip_relay02: >- - {%- if states(relay02_entity) == 'on' -%} {{ relay02_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Relay01 Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_01 - message: "{{ relay01_icon_color }}" - ### ICON Relay01 Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_01 - message: "{{ chip_relay01 }}" - - ### ICON Relay02 Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_02 - message: "{{ relay02_icon_color }}" - ### ICON Relay02 Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_02 - message: "{{ chip_relay02 }}" - - ###### CHIPS 01 - 07 - Statusbar 04 - 10 ###### - - delay: - milliseconds: "{{ delay_value }}" + ###### Status bar ###### + - &variables-home_page_status_bar + variables: + thermostat_icon: !input "thermostat_icon" #E50E + heat_icon: !input "heat_icon" #\U0000E50F + climate_state: "{{ states(climate) | default('unavailable') if climate is string else 'unavailable' }}" + climate_action: "{{ state_attr(climate, 'hvac_action') | default('unavailable') if climate is string else 'unavailable' }}" + home_page_status_bar: + - entity: "{{ relay01_entity }}" + icon: !input "relay01_icon" #E3A5 + icon_color_rgb: !input "relay01_icon_color" + - entity: "{{ relay02_entity }}" + icon: !input "relay02_icon" #E3A8 + icon_color_rgb: !input "relay02_icon_color" + - entity: "{{ climate }}" + icon: "{{ (heat_icon if climate_action == 'heating' else thermostat_icon) if climate_state == 'heat' else nextion.icons.blank }}" + icon_color_rgb: !input "thermostat_icon_color" + - entity: !input "chip01" + icon: !input "chip01_icon" + icon_color_rgb: !input "chip01_icon_color" + - entity: !input "chip02" + icon: !input "chip02_icon" + icon_color_rgb: !input "chip02_icon_color" + - entity: !input "chip03" + icon: !input "chip03_icon" + icon_color_rgb: !input "chip03_icon_color" + - entity: !input "chip04" + icon: !input "chip04_icon" + icon_color_rgb: !input "chip04_icon_color" + - entity: !input "chip05" + icon: !input "chip05_icon" + icon_color_rgb: !input "chip05_icon_color" + - entity: !input "chip06" + icon: !input "chip06_icon" + icon_color_rgb: !input "chip06_icon_color" + - entity: !input "chip07" + icon: !input "chip07_icon" + icon_color_rgb: !input "chip07_icon_color" - repeat: - for_each: - - position: home.icon_top_04 - entity: "{{ chip01 }}" - entity_icon: "{{ chip01_icon }}" - entity_icon_color: "{{ chip01_icon_color }}" - - position: home.icon_top_05 - entity: "{{ chip02 }}" - entity_icon: "{{ chip02_icon }}" - entity_icon_color: "{{ chip02_icon_color }}" - - position: home.icon_top_06 - entity: "{{ chip03 }}" - entity_icon: "{{ chip03_icon }}" - entity_icon_color: "{{ chip03_icon_color }}" - - position: home.icon_top_07 - entity: "{{ chip04 }}" - entity_icon: "{{ chip04_icon }}" - entity_icon_color: "{{ chip04_icon_color }}" - - position: home.icon_top_08 - entity: "{{ chip05 }}" - entity_icon: "{{ chip05_icon }}" - entity_icon_color: "{{ chip05_icon_color }}" - - position: home.icon_top_09 - entity: "{{ chip06 }}" - entity_icon: "{{ chip06_icon }}" - entity_icon_color: "{{ chip06_icon_color }}" - - position: home.icon_top_10 - entity: "{{ chip07 }}" - entity_icon: "{{ chip07_icon }}" - entity_icon_color: "{{ chip07_icon_color }}" + for_each: "{{ home_page_status_bar }}" sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity |length > 0 }}' + - &display-home_page_status_bar + if: "{{ repeat.item.entity is defined and repeat.item.entity is string and repeat.item.entity | length > 0 }}" then: ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: - component: "{{ repeat.item.position }}" - message: "{{ repeat.item.entity_icon_color }}" + component: "{{ 'home.icon_top_%02d' | format(repeat.index) }}" + message: "{{ repeat.item.icon_color_rgb if is_number(repeat.item.icon_color_rgb) else ((repeat.item.icon_color_rgb[0] //(2**3)) *(2**11))+((repeat.item.icon_color_rgb[1] //(2**2)) *(2**5))+(repeat.item.icon_color_rgb[2] //(2**3)) }}" ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.position }}" - message: >- - {%- if states(repeat.item.entity) == 'on' -%} {{ repeat.item.entity_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} + component: "{{ 'home.icon_top_%02d' | format(repeat.index) }}" + message: "{{ repeat.item.icon if is_state(repeat.item.entity, 'on') | default(False) else nextion.icons.blank }}" + # {{ is_state(repeat.item.entity, 'on') | default(False) if repeat.item.entity is string else 'unavailable' }} ##### HOME VALUE 01 - 03 - - delay: - milliseconds: "{{ delay_value }}" + - *delay-default + - &variables-home_page_values + variables: + home_page_values: + - entity: !input "home_value01" + icon: !input "home_value01_icon" + icon_color_rgb: !input "home_value01_icon_color" + label_color_rgb: !input "home_value01_label_color" + - entity: !input "home_value02" + icon: !input "home_value02_icon" + icon_color_rgb: !input "home_value02_icon_color" + label_color_rgb: !input "home_value02_label_color" + - entity: !input "home_value03" + icon: !input "home_value03_icon" + icon_color_rgb: !input "home_value03_icon_color" + label_color_rgb: !input "home_value03_label_color" - repeat: - for_each: - - row: home.value01 - entity: "{{ home_value01 }}" - entity_icon: "{{ home_value01_icon }}" - entity_icon_color: "{{ home_value01_icon_color }}" - entity_label_color: "{{ home_value01_label_color }}" - - row: home.value02 - entity: "{{ home_value02 }}" - entity_icon: "{{ home_value02_icon }}" - entity_icon_color: "{{ home_value02_icon_color }}" - entity_label_color: "{{ home_value02_label_color }}" - - row: home.value03 - entity: "{{ home_value03 }}" - entity_icon: "{{ home_value03_icon }}" - entity_icon_color: "{{ home_value03_icon_color }}" - entity_label_color: "{{ home_value03_label_color }}" + for_each: "{{ home_page_values }}" sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity is match "sensor." and states(repeat.item.entity) != "unavailable" }}' + - &display-home_page_value + if: "{{ repeat.item.entity is string and repeat.item.entity is match 'sensor.' and states(repeat.item.entity) not in ['unavailable', 'unknown', None] }}" then: - - if: - - condition: template - value_template: '{{ repeat.item.entity_icon |length > 0 }}' + - if: "{{ repeat.item.entity_icon | length > 0 }}" then: ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: - component: "{{ repeat.item.row }}_icon" - message: "{{ repeat.item.entity_icon_color }}" + component: "{{ 'home.value%02d_icon' | format(repeat.index) }}" + message: "{{ repeat.item.icon_color_rgb if is_number(repeat.item.icon_color_rgb) else ((repeat.item.icon_color_rgb[0] //(2**3)) *(2**11))+((repeat.item.icon_color_rgb[1] //(2**2)) *(2**5))+(repeat.item.icon_color_rgb[2] //(2**3)) }}" ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.row }}_icon" - message: "{{ repeat.item.entity_icon }}" + component: "{{ 'home.value%02d_icon' | format(repeat.index) }}" + message: "{{ repeat.item.icon }}" ### LABEL Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: - component: "{{ repeat.item.row }}_state" - message: "{{ repeat.item.entity_label_color }}" + component: "{{ 'home.value%02d_state' | format(repeat.index) }}" + message: "{{ repeat.item.label_color_rgb if is_number(repeat.item.label_color_rgb) else ((repeat.item.label_color_rgb[0] //(2**3)) *(2**11))+((repeat.item.label_color_rgb[1] //(2**2)) *(2**5))+(repeat.item.label_color_rgb[2] //(2**3)) }}" ### LABEL Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.row }}_state" - message: > - {% if is_number(states(repeat.item.entity)) %} - {{ states(repeat.item.entity) | round(1) }}{{ state_attr(repeat.item.entity, "unit_of_measurement") if state_attr(repeat.item.entity, "unit_of_measurement") else '' }} - {% else %} - {{ states(repeat.item.entity) | default('unknown') }} - {% endif %} + component: "{{ 'home.value%02d_state' | format(repeat.index) }}" + message: "{{ (states(repeat.item.entity) | round(1) ~ (state_attr(repeat.item.entity, 'unit_of_measurement') if state_attr(repeat.item.entity, 'unit_of_measurement') else '')) if is_number(states(repeat.item.entity)) else states(repeat.item.entity) | default('unknown') }}" ##### Set notify icon ##### - variables: + notification_unread_state: "{{ states(notification_unread) | default('unavailable') if notification_unread is string else 'unavailable' }}" + notification_text_state: "{{ states(notification_text) | default(None) if notification_text is string else None }}" set_button04_icon: >- - {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button04_icon}} - {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button04_icon }} - {%- else -%} {{ blank_icon }} + {%- if notification_unread_state == 'on' and notification_text_state | length > 0 -%} {{ page_home.buttons[3].icon}} + {%- elif notification_unread_state == 'off' and notification_text_state | length > 0 -%} {{ page_home.buttons[3].icon }} + {%- else -%} {{ nextion.icons.blank }} {%- endif -%} set_button04_icon_font: >- - {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button04_icon_color01 }} - {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button04_icon_color02 }} - {%- else -%} {{ color_03 }} + {%- if notification_unread_state == 'on' and notification_text_state | length > 0 -%} + {% set rgb = page_home.buttons[3].color_rgb.on %} + {{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }} + {%- elif notification_unread_state == 'off' and notification_text_state | length > 0 -%} + {% set rgb = page_home.buttons[3].color_rgb.off %} + {{ rgb if is_number(rgb) else ((rgb[0] //(2**3)) *(2**11))+((rgb[1] //(2**2)) *(2**5))+(rgb[2] //(2**3)) }} + {%- else -%} {{ nextion.colors.grey_light }} {%- endif -%} ##### SET ICON Font - Notify ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.button04_icon message: "{{ set_button04_icon }}" ##### SET ICON Font Color - Notify ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.button04_icon message: "{{ set_button04_icon_font }}" ###### QR Code - Icon ###### - - if: - - condition: template - value_template: '{{ qrcode_enabled == true }}' - then: - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - if: "{{ qrcode_enabled == true }}" + then: # Display QR code icon + ### ICON Font Color ### + - service: "{{ nextion.commands.font_color }}" data: component: home.button05_icon - message: "{{ home_button05_icon_color }}" + message: "{{ page_home.buttons[4].color_rgb.on if is_number(page_home.buttons[4].color_rgb.on) else ((page_home.buttons[4].color_rgb.on[0] //(2**3)) *(2**11))+((page_home.buttons[4].color_rgb.on[1] //(2**2)) *(2**5))+(page_home.buttons[4].color_rgb.on[2] //(2**3)) }}" ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.button05_icon - message: "{{ home_button05_icon }}" - else: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ page_home.buttons[4].icon }}" + else: # Display blank icon + - service: "{{ nextion.commands.text_printf }}" data: component: home.button05_icon - message: "{{ blank_icon }}" + message: "{{ nextion.icons.blank }}" ###### ENTITIES - Icon ###### - - if: - - condition: template - value_template: '{{ entitypages_enabled }}' - then: + - *delay-default + - if: "{{ entitypages_enabled }}" + then: # Display entities icon ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - service: "{{ nextion.commands.font_color }}" data: component: home.button06_icon - message: "{{ home_button06_icon_color }}" + message: "{{ page_home.buttons[5].color_rgb.on if is_number(page_home.buttons[5].color_rgb.on) else ((page_home.buttons[5].color_rgb.on[0] //(2**3)) *(2**11))+((page_home.buttons[5].color_rgb.on[1] //(2**2)) *(2**5))+(page_home.buttons[5].color_rgb.on[2] //(2**3)) }}" ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.button06_icon - message: "{{ home_button06_icon }}" - else: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ page_home.buttons[5].icon }}" + else: # Display blank icon + - service: "{{ nextion.commands.text_printf }}" data: component: home.button06_icon - message: "{{ blank_icon }}" + message: "{{ nextion.icons.blank }}" + ###### SHOW All component when page loading done ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_show_all }}" + - *delay-default + - service: "{{ nextion.commands.show_all }}" - ## PAGE BUTTONPAGE01 ## - - conditions: '{{ trigger.event.data.new_state.state == page_buttonpage01 }}' - alias: 'buttonpage01 page' - sequence: &refresh_page_buttonpage01 - - service: '{{ command_set_settings_entity }}' - data: - entity: 'unknown' - ##### Button Page Label ##### - - if: - - condition: template - value_template: '{{ button_page01_label |length > 0 }}' + ## BUTTON PAGES 01 - 04 ## + - alias: Button pages + conditions: "{{ trigger.event.data.new_state.state in nextion.pages.buttonpages }}" + sequence: &refresh_page_buttonpage + - &variables-page_buttons + variables: + button_page_index: "{{ (nextion.pages.current[-2:] | int(-1)) - 1 }}" + first_button: "{{ button_page_index * 8 }}" + last_button: "{{ first_button + 8 }}" + ##### BUTTON Page Labels ##### + button_pages_labels: + - label: !input button_page01_label + - label: !input button_page02_label + - label: !input button_page03_label + - label: !input button_page04_label + ##### BUTTONS Page - Buttons 1 - 32 ##### + button_pages_buttons: + - entity: !input "entity01" + name: !input "entity01_name" + icon: !input "entity01_icon" + icon_color_rgb: !input "entity01_icon_color" + confirm: !input "entity01_confirm" + component: buttonpage01.button01 + - entity: !input "entity02" + name: !input "entity02_name" + icon: !input "entity02_icon" + icon_color_rgb: !input "entity02_icon_color" + confirm: !input "entity02_confirm" + component: buttonpage01.button02 + - entity: !input "entity03" + name: !input "entity03_name" + icon: !input "entity03_icon" + icon_color_rgb: !input "entity03_icon_color" + confirm: !input "entity03_confirm" + component: buttonpage01.button03 + - entity: !input "entity04" + name: !input "entity04_name" + icon: !input "entity04_icon" + icon_color_rgb: !input "entity04_icon_color" + confirm: !input "entity04_confirm" + component: buttonpage01.button04 + - entity: !input "entity05" + name: !input "entity05_name" + icon: !input "entity05_icon" + icon_color_rgb: !input "entity05_icon_color" + confirm: !input "entity05_confirm" + component: buttonpage01.button05 + - entity: !input "entity06" + name: !input "entity06_name" + icon: !input "entity06_icon" + icon_color_rgb: !input "entity06_icon_color" + confirm: !input "entity06_confirm" + component: buttonpage01.button06 + - entity: !input "entity07" + name: !input "entity07_name" + icon: !input "entity07_icon" + icon_color_rgb: !input "entity07_icon_color" + confirm: !input "entity07_confirm" + component: buttonpage01.button07 + - entity: !input "entity08" + name: !input "entity08_name" + icon: !input "entity08_icon" + icon_color_rgb: !input "entity08_icon_color" + confirm: !input "entity08_confirm" + component: buttonpage01.button08 + - entity: !input "entity09" + name: !input "entity09_name" + icon: !input "entity09_icon" + icon_color_rgb: !input "entity09_icon_color" + confirm: !input "entity09_confirm" + component: buttonpage02.button01 + - entity: !input "entity10" + name: !input "entity10_name" + icon: !input "entity10_icon" + icon_color_rgb: !input "entity10_icon_color" + confirm: !input "entity10_confirm" + component: buttonpage02.button02 + - entity: !input "entity11" + name: !input "entity11_name" + icon: !input "entity11_icon" + icon_color_rgb: !input "entity11_icon_color" + confirm: !input "entity11_confirm" + component: buttonpage02.button03 + - entity: !input "entity12" + name: !input "entity12_name" + icon: !input "entity12_icon" + icon_color_rgb: !input "entity12_icon_color" + confirm: !input "entity12_confirm" + component: buttonpage02.button04 + - entity: !input "entity13" + name: !input "entity13_name" + icon: !input "entity13_icon" + icon_color_rgb: !input "entity13_icon_color" + confirm: !input "entity13_confirm" + component: buttonpage02.button05 + - entity: !input "entity14" + name: !input "entity14_name" + icon: !input "entity14_icon" + icon_color_rgb: !input "entity14_icon_color" + confirm: !input "entity14_confirm" + component: buttonpage02.button06 + - entity: !input "entity15" + name: !input "entity15_name" + icon: !input "entity15_icon" + icon_color_rgb: !input "entity15_icon_color" + confirm: !input "entity15_confirm" + component: buttonpage02.button07 + - entity: !input "entity16" + name: !input "entity16_name" + icon: !input "entity16_icon" + icon_color_rgb: !input "entity16_icon_color" + confirm: !input "entity16_confirm" + component: buttonpage02.button08 + - entity: !input "entity17" + name: !input "entity17_name" + icon: !input "entity17_icon" + icon_color_rgb: !input "entity17_icon_color" + confirm: !input "entity17_confirm" + component: buttonpage03.button01 + - entity: !input "entity18" + name: !input "entity18_name" + icon: !input "entity18_icon" + icon_color_rgb: !input "entity18_icon_color" + confirm: !input "entity18_confirm" + component: buttonpage03.button02 + - entity: !input "entity19" + name: !input "entity19_name" + icon: !input "entity19_icon" + icon_color_rgb: !input "entity19_icon_color" + confirm: !input "entity19_confirm" + component: buttonpage03.button03 + - entity: !input "entity20" + name: !input "entity20_name" + icon: !input "entity20_icon" + icon_color_rgb: !input "entity20_icon_color" + confirm: !input "entity20_confirm" + component: buttonpage03.button04 + - entity: !input "entity21" + name: !input "entity21_name" + icon: !input "entity21_icon" + icon_color_rgb: !input "entity21_icon_color" + confirm: !input "entity21_confirm" + component: buttonpage03.button05 + - entity: !input "entity22" + name: !input "entity22_name" + icon: !input "entity22_icon" + icon_color_rgb: !input "entity22_icon_color" + confirm: !input "entity22_confirm" + component: buttonpage03.button06 + - entity: !input "entity23" + name: !input "entity23_name" + icon: !input "entity23_icon" + icon_color_rgb: !input "entity23_icon_color" + confirm: !input "entity23_confirm" + component: buttonpage03.button07 + - entity: !input "entity24" + name: !input "entity24_name" + icon: !input "entity24_icon" + icon_color_rgb: !input "entity24_icon_color" + confirm: !input "entity24_confirm" + component: buttonpage03.button08 + - entity: !input "entity25" + name: !input "entity25_name" + icon: !input "entity25_icon" + icon_color_rgb: !input "entity25_icon_color" + confirm: !input "entity25_confirm" + component: buttonpage04.button01 + - entity: !input "entity26" + name: !input "entity26_name" + icon: !input "entity26_icon" + icon_color_rgb: !input "entity26_icon_color" + confirm: !input "entity26_confirm" + component: buttonpage04.button02 + - entity: !input "entity27" + name: !input "entity27_name" + icon: !input "entity27_icon" + icon_color_rgb: !input "entity27_icon_color" + confirm: !input "entity27_confirm" + component: buttonpage04.button03 + - entity: !input "entity28" + name: !input "entity28_name" + icon: !input "entity28_icon" + icon_color_rgb: !input "entity28_icon_color" + confirm: !input "entity28_confirm" + component: buttonpage04.button04 + - entity: !input "entity29" + name: !input "entity29_name" + icon: !input "entity29_icon" + icon_color_rgb: !input "entity29_icon_color" + confirm: !input "entity29_confirm" + component: buttonpage04.button05 + - entity: !input "entity30" + name: !input "entity30_name" + icon: !input "entity30_icon" + icon_color_rgb: !input "entity30_icon_color" + confirm: !input "entity30_confirm" + component: buttonpage04.button06 + - entity: !input "entity31" + name: !input "entity31_name" + icon: !input "entity31_icon" + icon_color_rgb: !input "entity31_icon_color" + confirm: !input "entity31_confirm" + component: buttonpage04.button07 + - entity: !input "entity32" + name: !input "entity32_name" + icon: !input "entity32_icon" + icon_color_rgb: !input "entity32_icon_color" + confirm: !input "entity32_confirm" + component: buttonpage04.button08 + - if: "{{ button_page_index >= 0 and button_page_index <= 3 }}" then: - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.set_settings_entity }}" data: - component: "bpage01_label" - message: "{{ button_page01_label }}" + entity: 'unknown' + ##### Button Page Label ##### + - if: "{{ button_pages_labels[button_page_index].label | length > 0 }}" + then: + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ 'bpage%02d_label' | format(button_page_index+1) }}" + message: "{{ button_pages_labels[button_page_index].label }}" - ##### NSPanel build buttons Buttonpage01 ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - entity: "{{ entity01 }}" - button_icon: "{{ entity01_icon }}" - button_label: "{{ entity01_name }}" - button_icon_color: "{{ entity01_icon_color }}" - button: buttonpage01.button01 - - entity: "{{ entity02 }}" - button_icon: "{{ entity02_icon }}" - button_label: "{{ entity02_name }}" - button_icon_color: "{{ entity02_icon_color }}" - button: buttonpage01.button02 - - entity: "{{ entity03 }}" - button_icon: "{{ entity03_icon }}" - button_label: "{{ entity03_name }}" - button_icon_color: "{{ entity03_icon_color }}" - button: buttonpage01.button03 - - entity: "{{ entity04 }}" - button_icon: "{{ entity04_icon }}" - button_label: "{{ entity04_name }}" - button_icon_color: "{{ entity04_icon_color }}" - button: buttonpage01.button04 - - entity: "{{ entity05 }}" - button_icon: "{{ entity05_icon }}" - button_label: "{{ entity05_name }}" - button_icon_color: "{{ entity05_icon_color }}" - button: buttonpage01.button05 - - entity: "{{ entity06 }}" - button_icon: "{{ entity06_icon }}" - button_label: "{{ entity06_name }}" - button_icon_color: "{{ entity06_icon_color }}" - button: buttonpage01.button06 - - entity: "{{ entity07 }}" - button_icon: "{{ entity07_icon }}" - button_label: "{{ entity07_name }}" - button_icon_color: "{{ entity07_icon_color }}" - button: buttonpage01.button07 - - entity: "{{ entity08 }}" - button_icon: "{{ entity08_icon }}" - button_label: "{{ entity08_name }}" - button_icon_color: "{{ entity08_icon_color }}" - button: buttonpage01.button08 - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - variables: - ### component_to_update: "{{ repeat.item.button }}" - current_entity_state: "{{ states(repeat.item.entity) }}" - # Button PIC GRAY/WHITE - btn_pic: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_off }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' -%} {{ button_on }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'closed' -%} {{ button_off }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_off }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ button_on }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ button_off }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ button_on }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ button_off }} - {%- endif -%} - # TEXT, BRIGHTNESS and ICON Background - btn_bg: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_02 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_01 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_02 }} - {%- endif -%} - # ICON Font Color - btn_icon_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_05 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_03 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ repeat.item.button_icon_color }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_03 }} - {%- endif -%} - # LABEL Font Color - btn_txt_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_01 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_02 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_01 }} - {%- endif -%} - # BRIGHTNESS Font Color - btn_bri_font: "{{ color_02 }}" - # ICON Value - btn_icon: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_icon_unknown }} - {%- elif repeat.item.button_icon |length > 0 -%} {{ repeat.item.button_icon }} - {%- elif repeat.item.entity is match "light." -%} {{ button_icon_light }} - {%- elif repeat.item.entity is match "switch." -%} {{ button_icon_switch }} - {%- elif repeat.item.entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif repeat.item.entity is match "cover." -%} {{ button_icon_cover }} - {%- elif repeat.item.entity is match "automation." -%} {{ button_icon_automation }} - {%- elif repeat.item.entity is match "button." -%} {{ button_icon_button }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_icon_scene }} - {%- elif repeat.item.entity is match "script." -%} {{ button_icon_script }} - {%- elif repeat.item.entity is match "person." -%} {{ button_icon_person }} - {%- elif repeat.item.entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif repeat.item.entity is match "fan." -%} {{ button_icon_fan }} - {%- elif repeat.item.entity is match "climate." -%} {{ button_icon_climate }} - {%- endif -%} - # LABEL Value - btn_label: "{{ repeat.item.button_label }}" - # BRIGHTNESS Value - btn_bri_txt: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} 0 - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' and state_attr(repeat.item.entity, "brightness") != None -%} {{ (state_attr(repeat.item.entity, "brightness") | int * 100 /255) | round(0) }}% - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' and state_attr(repeat.item.entity, "current_position") != None -%} {{ (state_attr(repeat.item.entity, "current_position") | int(100)) | round(0) }}% - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' and state_attr(repeat.item.entity, "current_temperature") != None -%} {{ (state_attr(repeat.item.entity, "current_temperature") | int) | round(0) }}{{ weather.units.temperature }} - {%- else -%} 0 - {%- endif -%} - - ##### Set buttton ##### - - service: "{{ command_set_button }}" - data: - btn_id: "{{ repeat.item.button }}" - btn_pic: "{{ btn_pic }}" - btn_bg: "{{ btn_bg }}" - btn_icon_font: "{{ btn_icon_font }}" - btn_txt_font: "{{ btn_txt_font }}" - btn_bri_font: "{{ btn_bri_font }}" - btn_icon: "{{ btn_icon }}" - btn_label: "{{ btn_label }}" - btn_bri_txt: "{{ btn_bri_txt }}" + - *variables-weather + ##### NSPanel build Button page ##### + - repeat: + for_each: "{{ button_pages_buttons[first_button:last_button] }}" + sequence: &display-button_page_button + - if: "{{ repeat.item.entity is string and repeat.item.entity | length > 0 and repeat.item.entity.split('.') | default([]) | count > 0 }}" + then: + - variables: + item_domain: "{{ repeat.item.entity.split('.')[0] | default('unknown') }}" + # {{ states(entity_id) | default('unavailable') if entity_id is string else 'unavailable' }} + current_entity_state: "{{ states(repeat.item.entity) | default('unavailable') }}" + current_entity_state_available: "{{ current_entity_state not in ['unknown', 'unavailable', None] }}" + # Button PIC GRAY/WHITE + btn_pic: "{{ nextion.pics.button.on if current_entity_state in ['on', 'open', 'home'] or (item_domain == 'climate' and current_entity_state != 'off') else nextion.pics.button.off }}" + # TEXT, BRIGHTNESS and ICON Background + btn_bg: "{{ nextion.colors.white if current_entity_state in ['on', 'open', 'home'] or (item_domain == 'climate' and current_entity_state != 'off') else nextion.colors.grey_dark }}" + # ICON Font Color + btn_icon_font: > + {% if not current_entity_state_available %} {{ nextion.colors.red }} + {% elif item_domain in ['button', 'input_button', 'scene'] or current_entity_state in ['off', 'closed'] or (item_domain == 'person' and current_entity_state != 'home') %} {{ nextion.colors.grey_light }} + {% elif current_entity_state in ['on', 'open', 'home'] or (item_domain == 'climate' and current_entity_state != 'off') %} {{ repeat.item.icon_color_rgb if is_number(repeat.item.icon_color_rgb) else ((repeat.item.icon_color_rgb[0] //(2**3)) *(2**11))+((repeat.item.icon_color_rgb[1] //(2**2)) *(2**5))+(repeat.item.icon_color_rgb[2] //(2**3)) }} + {% else %} {{ nextion.colors.red }} + {% endif %} + # LABEL Font Color + btn_txt_font: >- + {% if not current_entity_state_available %} {{ nextion.colors.white }} + {% elif item_domain in ['button', 'input_button', 'scene'] or current_entity_state in ['off', 'closed'] or (item_domain == 'person' and current_entity_state != 'home') %} {{ nextion.colors.white }} + {% elif current_entity_state in ['on', 'open', 'home'] or (item_domain == 'climate' and current_entity_state != 'off') %} {{ nextion.colors.grey_dark }} + {% else %} {{ nextion.colors.white }} + {% endif %} + # BRIGHTNESS Font Color + btn_bri_font: "{{ nextion.colors.grey_dark }}" + # ICON Value + btn_icon: "{{ repeat.item.icon if repeat.item.icon | length > 0 else nextion.icons.buttons[repeat.item.entity.split('.')[0] if repeat.item.entity else 'unknown'] }}" + # LABEL Value + btn_label: "{{ repeat.item.name }}" + # BRIGHTNESS Value + btn_bri_txt: >- + {% if not current_entity_state_available %} 0 + {% elif item_domain == 'light' and current_entity_state == 'on' and state_attr(repeat.item.entity, 'brightness') != None %} {{ (state_attr(repeat.item.entity, 'brightness') | int * 100 /255) | round(0) }}% + {% elif item_domain == 'cover' and current_entity_state == 'open' and state_attr(repeat.item.entity, 'current_position') != None %} {{ (state_attr(repeat.item.entity, 'current_position') | int(100)) | round(0) }}% + {% elif item_domain == 'climate' and current_entity_state != 'off' and state_attr(repeat.item.entity, "current_temperature") != None %} {{ (state_attr(repeat.item.entity, "current_temperature") | float) | round(0) }}{{ weather_units.temperature }} + {% else -%} 0 + {% endif -%} + - *delay-default + - service: "{{ nextion.commands.set_button }}" + data: + btn_id: "{{ repeat.item.component }}" + btn_pic: "{{ btn_pic }}" + btn_bg: "{{ btn_bg }}" + btn_icon_font: "{{ btn_icon_font }}" + btn_txt_font: "{{ btn_txt_font }}" + btn_bri_font: "{{ btn_bri_font }}" + btn_icon: "{{ btn_icon }}" + btn_label: "{{ btn_label }}" + btn_bri_txt: "{{ btn_bri_txt }}" ###### SHOW All component when page loading done ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_show_all }}" + - *delay-default + - service: "{{ nextion.commands.show_all }}" - ## PAGE BUTTONPAGE02 ## - - conditions: '{{ trigger.event.data.new_state.state == page_buttonpage02 }}' - alias: 'buttonpage02 page' - sequence: &refresh_page_buttonpage02 - - service: '{{ command_set_settings_entity }}' - data: - entity: 'unknown' - ##### Button Page Label ##### - - if: - - condition: template - value_template: '{{ button_page02_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "bpage02_label" - message: "{{ button_page02_label }}" - - ##### NSPanel build buttons Buttonpage01 ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - entity: "{{ entity09 }}" - button_icon: "{{ entity09_icon }}" - button_label: "{{ entity09_name }}" - button_icon_color: "{{ entity09_icon_color }}" - button: buttonpage02.button01 - - entity: "{{ entity10 }}" - button_icon: "{{ entity10_icon }}" - button_label: "{{ entity10_name }}" - button_icon_color: "{{ entity10_icon_color }}" - button: buttonpage02.button02 - - entity: "{{ entity11 }}" - button_icon: "{{ entity11_icon }}" - button_label: "{{ entity11_name }}" - button_icon_color: "{{ entity11_icon_color }}" - button: buttonpage02.button03 - - entity: "{{ entity12 }}" - button_icon: "{{ entity12_icon }}" - button_label: "{{ entity12_name }}" - button_icon_color: "{{ entity12_icon_color }}" - button: buttonpage02.button04 - - entity: "{{ entity13 }}" - button_icon: "{{ entity13_icon }}" - button_label: "{{ entity13_name }}" - button_icon_color: "{{ entity13_icon_color }}" - button: buttonpage02.button05 - - entity: "{{ entity14 }}" - button_icon: "{{ entity14_icon }}" - button_label: "{{ entity14_name }}" - button_icon_color: "{{ entity14_icon_color }}" - button: buttonpage02.button06 - - entity: "{{ entity15 }}" - button_icon: "{{ entity15_icon }}" - button_label: "{{ entity15_name }}" - button_icon_color: "{{ entity15_icon_color }}" - button: buttonpage02.button07 - - entity: "{{ entity16 }}" - button_icon: "{{ entity16_icon }}" - button_label: "{{ entity16_name }}" - button_icon_color: "{{ entity16_icon_color }}" - button: buttonpage02.button08 - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - variables: - ### component_to_update: "{{ repeat.item.button }}" - current_entity_state: "{{ states(repeat.item.entity) }}" - # Button PIC GRAY/WHITE - btn_pic: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_off }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' -%} {{ button_on }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'closed' -%} {{ button_off }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_off }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ button_on }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ button_off }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ button_on }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ button_off }} - {%- endif -%} - # TEXT, BRIGHTNESS and ICON Background - btn_bg: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_02 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_01 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_02 }} - {%- endif -%} - # ICON Font Color - btn_icon_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_05 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_03 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ repeat.item.button_icon_color }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_03 }} - {%- endif -%} - # LABEL Font Color - btn_txt_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_01 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_02 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_01 }} - {%- endif -%} - # BRIGHTNESS Font Color - btn_bri_font: "{{ color_02 }}" - # ICON Value - btn_icon: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_icon_unknown }} - {%- elif repeat.item.button_icon |length > 0 -%} {{ repeat.item.button_icon }} - {%- elif repeat.item.entity is match "light." -%} {{ button_icon_light }} - {%- elif repeat.item.entity is match "switch." -%} {{ button_icon_switch }} - {%- elif repeat.item.entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif repeat.item.entity is match "cover." -%} {{ button_icon_cover }} - {%- elif repeat.item.entity is match "automation." -%} {{ button_icon_automation }} - {%- elif repeat.item.entity is match "button." -%} {{ button_icon_button }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_icon_scene }} - {%- elif repeat.item.entity is match "script." -%} {{ button_icon_script }} - {%- elif repeat.item.entity is match "person." -%} {{ button_icon_person }} - {%- elif repeat.item.entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif repeat.item.entity is match "fan." -%} {{ button_icon_fan }} - {%- elif repeat.item.entity is match "climate." -%} {{ button_icon_climate }} - {%- endif -%} - # LABEL Value - btn_label: "{{ repeat.item.button_label }}" - # BRIGHTNESS Value - btn_bri_txt: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} 0 - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' and state_attr(repeat.item.entity, "brightness") != None -%} {{ (state_attr(repeat.item.entity, "brightness") | int * 100 /255) | round(0) }}% - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' and state_attr(repeat.item.entity, "current_position") != None -%} {{ (state_attr(repeat.item.entity, "current_position") | int(100)) | round(0) }}% - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' and state_attr(repeat.item.entity, "current_temperature") != None -%} {{ (state_attr(repeat.item.entity, "current_temperature") | int) | round(0) }}{{ weather.units.temperature }} - {%- else -%} 0 - {%- endif -%} - - ##### Set buttton ##### - - service: "{{ command_set_button }}" - data: - btn_id: "{{ repeat.item.button }}" - btn_pic: "{{ btn_pic }}" - btn_bg: "{{ btn_bg }}" - btn_icon_font: "{{ btn_icon_font }}" - btn_txt_font: "{{ btn_txt_font }}" - btn_bri_font: "{{ btn_bri_font }}" - btn_icon: "{{ btn_icon }}" - btn_label: "{{ btn_label }}" - btn_bri_txt: "{{ btn_bri_txt }}" - - ###### SHOW All component when page loading done ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_show_all }}" - - ## PAGE BUTTONPAGE03 ## - - conditions: '{{ trigger.event.data.new_state.state == page_buttonpage03 }}' - alias: 'buttonpage03 page' - sequence: &refresh_page_buttonpage03 - - service: '{{ command_set_settings_entity }}' - data: - entity: 'unknown' - ##### Button Page Label ##### - - if: - - condition: template - value_template: '{{ button_page03_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "bpage03_label" - message: "{{ button_page03_label }}" - - ##### NSPanel build buttons Buttonpage01 ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - entity: "{{ entity17 }}" - button_icon: "{{ entity17_icon }}" - button_label: "{{ entity17_name }}" - button_icon_color: "{{ entity17_icon_color }}" - button: buttonpage03.button01 - - entity: "{{ entity18 }}" - button_icon: "{{ entity18_icon }}" - button_label: "{{ entity18_name }}" - button_icon_color: "{{ entity18_icon_color }}" - button: buttonpage03.button02 - - entity: "{{ entity19 }}" - button_icon: "{{ entity19_icon }}" - button_label: "{{ entity19_name }}" - button_icon_color: "{{ entity19_icon_color }}" - button: buttonpage03.button03 - - entity: "{{ entity20 }}" - button_icon: "{{ entity20_icon }}" - button_label: "{{ entity20_name }}" - button_icon_color: "{{ entity20_icon_color }}" - button: buttonpage03.button04 - - entity: "{{ entity21 }}" - button_icon: "{{ entity21_icon }}" - button_label: "{{ entity21_name }}" - button_icon_color: "{{ entity21_icon_color }}" - button: buttonpage03.button05 - - entity: "{{ entity22 }}" - button_icon: "{{ entity22_icon }}" - button_label: "{{ entity22_name }}" - button_icon_color: "{{ entity22_icon_color }}" - button: buttonpage03.button06 - - entity: "{{ entity23 }}" - button_icon: "{{ entity23_icon }}" - button_label: "{{ entity23_name }}" - button_icon_color: "{{ entity23_icon_color }}" - button: buttonpage03.button07 - - entity: "{{ entity24 }}" - button_icon: "{{ entity24_icon }}" - button_label: "{{ entity24_name }}" - button_icon_color: "{{ entity24_icon_color }}" - button: buttonpage03.button08 - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - variables: - ### component_to_update: "{{ repeat.item.button }}" - current_entity_state: "{{ states(repeat.item.entity) }}" - # Button PIC GRAY/WHITE - btn_pic: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_off }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' -%} {{ button_on }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'closed' -%} {{ button_off }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_off }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ button_on }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ button_off }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ button_on }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ button_off }} - {%- endif -%} - # TEXT, BRIGHTNESS and ICON Background - btn_bg: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_02 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_01 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_02 }} - {%- endif -%} - # ICON Font Color - btn_icon_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_05 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_03 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ repeat.item.button_icon_color }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_03 }} - {%- endif -%} - # LABEL Font Color - btn_txt_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_01 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_02 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_01 }} - {%- endif -%} - # BRIGHTNESS Font Color - btn_bri_font: "{{ color_02 }}" - # ICON Value - btn_icon: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_icon_unknown }} - {%- elif repeat.item.button_icon |length > 0 -%} {{ repeat.item.button_icon }} - {%- elif repeat.item.entity is match "light." -%} {{ button_icon_light }} - {%- elif repeat.item.entity is match "switch." -%} {{ button_icon_switch }} - {%- elif repeat.item.entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif repeat.item.entity is match "cover." -%} {{ button_icon_cover }} - {%- elif repeat.item.entity is match "automation." -%} {{ button_icon_automation }} - {%- elif repeat.item.entity is match "button." -%} {{ button_icon_button }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_icon_scene }} - {%- elif repeat.item.entity is match "script." -%} {{ button_icon_script }} - {%- elif repeat.item.entity is match "person." -%} {{ button_icon_person }} - {%- elif repeat.item.entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif repeat.item.entity is match "fan." -%} {{ button_icon_fan }} - {%- elif repeat.item.entity is match "climate." -%} {{ button_icon_climate }} - {%- endif -%} - # LABEL Value - btn_label: "{{ repeat.item.button_label }}" - # BRIGHTNESS Value - btn_bri_txt: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} 0 - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' and state_attr(repeat.item.entity, "brightness") != None -%} {{ (state_attr(repeat.item.entity, "brightness") | int * 100 /255) | round(0) }}% - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' and state_attr(repeat.item.entity, "current_position") != None -%} {{ (state_attr(repeat.item.entity, "current_position") | int(100)) | round(0) }}% - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' and state_attr(repeat.item.entity, "current_temperature") != None -%} {{ (state_attr(repeat.item.entity, "current_temperature") | int) | round(0) }}{{ weather.units.temperature }} - {%- else -%} 0 - {%- endif -%} - - ##### Set buttton ##### - - service: "{{ command_set_button }}" - data: - btn_id: "{{ repeat.item.button }}" - btn_pic: "{{ btn_pic }}" - btn_bg: "{{ btn_bg }}" - btn_icon_font: "{{ btn_icon_font }}" - btn_txt_font: "{{ btn_txt_font }}" - btn_bri_font: "{{ btn_bri_font }}" - btn_icon: "{{ btn_icon }}" - btn_label: "{{ btn_label }}" - btn_bri_txt: "{{ btn_bri_txt }}" - - ###### SHOW All component when page loading done ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_show_all }}" - - ## PAGE BUTTONPAGE04 ## - - conditions: '{{ trigger.event.data.new_state.state == page_buttonpage04 }}' - alias: 'buttonpage04 page' - sequence: &refresh_page_buttonpage04 - - service: '{{ command_set_settings_entity }}' - data: - entity: 'unknown' - ##### Button Page Label ##### - - if: - - condition: template - value_template: '{{ button_page04_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "bpage04_label" - message: "{{ button_page04_label }}" - - ##### NSPanel build buttons Buttonpage01 ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - entity: "{{ entity25 }}" - button_icon: "{{ entity25_icon }}" - button_label: "{{ entity25_name }}" - button_icon_color: "{{ entity25_icon_color }}" - button: buttonpage04.button01 - - entity: "{{ entity26 }}" - button_icon: "{{ entity26_icon }}" - button_label: "{{ entity26_name }}" - button_icon_color: "{{ entity26_icon_color }}" - button: buttonpage04.button02 - - entity: "{{ entity27 }}" - button_icon: "{{ entity27_icon }}" - button_label: "{{ entity27_name }}" - button_icon_color: "{{ entity27_icon_color }}" - button: buttonpage04.button03 - - entity: "{{ entity28 }}" - button_icon: "{{ entity28_icon }}" - button_label: "{{ entity28_name }}" - button_icon_color: "{{ entity28_icon_color }}" - button: buttonpage04.button04 - - entity: "{{ entity29 }}" - button_icon: "{{ entity29_icon }}" - button_label: "{{ entity29_name }}" - button_icon_color: "{{ entity29_icon_color }}" - button: buttonpage04.button05 - - entity: "{{ entity30 }}" - button_icon: "{{ entity30_icon }}" - button_label: "{{ entity30_name }}" - button_icon_color: "{{ entity30_icon_color }}" - button: buttonpage04.button06 - - entity: "{{ entity31 }}" - button_icon: "{{ entity31_icon }}" - button_label: "{{ entity31_name }}" - button_icon_color: "{{ entity31_icon_color }}" - button: buttonpage04.button07 - - entity: "{{ entity32 }}" - button_icon: "{{ entity32_icon }}" - button_label: "{{ entity32_name }}" - button_icon_color: "{{ entity32_icon_color }}" - button: buttonpage04.button08 - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - variables: - ### component_to_update: "{{ repeat.item.button }}" - current_entity_state: "{{ states(repeat.item.entity) }}" - # Button PIC GRAY/WHITE - btn_pic: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_off }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "light." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "switch." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "input_boolean." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' -%} {{ button_on }} - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'closed' -%} {{ button_off }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "automation." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_off }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_off }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "script." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ button_on }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ button_off }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "binary_sensor." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'on' -%} {{ button_on }} - {%- elif repeat.item.entity is match "fan." and current_entity_state == 'off' -%} {{ button_off }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ button_on }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ button_off }} - {%- endif -%} - # TEXT, BRIGHTNESS and ICON Background - btn_bg: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_02 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_01 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_02 }} - {%- endif -%} - # ICON Font Color - btn_icon_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_05 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_03 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ repeat.item.button_icon_color }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_03 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ repeat.item.button_icon_color }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_03 }} - {%- endif -%} - # LABEL Font Color - btn_txt_font: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "button." or repeat.item.entity is match "input_button." or repeat.item.entity is match "scene." -%} {{ color_01 }} - {%- elif current_entity_state == 'on' or current_entity_state == 'open' -%} {{ color_02 }} - {%- elif current_entity_state == 'off' or current_entity_state == 'closed' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "person." and current_entity_state == 'home' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "person." and current_entity_state != 'home' -%} {{ color_01 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' -%} {{ color_02 }} - {%- elif repeat.item.entity is match "climate." and current_entity_state == 'off' -%} {{ color_01 }} - {%- endif -%} - # BRIGHTNESS Font Color - btn_bri_font: "{{ color_02 }}" - # ICON Value - btn_icon: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} {{ button_icon_unknown }} - {%- elif repeat.item.button_icon |length > 0 -%} {{ repeat.item.button_icon }} - {%- elif repeat.item.entity is match "light." -%} {{ button_icon_light }} - {%- elif repeat.item.entity is match "switch." -%} {{ button_icon_switch }} - {%- elif repeat.item.entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif repeat.item.entity is match "cover." -%} {{ button_icon_cover }} - {%- elif repeat.item.entity is match "automation." -%} {{ button_icon_automation }} - {%- elif repeat.item.entity is match "button." -%} {{ button_icon_button }} - {%- elif repeat.item.entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif repeat.item.entity is match "scene." -%} {{ button_icon_scene }} - {%- elif repeat.item.entity is match "script." -%} {{ button_icon_script }} - {%- elif repeat.item.entity is match "person." -%} {{ button_icon_person }} - {%- elif repeat.item.entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif repeat.item.entity is match "fan." -%} {{ button_icon_fan }} - {%- elif repeat.item.entity is match "climate." -%} {{ button_icon_climate }} - {%- endif -%} - # LABEL Value - btn_label: "{{ repeat.item.button_label }}" - # BRIGHTNESS Value - btn_bri_txt: >- - {%- if current_entity_state == 'unknown' or current_entity_state == 'unavailable' -%} 0 - {%- elif repeat.item.entity is match "light." and current_entity_state == 'on' and state_attr(repeat.item.entity, "brightness") != None -%} {{ (state_attr(repeat.item.entity, "brightness") | int * 100 /255) | round(0) }}% - {%- elif repeat.item.entity is match "cover." and current_entity_state == 'open' and state_attr(repeat.item.entity, "current_position") != None -%} {{ (state_attr(repeat.item.entity, "current_position") | int(100)) | round(0) }}% - {%- elif repeat.item.entity is match "climate." and current_entity_state != 'off' and state_attr(repeat.item.entity, "current_temperature") != None -%} {{ (state_attr(repeat.item.entity, "current_temperature") | int) | round(0) }}{{ weather.units.temperature }} - {%- else -%} 0 - {%- endif -%} - - ##### Set buttton ##### - - service: "{{ command_set_button }}" - data: - btn_id: "{{ repeat.item.button }}" - btn_pic: "{{ btn_pic }}" - btn_bg: "{{ btn_bg }}" - btn_icon_font: "{{ btn_icon_font }}" - btn_txt_font: "{{ btn_txt_font }}" - btn_bri_font: "{{ btn_bri_font }}" - btn_icon: "{{ btn_icon }}" - btn_label: "{{ btn_label }}" - btn_bri_txt: "{{ btn_bri_txt }}" - - ###### SHOW All component when page loading done ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_show_all }}" - - ## PAGE LIGHTSETTUNGS ## - - conditions: '{{ trigger.event.data.new_state.state == page_lightsettings }}' - alias: 'lightsettings page' + ## PAGE LIGHTSETTINGS ## + - alias: Light settings page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.light }}" sequence: - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.light_name - message: '{{ entity_long_name }}' + message: "{{ entity_long_name }}" ##### LIGHT ICON - ON / OFF ##### - variables: - lightsettings_icon_font: >- - {%- if entity_long_icon |length > 0 -%} {{ entity_long_icon }} - {%- else -%} {{ button_icon_light }} - {%- endif -%} - lightsettings_icon_font_color: >- - {%- if states(entity_long) == 'on' -%} {{ entity_long_icon_color }} - {%- else -%} {{ color_03 }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + lightsettings_icon_font: "{{ entity_long_icon if entity_long_icon not in ['unavailable', 'unknown', None] and entity_long_icon | length > 0 else nextion.icons.buttons.light }}" + lightsettings_icon_font_color: "{{ entity_long_icon_color if is_state(entity_long, 'on') else nextion.colors.grey_light }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.icon_state message: "{{ lightsettings_icon_font }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: lightsettings.icon_state message: "{{ lightsettings_icon_font_color }}" ##### LIGHT State ##### - - delay: - milliseconds: "{{ delay_value }}" - - if: - - condition: template - value_template: "{{ state_attr(entity_long, 'brightness') != none }}" + - *delay-default + - if: "{{ state_attr(entity_long, 'brightness') != none }}" then: - - service: "{{ command_value }}" + - service: "{{ nextion.commands.value }}" data: component: lightsettings.lightslider - message: '{{ (state_attr(entity_long, "brightness") | int * 100 / 255) |round(0) }}' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ (state_attr(entity_long, 'brightness') | int * 100 / 255) | round(0) }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.light_value - message: '{{ (state_attr(entity_long, "brightness") | int * 100 / 255) | round(0) }}%' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ (state_attr(entity_long, 'brightness') | int * 100 / 255) | round(0) }}%" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.light_value_2 - message: '{{ (state_attr(entity_long, "brightness") | int * 100 /255) | round(0) }}%' + message: "{{ (state_attr(entity_long, 'brightness') | int * 100 /255) | round(0) }}%" else: - - service: "{{ command_value }}" + - service: "{{ nextion.commands.value }}" data: component: lightsettings.lightslider message: '0' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.light_value message: '0 %' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.light_value_2 message: '0 %' ##### LIGHT Check Color_Temp Value is available when yes send some current Values ##### - - if: - - condition: template - value_template: "{{ state_attr(entity_long, 'color_temp') != none }}" + - if: "{{ state_attr(entity_long, 'color_temp') != none }}" then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.temp_value - message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ (state_attr(entity_long, 'color_temp') | int ) | round(0) }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: lightsettings.temp_value_2 - message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_value }}" + message: "{{ (state_attr(entity_long, 'color_temp') | int ) | round(0) }}" + - *delay-default + - service: "{{ nextion.commands.value }}" data: component: lightsettings.tempslider - message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' + message: "{{ (state_attr(entity_long, 'color_temp') | int ) | round(0) }}" ## PAGE COVERSETTINGS ## - - conditions: '{{ trigger.event.data.new_state.state == page_coversettings }}' - alias: 'coversettings page' + - alias: Cover settings page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.cover }}" sequence: ##### COVER - OPEN / CLOSE ##### - variables: - coversettings_icon_font: >- - {%- if entity_long_icon |length > 0 -%} {{ entity_long_icon }} - {%- else -%} {{ button_icon_cover }} - {%- endif -%} - coversettings_icon_font_color: >- - {%- if states(entity_long) == 'open' -%} {{ entity_long_icon_color }} - {%- else -%} {{ color_03 }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + coversettings_icon_font: "{{ entity_long_icon if entity_long_icon | length > 0 else nextion.icons.buttons.cover }}" + coversettings_icon_font_color: "{{ entity_long_icon_color if is_state(entity_long, 'open') else nextion.colors.grey_light }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: coversettings.icon_state message: "{{ coversettings_icon_font }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: coversettings.icon_state message: "{{ coversettings_icon_font_color }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: coversettings.cover_name - message: '{{ entity_long_name }}' + message: "{{ entity_long_name }}" ##### COVER State - - service: "{{ command_value }}" + - service: "{{ nextion.commands.value }}" data: component: coversettings.coverslider - message: '{{ (state_attr(entity_long, "current_position") | int ) |round(0) }}' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ (state_attr(entity_long, 'current_position') | int ) | round(0) }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: coversettings.cover_value - message: '{{ (state_attr(entity_long, "current_position") | int ) |round(0) }} %' + message: "{{ (state_attr(entity_long, 'current_position') | int ) | round(0) }} %" ##### COVER Battery ICON Yes / NO ##### - - if: - - condition: template - value_template: "{{ state_attr(entity_long, 'battery') != none }}" + - if: "{{ state_attr(entity_long, 'battery') != none }}" then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: coversettings.battery_value - message: '{{ (state_attr(entity_long, "battery") | int ) |round(0) }} %' + message: "{{ (state_attr(entity_long, 'battery') | int ) | round(0) }} %" ### ICON Battery Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: coversettings.battery_icon - message: "{{ battery_icon_color }}" + message: "{{ nextion.colors.grey_super_light }}" ### ICON Battery Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: coversettings.battery_icon - message: "{{ battery_icon }}" + message: "{{ nextion.icons.battery }}" - ## ENTITY PAGE 01 ## - - conditions: '{{ trigger.event.data.new_state.state == page_entitypage01 }}' - alias: 'entity01 page' - sequence: &refresh_page_entitypage01 - ##### ENTITY Page Label ##### - - if: - - condition: template - value_template: '{{ entity_page01_label |length > 0 }}' + ## ENTITY PAGES 01 - 04 ## + - alias: Entity pages + conditions: "{{ trigger.event.data.new_state.state in nextion.pages.entitypages }}" + sequence: &refresh-entity_pages + - &variables-entity_pages + variables: + ##### Entity pages ##### + entity_pages_labels: + - label: !input "entity_page01_label" + - label: !input "entity_page02_label" + - label: !input "entity_page03_label" + - label: !input "entity_page04_label" + entity_pages_entities: + - entity: !input "entities_entity01" + name: !input "entities_entity01_name" + icon: !input "entities_entity01_icon" + component: entitypage01.value01 + - entity: !input "entities_entity02" + name: !input "entities_entity02_name" + icon: !input "entities_entity02_icon" + component: entitypage01.value02 + - entity: !input "entities_entity03" + name: !input "entities_entity03_name" + icon: !input "entities_entity03_icon" + component: entitypage01.value03 + - entity: !input "entities_entity04" + name: !input "entities_entity04_name" + icon: !input "entities_entity04_icon" + component: entitypage01.value04 + - entity: !input "entities_entity05" + name: !input "entities_entity05_name" + icon: !input "entities_entity05_icon" + component: entitypage01.value05 + - entity: !input "entities_entity06" + name: !input "entities_entity06_name" + icon: !input "entities_entity06_icon" + component: entitypage01.value06 + - entity: !input "entities_entity07" + name: !input "entities_entity07_name" + icon: !input "entities_entity07_icon" + component: entitypage01.value07 + - entity: !input "entities_entity08" + name: !input "entities_entity08_name" + icon: !input "entities_entity08_icon" + component: entitypage01.value08 + - entity: !input "entities_entity09" + name: !input "entities_entity09_name" + icon: !input "entities_entity09_icon" + component: entitypage02.value01 + - entity: !input "entities_entity10" + name: !input "entities_entity10_name" + icon: !input "entities_entity10_icon" + component: entitypage02.value02 + - entity: !input "entities_entity11" + name: !input "entities_entity11_name" + icon: !input "entities_entity11_icon" + component: entitypage02.value03 + - entity: !input "entities_entity12" + name: !input "entities_entity12_name" + icon: !input "entities_entity12_icon" + component: entitypage02.value04 + - entity: !input "entities_entity13" + name: !input "entities_entity13_name" + icon: !input "entities_entity13_icon" + component: entitypage02.value05 + - entity: !input "entities_entity14" + name: !input "entities_entity14_name" + icon: !input "entities_entity14_icon" + component: entitypage02.value06 + - entity: !input "entities_entity15" + name: !input "entities_entity15_name" + icon: !input "entities_entity15_icon" + component: entitypage02.value07 + - entity: !input "entities_entity16" + name: !input "entities_entity16_name" + icon: !input "entities_entity16_icon" + component: entitypage02.value08 + - entity: !input "entities_entity17" + name: !input "entities_entity17_name" + icon: !input "entities_entity17_icon" + component: entitypage03.value01 + - entity: !input "entities_entity18" + name: !input "entities_entity18_name" + icon: !input "entities_entity18_icon" + component: entitypage03.value02 + - entity: !input "entities_entity19" + name: !input "entities_entity19_name" + icon: !input "entities_entity19_icon" + component: entitypage03.value03 + - entity: !input "entities_entity20" + name: !input "entities_entity20_name" + icon: !input "entities_entity20_icon" + component: entitypage03.value04 + - entity: !input "entities_entity21" + name: !input "entities_entity21_name" + icon: !input "entities_entity21_icon" + component: entitypage03.value05 + - entity: !input "entities_entity22" + name: !input "entities_entity22_name" + icon: !input "entities_entity22_icon" + component: entitypage03.value06 + - entity: !input "entities_entity23" + name: !input "entities_entity23_name" + icon: !input "entities_entity23_icon" + component: entitypage03.value07 + - entity: !input "entities_entity24" + name: !input "entities_entity24_name" + icon: !input "entities_entity24_icon" + component: entitypage03.value08 + - entity: !input "entities_entity25" + name: !input "entities_entity25_name" + icon: !input "entities_entity25_icon" + component: entitypage04.value01 + - entity: !input "entities_entity26" + name: !input "entities_entity26_name" + icon: !input "entities_entity26_icon" + component: entitypage04.value02 + - entity: !input "entities_entity27" + name: !input "entities_entity27_name" + icon: !input "entities_entity27_icon" + component: entitypage04.value03 + - entity: !input "entities_entity28" + name: !input "entities_entity28_name" + icon: !input "entities_entity28_icon" + component: entitypage04.value04 + - entity: !input "entities_entity29" + name: !input "entities_entity29_name" + icon: !input "entities_entity29_icon" + component: entitypage04.value05 + - entity: !input "entities_entity30" + name: !input "entities_entity30_name" + icon: !input "entities_entity30_icon" + component: entitypage04.value06 + - entity: !input "entities_entity31" + name: !input "entities_entity31_name" + icon: !input "entities_entity31_icon" + component: entitypage04.value07 + - entity: !input "entities_entity32" + name: !input "entities_entity32_name" + icon: !input "entities_entity32_icon" + component: entitypage04.value08 + - variables: + entity_page_index: "{{ (nextion.pages.current[-2:] | int(-1)) - 1 }}" + first_entity: "{{ entity_page_index * 8 }}" + last_entity: "{{ first_entity + 8 }}" + ##### Entity page - Label ##### + - if: "{{ entity_pages_labels[entity_page_index].label | length > 0 }}" then: - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: - component: "entity01_label" - message: "{{ entity_page01_label }}" + component: "{{ 'entity%02d_label' | format(entity_page_index + 1) }}" + message: "{{ entity_pages_labels[entity_page_index].label }}" + - *delay-default ##### Entities ##### - - delay: - milliseconds: "{{ delay_value }}" - repeat: - for_each: - - row: entitypage01.value01 - entity: "{{ entities_entity01 }}" - entity_name: "{{ entities_entity01_name }}" - entity_icon: "{{ entities_entity01_icon }}" - - row: entitypage01.value02 - entity: "{{ entities_entity02 }}" - entity_name: "{{ entities_entity02_name }}" - entity_icon: "{{ entities_entity02_icon }}" - - row: entitypage01.value03 - entity: "{{ entities_entity03 }}" - entity_name: "{{ entities_entity03_name }}" - entity_icon: "{{ entities_entity03_icon }}" - - row: entitypage01.value04 - entity: "{{ entities_entity04 }}" - entity_name: "{{ entities_entity04_name }}" - entity_icon: "{{ entities_entity04_icon }}" - - row: entitypage01.value05 - entity: "{{ entities_entity05 }}" - entity_name: "{{ entities_entity05_name }}" - entity_icon: "{{ entities_entity05_icon }}" - - row: entitypage01.value06 - entity: "{{ entities_entity06 }}" - entity_name: "{{ entities_entity06_name }}" - entity_icon: "{{ entities_entity06_icon }}" - - row: entitypage01.value07 - entity: "{{ entities_entity07 }}" - entity_name: "{{ entities_entity07_name }}" - entity_icon: "{{ entities_entity07_icon }}" - - row: entitypage01.value08 - entity: "{{ entities_entity08 }}" - entity_name: "{{ entities_entity08_name }}" - entity_icon: "{{ entities_entity08_icon }}" - - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' + for_each: "{{ entity_pages_entities[first_entity:last_entity] }}" + sequence: &update-entity_page_entity + - if: "{{ repeat.item.entity is string and repeat.item.entity | length > 0 }}" then: - - if: - - condition: template - value_template: '{{ repeat.item.entity_icon |length > 0 }}' + - variables: + repeat_item_state: "{{ states(repeat.item.entity) | default('unavailable') }}" + - if: "{{ repeat.item.icon | length > 0 }}" then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.row }}_pic" - message: "{{ repeat.item.entity_icon }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + component: "{{ repeat.item.component }}_pic" + message: "{{ repeat.item.icon }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.row }}_label" + component: "{{ repeat.item.component }}_label" message: >- - {%- if repeat.item.entity_name |length > 0 -%} {{ repeat.item.entity_name }} - {%- elif states(repeat.item.entity) == 'unavailable' -%} {{ repeat.item.entity }} - {%- else -%} {{ state_attr(repeat.item.entity, "friendly_name")| default('no name') }} + {%- if repeat.item.name | length > 0 -%} {{ repeat.item.name }} + {%- elif repeat_item_state in ['unavailable', 'unknown', None] -%} {{ repeat.item.entity }} + {%- else -%} {{ state_attr(repeat.item.entity, 'friendly_name') | default(mui[language].no_name) }} {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: - component: "{{ repeat.item.row }}" - #message: '{{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement")| default("") }}' - message: >- - {%- if state_attr(repeat.item.entity, "unit_of_measurement") == None -%} - {{ states(repeat.item.entity) }} - {%- else -%} - {{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement") }} - {%- endif -%} - - ## ENTITY PAGE 02 ## - - conditions: '{{ trigger.event.data.new_state.state == page_entitypage02 }}' - alias: 'entity02 page' - sequence: &refresh_page_entitypage02 - ##### ENTITY Page Label ##### - - if: - - condition: template - value_template: '{{ entity_page02_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "entity02_label" - message: "{{ entity_page02_label }}" - ##### Entities ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - row: entitypage02.value01 - entity: "{{ entities_entity09 }}" - entity_name: "{{ entities_entity09_name }}" - entity_icon: "{{ entities_entity09_icon }}" - - row: entitypage02.value02 - entity: "{{ entities_entity10 }}" - entity_name: "{{ entities_entity10_name }}" - entity_icon: "{{ entities_entity10_icon }}" - - row: entitypage02.value03 - entity: "{{ entities_entity11 }}" - entity_name: "{{ entities_entity11_name }}" - entity_icon: "{{ entities_entity11_icon }}" - - row: entitypage02.value04 - entity: "{{ entities_entity12 }}" - entity_name: "{{ entities_entity12_name }}" - entity_icon: "{{ entities_entity12_icon }}" - - row: entitypage02.value05 - entity: "{{ entities_entity13 }}" - entity_name: "{{ entities_entity13_name }}" - entity_icon: "{{ entities_entity13_icon }}" - - row: entitypage02.value06 - entity: "{{ entities_entity14 }}" - entity_name: "{{ entities_entity14_name }}" - entity_icon: "{{ entities_entity14_icon }}" - - row: entitypage02.value07 - entity: "{{ entities_entity15 }}" - entity_name: "{{ entities_entity15_name }}" - entity_icon: "{{ entities_entity15_icon }}" - - row: entitypage02.value08 - entity: "{{ entities_entity16 }}" - entity_name: "{{ entities_entity16_name }}" - entity_icon: "{{ entities_entity16_icon }}" - - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - if: - - condition: template - value_template: '{{ repeat.item.entity_icon |length > 0 }}' - then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_pic" - message: "{{ repeat.item.entity_icon }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_label" - message: >- - {%- if repeat.item.entity_name |length > 0 -%} {{ repeat.item.entity_name }} - {%- elif states(repeat.item.entity) == 'unavailable' -%} {{ repeat.item.entity }} - {%- else -%} {{ state_attr(repeat.item.entity, "friendly_name")| default('no name') }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}" - #message: '{{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement")| default("") }}' - message: >- - {%- if state_attr(repeat.item.entity, "unit_of_measurement") == None -%} - {{ states(repeat.item.entity) }} - {%- else -%} - {{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement") }} - {%- endif -%} - - ## ENTITY PAGE 03 ## - - conditions: '{{ trigger.event.data.new_state.state == page_entitypage03 }}' - alias: 'entity03 page' - sequence: &refresh_page_entitypage03 - ##### ENTITY Page Label ##### - - if: - - condition: template - value_template: '{{ entity_page03_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "entity03_label" - message: "{{ entity_page03_label }}" - ##### Entities ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - row: entitypage03.value01 - entity: "{{ entities_entity17 }}" - entity_name: "{{ entities_entity17_name }}" - entity_icon: "{{ entities_entity17_icon }}" - - row: entitypage03.value02 - entity: "{{ entities_entity18 }}" - entity_name: "{{ entities_entity18_name }}" - entity_icon: "{{ entities_entity18_icon }}" - - row: entitypage03.value03 - entity: "{{ entities_entity19 }}" - entity_name: "{{ entities_entity19_name }}" - entity_icon: "{{ entities_entity19_icon }}" - - row: entitypage03.value04 - entity: "{{ entities_entity20 }}" - entity_name: "{{ entities_entity20_name }}" - entity_icon: "{{ entities_entity20_icon }}" - - row: entitypage03.value05 - entity: "{{ entities_entity21 }}" - entity_name: "{{ entities_entity21_name }}" - entity_icon: "{{ entities_entity21_icon }}" - - row: entitypage03.value06 - entity: "{{ entities_entity22 }}" - entity_name: "{{ entities_entity22_name }}" - entity_icon: "{{ entities_entity22_icon }}" - - row: entitypage03.value07 - entity: "{{ entities_entity23 }}" - entity_name: "{{ entities_entity23_name }}" - entity_icon: "{{ entities_entity23_icon }}" - - row: entitypage03.value08 - entity: "{{ entities_entity24 }}" - entity_name: "{{ entities_entity24_name }}" - entity_icon: "{{ entities_entity24_icon }}" - - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - if: - - condition: template - value_template: '{{ repeat.item.entity_icon |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_pic" - message: "{{ repeat.item.entity_icon }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_label" - message: >- - {%- if repeat.item.entity_name |length > 0 -%} {{ repeat.item.entity_name }} - {%- elif states(repeat.item.entity) == 'unavailable' -%} {{ repeat.item.entity }} - {%- else -%} {{ state_attr(repeat.item.entity, "friendly_name")| default('no name') }} - {%- endif -%} - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}" - #message: '{{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement")| default("") }}' - message: >- - {%- if state_attr(repeat.item.entity, "unit_of_measurement") == None -%} - {{ states(repeat.item.entity) }} - {%- else -%} - {{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement") }} - {%- endif -%} - - ## ENTITY PAGE 04 ## - - conditions: '{{ trigger.event.data.new_state.state == page_entitypage04 }}' - alias: 'entity04 page' - sequence: &refresh_page_entitypage04 - ##### ENTITY Page Label ##### - - if: - - condition: template - value_template: '{{ entity_page04_label |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "entity04_label" - message: "{{ entity_page04_label }}" - ##### Entities ##### - - delay: - milliseconds: "{{ delay_value }}" - - repeat: - for_each: - - row: entitypage04.value01 - entity: "{{ entities_entity25 }}" - entity_name: "{{ entities_entity25_name }}" - entity_icon: "{{ entities_entity25_icon }}" - - row: entitypage04.value02 - entity: "{{ entities_entity26 }}" - entity_name: "{{ entities_entity26_name }}" - entity_icon: "{{ entities_entity26_icon }}" - - row: entitypage04.value03 - entity: "{{ entities_entity27 }}" - entity_name: "{{ entities_entity27_name }}" - entity_icon: "{{ entities_entity27_icon }}" - - row: entitypage04.value04 - entity: "{{ entities_entity28 }}" - entity_name: "{{ entities_entity28_name }}" - entity_icon: "{{ entities_entity28_icon }}" - - row: entitypage04.value05 - entity: "{{ entities_entity29 }}" - entity_name: "{{ entities_entity29_name }}" - entity_icon: "{{ entities_entity29_icon }}" - - row: entitypage04.value06 - entity: "{{ entities_entity30 }}" - entity_name: "{{ entities_entity30_name }}" - entity_icon: "{{ entities_entity30_icon }}" - - row: entitypage04.value07 - entity: "{{ entities_entity31 }}" - entity_name: "{{ entities_entity31_name }}" - entity_icon: "{{ entities_entity31_icon }}" - - row: entitypage04.value08 - entity: "{{ entities_entity32 }}" - entity_name: "{{ entities_entity32_name }}" - entity_icon: "{{ entities_entity32_icon }}" - - sequence: - - if: - - condition: template - value_template: '{{ repeat.item.entity|length > 0 }}' - then: - - if: - - condition: template - value_template: '{{ repeat.item.entity_icon |length > 0 }}' - then: - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_pic" - message: "{{ repeat.item.entity_icon }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}_label" - message: >- - {%- if repeat.item.entity_name |length > 0 -%} {{ repeat.item.entity_name }} - {%- elif states(repeat.item.entity) == 'unavailable' -%} {{ repeat.item.entity }} - {%- else -%} {{ state_attr(repeat.item.entity, "friendly_name")| default('no name') }} - {%- endif -%} - - service: "{{ command_text_printf }}" - data: - component: "{{ repeat.item.row }}" - #message: '{{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement")| default("") }}' - message: >- - {%- if state_attr(repeat.item.entity, "unit_of_measurement") == None -%} - {{ states(repeat.item.entity) }} - {%- else -%} - {{ states(repeat.item.entity) }} {{ state_attr(repeat.item.entity, "unit_of_measurement") }} - {%- endif -%} + component: "{{ repeat.item.component }}" + message: "{{ repeat_item_state ~ ((state_attr(repeat.item.entity, 'unit_of_measurement') | default('')) if state_attr(repeat.item.entity, 'unit_of_measurement') else '') }}" ## PAGE CLIMATE ## - - alias: 'climate page' - conditions: '{{ trigger.event.data.new_state.state == page_climate }}' + - alias: Climate page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.climate }}" sequence: + - *variables-weather - variables: - hvac_mode: "{{ states(entity_long) }}" - outdoor_temp: >- - {%- if outdoortemp is match "sensor." - and states(outdoortemp) != "unavailable" - and states(outdoortemp).state is defined - and is_number(states(outdoortemp).state) -%} - {{ states(outdoortemp) | round(1) }} - {%- else -%} {{state_attr(weather.entity,"temperature") | round(1) if is_number(state_attr(weather.entity, "temperature")) else 0 }} - {%- endif -%} + hvac_mode: "{{ states(entity_long) | default('unavailable') if entity_long is string else 'unavailable' }}" + outdoor_temp_state: "{{ states(outdoortemp) | default('unavailable') if outdoortemp is string else 'unavailable' }}" + outdoor_temp: "{{ outdoor_temp_state if is_number(outdoor_temp_state) else state_attr(weather_entity, 'temperature') | default('unavailable') if weather_entity is string else 'unavailable' }}" heating_state: "{{ mui[language].climate.states.off if hvac_mode == 'off' else mui[language].climate.states.on }}" - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: climate.climate_label - message: '{{ entity_long_name }}' - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ entity_long_name }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: outdoor_temp - message: "{{ outdoor_temp ~ weather.units.temperature }}" - - service: "{{ command_text_printf }}" + message: "{{ (outdoor_temp | round(1) ~ weather_units.temperature) if is_number(outdoor_temp) else (mui[language].unavailable if outdoor_temp in ['unavailable', 'unknown', None] else outdoor_temp) }}" + + - service: "{{ nextion.commands.text_printf }}" data: component: current_temp - message: "{{ (state_attr(entity_long, 'current_temperature') | round(1) ~ weather.units.temperature) if is_number(state_attr(entity_long, 'current_temperature')) }}" - - if: - condition: template - value_template: '{{ hvac_mode != "off" and is_number(state_attr(entity_long, "temperature")) }}' + message: "{{ (state_attr(entity_long, 'current_temperature') | round(1) ~ weather_units.temperature) if is_number(state_attr(entity_long, 'current_temperature')) else '' }}" # mui[language].unavailable? + - if: "{{ hvac_mode != 'off' and is_number(state_attr(entity_long, 'temperature')) }}" then: - variables: target_temp: "{{state_attr(entity_long, 'temperature') | round(1)}}" - - service: "{{ command_thermostat_cycle }}" + - service: "{{ nextion.commands.thermostat_cycle }}" data: value: "{{ target_temp }}" else: - - service: "{{ command_thermostat_cycle }}" + - service: "{{ nextion.commands.thermostat_cycle }}" data: value: "0" - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: target_temp message: " " - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: heating_state message: "{{ heating_state }}" @@ -5949,261 +4775,232 @@ action: # HVAC Button PIC - variables: heating_bt_pic: >- - {%- if hvac_mode == "off" -%} {{ heating_bt_pic_off }} - {%- else -%} {{ heating_bt_pic_on }} + {%- if hvac_mode == 'off' -%} {{ nextion.pics.heating.button.off }} + {%- else -%} {{ nextion.pics.heating.button.on }} {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" + - *delay-default + - service: "{{ nextion.commands.printf }}" data: cmd: heating_bt_pic.pic={{ heating_bt_pic }} - variables: - hotw_bt_pic: >- - {%- if hotwatercharge | length > 0 and states(hotwatercharge) == 'on' -%} {{ hotw_bt_on }} - {%- elif hotwatercharge | length > 0 and states(hotwatercharge) == 'off' -%} {{ hotw_bt_off }} - {%- else -%} {{ hotw_bt_blank }} - {%- endif -%} - - service: "{{ command_printf }}" + hotwatercharge_state: "{{ states(hotwatercharge) | default('unavailable') if hotwatercharge is string else 'unavailable' }}" + hotwatertemp_state: "{{ states(hotwatertemp) | default('unavailable') if hotwatertemp is string else 'unavailable' }}" + hotw_bt_pic: "{{ nextion.pics.hvac.button[hotwatercharge_state] | default(nextion.pics.hvac.button.blank) if hotwatercharge_state not in ['unavailable', 'unknown', None] else nextion.pics.hvac.button.blank }}" + - *delay-default + - service: "{{ nextion.commands.printf }}" data: cmd: hotw_bt_pic.pic={{ hotw_bt_pic }} - - - if: - - condition: template - value_template: '{{ hotwatertemp is match "sensor." }}' + - if: "{{ hotwatertemp_state not in ['unavailable', 'unknown', None] }}" then: - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: climate.hotwater_temp - message: "{{ (states(hotwatertemp) | round(1) ~ weather.units.temperature) if is_number(states(hotwatertemp)) }}" + message: "{{ (hotwatertemp_state | round(1) ~ weather_units.temperature) if is_number(hotwatertemp_state) else hotwatertemp_state }}" ## PAGE WEATHER (WEATHE01 to WEATHE05) ## - - alias: 'weather pages' - conditions: '{{ trigger.event.data.new_state.state in [page_weather01, page_weather02, page_weather03, page_weather04, page_weather05] }}' + - alias: Weather pages + conditions: "{{ trigger.event.data.new_state.state in nextion.pages.weatherpages }}" sequence: + - *variables-weather - variables: page_name: "{{ trigger.event.data.new_state.state }}" page_index: "{{ (page_name[-2:] | int(0)) - 1 }}" - accuweather_day_name: "{{ 'day_' ~ page_index }}" - accuweather_sensor_prefix: "{{ 'sensor.' ~ weather.name ~ '_' }}" - accuweather_sensor_sufix: "{{ '_' ~ page_index ~ 'd' }}" - temp_min: > - {% if weather.type == 'AccuWeather' %} - {{ states(accuweather_sensor_prefix ~ 'realfeel_temperature_min' ~ accuweather_sensor_sufix) | default('unknown') }} - {% else %} - {{ state_attr(weather.entity,'forecast')[page_index].templow | default('unknown') }} - {% endif %} - temp_max: > - {% if weather.type == 'AccuWeather' %} - {{ states(accuweather_sensor_prefix ~ 'realfeel_temperature_max' ~ accuweather_sensor_sufix) | default('unknown') }} - {% else %} - {{ state_attr(weather.entity,'forecast')[page_index].temperature | default('unknown') }} - {% endif %} - precipitation: "{{ state_attr(weather.entity,'forecast')[page_index].precipitation | default('unknown') }}" - precipitation_probability: "{{ state_attr(weather.entity,'forecast')[page_index].precipitation_probability | default('unknown') }}" - hours_of_sun: > - {% if weather.type == 'AccuWeather' %} - {{ states(accuweather_sensor_prefix ~ 'hours_of_sun' ~ accuweather_sensor_sufix) | default('unknown') }} - {% else %} - {{ state_attr(weather.entity,'forecast')[page_index].hours_of_sun | default('unknown') }} - {% endif %} - uv_index: > - {% if weather.type == 'AccuWeather' %} - {{ states(accuweather_sensor_prefix ~ 'uv_index' ~ accuweather_sensor_sufix) | default('unknown') }} - {% else %} - {{ state_attr(weather.entity,'forecast')[page_index].uv_index | default('unknown') }} - {% endif %} - wind_speed: "{{ state_attr(weather.entity,'forecast')[page_index].wind_speed | default('unknown') }}" - thunderstorm_probability: > - {% if weather.type == 'AccuWeather' %} - {{ states(accuweather_sensor_prefix ~ 'thunderstorm_probability_day' ~ accuweather_sensor_sufix) | default('unknown') }} - {% else %} - {{ state_attr(weather.entity,'forecast')[page_index].thunderstorm_probability | default('unknown') }} - {% endif %} - parameters: - - name: hours_of_sun - visibility: "{{ is_number(hours_of_sun) }}" - value: "{{ (hours_of_sun | round(0) ~ ' ' ~ weather.units.hours_of_sun) if is_number(hours_of_sun) }}" - icon: "{{ nextion.icons.weather.sun }}" - - name: thunderstorm_probability - visibility: "{{ is_number(thunderstorm_probability) }}" - value: "{{ (thunderstorm_probability | round(0) ~ weather.units.thunderstorm_probability) if is_number(thunderstorm_probability) }}" - icon: "{{ nextion.icons.weather.lightning }}" - - name: precipitation - visibility: "{{ is_number(precipitation) or is_number(precipitation_probability) }}" - value: > - {{ (precipitation | round(0) ~ ' ' ~ weather.units.precipitation) if is_number(precipitation) }} - {{ '-' if is_number(precipitation) and is_number(precipitation_probability) }} - {{ (precipitation_probability | round(0) ~ weather.units.precipitation_probability) if is_number(precipitation_probability) }} - icon: "{{ nextion.icons.weather.rain }}" - - name: uv_index - visibility: "{{ is_number(uv_index) }}" - value: > - {{ (state_attr(accuweather_sensor_prefix ~ 'uv_index' ~ accuweather_sensor_sufix, 'level') | default(None) ~ ': ') if weather.type == 'AccuWeather' }} - {{ (uv_index | round(0) ~ weather.units.uv_index) if is_number(uv_index) }} - icon: "{{ nextion.icons.weather.protect }}" - - name: wind_speed - visibility: "{{ is_number(wind_speed) }}" - value: "{{ (wind_speed | round(0) ~ ' ' ~ weather.units.wind_speed) if is_number(wind_speed) }}" - icon: "{{ nextion.icons.weather.wind }}" - ##### SET weather PIC on Home Page #### - - service: "{{ command_printf }}" - data: - cmd: "{{ page_name }}.weather_icon.pic={{ nextion.pics.weather[states(weather_entity) | default('unknown')] if page_name == page_weather01 else nextion.pics.weather[state_attr(weather_entity,'forecast')[page_index].condition | default('unknown')] }}" - - delay: - milliseconds: "{{ delay_value }}" - - - if: "{{ is_number(temp_min) }}" - then: - ##### SET TEMP MIN #### - - service: "{{ command_text_printf }}" - data: - component: "{{ page_name }}.temp_min" ### Temperature MIN ### - message: '{{temp_min | round(0)}}{{ weather.units.temperature }}' - - delay: - milliseconds: "{{ delay_value }}" - ##### Slash ##### - - service: "{{ command_text_printf }}" - data: - component: "{{ page_name }}.slash" - message: '/' - - delay: - milliseconds: "{{ delay_value }}" - - ##### SET TEMP MAX #### - - service: "{{ command_text_printf }}" - data: - component: "{{ page_name }}.temp_max" ### Temperature MAX ### - message: '{{temp_max | round(0)}}{{ weather.units.temperature }}' - - delay: - milliseconds: "{{ delay_value }}" - - ##### Day Name ##### - - service: "{{ command_text_printf }}" + ##### Display relative day ##### + - service: "{{ nextion.commands.text_printf }}" data: component: "{{ page_name }}.day" message: "{{ (dict.values(mui[language].relative_day) | list)[page_index] }}" - - delay: - milliseconds: "{{ delay_value }}" + - *delay-default - ##### Day Date ##### - - service: "{{ command_text_printf }}" + ##### Display date (long) ##### + - variables: + date_format: !input "date_format" + - service: "{{ nextion.commands.text_printf }}" data: component: "{{ page_name }}.date" message: "{{ (dict.values(mui[language].weekdays) | list)[(now() + timedelta(days= (page_index))).weekday()] ~ ', ' ~ as_timestamp(now() + timedelta(days= (page_index))) | timestamp_custom(date_format) }}" - - delay: - milliseconds: "{{ delay_value }}" + - *delay-default - ##### fields 1 to 5 (Parameters) ##### - - repeat: - for_each: "{{ (parameters | selectattr('visibility', 'eq', true) | list)[:5] }}" - sequence: - - service: "{{ command_text_printf }}" - data: - component: "{{ page_name }}.value0{{ repeat.index }}" - message: "{{ repeat.item.value }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ page_name }}.value0{{ repeat.index }}_icon" - message: "{{ repeat.item.icon }}" - - delay: - milliseconds: "{{ delay_value }}" + ##### Display weather data only when available ##### + - variables: + forecast_day: > + {{ state_attr(weather_entity, 'forecast') | default([]) + | selectattr('datetime', 'defined') + | selectattr('datetime', '>=', (today_at('00:00') + timedelta(days= page_index)) | as_timestamp | timestamp_local ) + | selectattr('datetime', '<', (today_at('00:00') + timedelta(days= (page_index+1))) | as_timestamp | timestamp_local ) + | list + }} + - if: "{{ forecast_day | count > 0 }}" + then: # Display forecast + - variables: + accuweather: "{{ weather_type == 'AccuWeather' }}" + accuweather_day_name: "{{ 'day_' ~ page_index }}" + accuweather_sensor_prefix: "{{ 'sensor.' ~ (weather_entity | replace('weather.','')) ~ '_' }}" + accuweather_sensor_sufix: "{{ '_' ~ page_index ~ 'd' }}" + temp_min: > + {{ forecast_day | selectattr('templow', 'defined') | map(attribute='templow') | map('float') | list | min + if forecast_day | selectattr('templow', 'defined') | map(attribute='templow') | map('float') | list | count > 0 + else forecast_day | selectattr('temperature', 'defined') | map(attribute='temperature') | map('float') | list | min | default('unknown') + }} + temp_max: "{{ forecast_day | selectattr('temperature', 'defined') | map(attribute='temperature') | map('float') | list | max | default('unknown') }}" + condition: "{{ forecast_day | selectattr('condition', 'defined') | map(attribute='condition') | list | first | default('unknown') }}" + precipitation: "{{ forecast_day | selectattr('precipitation', 'defined') | map(attribute='precipitation') | map('float') | list | sum | default('unknown') }}" + precipitation_probability: "{{ forecast_day | selectattr('precipitation_probability', 'defined') | map(attribute='precipitation_probability') | map('float') | list | sum | default('unknown') }}" + hours_of_sun: "{{ states(accuweather_sensor_prefix ~ 'hours_of_sun' ~ accuweather_sensor_sufix) | default('unknown') if accuweather else forecast_day | selectattr('hours_of_sun', 'defined') | map(attribute='hours_of_sun') | map('float') | list | sum | default('unknown') }}" + uv_index: "{{ states(accuweather_sensor_prefix ~ 'uv_index' ~ accuweather_sensor_sufix) | default('unknown') if accuweather else forecast_day | selectattr('uv_index', 'defined') | map(attribute='uv_index') | map('float') | list | max | default('unknown') }}" + wind_speed: "{{ forecast_day | selectattr('wind_speed', 'defined') | map(attribute='wind_speed') | map('float') | list | max | default('unknown') }}" + thunderstorm_probability: "{{ states(accuweather_sensor_prefix ~ 'thunderstorm_probability_day' ~ accuweather_sensor_sufix) | default('unknown') if accuweather else forecast_day | selectattr('thunderstorm_probability', 'defined') | map(attribute='thunderstorm_probability') | map('float') | list | max | default('unknown') }}" + parameters: + - name: hours_of_sun + visibility: "{{ is_number(hours_of_sun) }}" + value: "{{ (hours_of_sun | round(0) ~ ' ' ~ weather_units.hours_of_sun) if is_number(hours_of_sun) }}" + icon: "{{ nextion.icons.weather.sun }}" + - name: thunderstorm_probability + visibility: "{{ is_number(thunderstorm_probability) }}" + value: "{{ (thunderstorm_probability | round(0) ~ weather_units.thunderstorm_probability) if is_number(thunderstorm_probability) }}" + icon: "{{ nextion.icons.weather.lightning }}" + - name: precipitation + visibility: "{{ is_number(precipitation) or is_number(precipitation_probability) }}" + value: > + {{ (precipitation | round(0) ~ ' ' ~ weather_units.precipitation) if is_number(precipitation) }} + {{ '-' if is_number(precipitation) and is_number(precipitation_probability) }} + {{ (precipitation_probability | round(0) ~ weather_units.precipitation_probability) if is_number(precipitation_probability) }} + icon: "{{ nextion.icons.weather.rain }}" + - name: uv_index + visibility: "{{ is_number(uv_index) }}" + value: > + {{ (state_attr(accuweather_sensor_prefix ~ 'uv_index' ~ accuweather_sensor_sufix, 'level') | default(None) ~ ': ') if weather_type == 'AccuWeather' }} + {{ (uv_index | round(0) ~ weather_units.uv_index) if is_number(uv_index) }} + icon: "{{ nextion.icons.weather.protect }}" + - name: wind_speed + visibility: "{{ is_number(wind_speed) }}" + value: "{{ (wind_speed | round(0) ~ ' ' ~ weather_units.wind_speed) if is_number(wind_speed) }}" + icon: "{{ nextion.icons.weather.wind }}" + ##### Display weather PIC when available + - if: "{{ condition not in ['unknown', None] }}" + then: + - service: "{{ nextion.commands.printf }}" + data: + cmd: "{{ page_name }}.weather_icon.pic={{ nextion.pics.weather[states(weather_entity) | default('unavailable') if weather_entity is string else 'unavailable'] | default(None) if condition == 'unknown' and page_name == nextion.pages.weatherpages[0] else nextion.pics.weather[condition] | default(None) }}" + - *delay-default + ##### Display temperature (min) when available + - if: "{{ is_number(temp_min) }}" + then: + ##### SET TEMP MIN #### + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.temp_min" ### Temperature MIN ### + message: "{{temp_min | round(0)}}{{ weather_units.temperature }}" + - *delay-default + ##### Slash ##### + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.slash" + message: '/' + - *delay-default + ##### Display temperature (max)) when available + - if: "{{ is_number(temp_max) }}" + then: + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.temp_max" ### Temperature MAX ### + message: "{{ (temp_max | round(0) ~ weather_units.temperature) if is_number(temp_max) else '?' }}" + - *delay-default + + ##### fields 1 to 5 (Parameters) ##### + - repeat: + for_each: "{{ (parameters | selectattr('visibility', 'eq', true) | list)[:5] }}" + sequence: + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.value0{{ repeat.index }}" + message: "{{ repeat.item.value }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.value0{{ repeat.index }}_icon" + message: "{{ repeat.item.icon }}" + - *delay-default + else: # Display "Unavailable" + - service: "{{ nextion.commands.text_printf }}" + data: + component: "{{ page_name }}.value01" + message: "{{ mui[language].unavailable }}" + - *delay-default + ## PAGE NOTIFICATION ## - - conditions: '{{ trigger.event.data.new_state.state == page_notification }}' - alias: 'notification page' + - alias: Notification page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.notification }}" sequence: - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: notification.notifi_text01 - message: "{{ states(notification_text) }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ states(notification_text) | default(mui[language].unavailable) if notification_text is string else mui[language].unavailable }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: notification.notifi_label - message: "{{ states(notification_label) }}" + message: "{{ states(notification_label) | default(mui[language].unavailable) if notification_label is string else mui[language].unavailable }}" ## PAGE QR Code ## - - conditions: '{{ trigger.event.data.new_state.state == page_qrcode }}' - alias: 'qrcode page' + - alias: QRCode page + conditions: "{{ trigger.event.data.new_state.state == nextion.pages.qrcode }}" sequence: - - if: - - condition: template - value_template: '{{ qrcode_label |length > 0 }}' + - variables: + qrcode_label: !input "qrcode_label" + qrcode_value: !input "qrcode_value" + - if: "{{ qrcode_label | length > 0 }}" then: - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: "qrcode_label" message: "{{ qrcode_label }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: "qrcode_value" message: "{{ qrcode_value }}" ## PAGE SETTINGS ## - #- conditions: '{{ trigger.event.data.new_state.state == page_settings }}' - # alias: 'settings page' + #- alias: Settings page + # conditions: "{{ trigger.event.data.new_state.state == nextion.pages.settings }}" # sequence: ## PAGE BOOT ## - #- conditions: '{{ trigger.event.data.new_state.state == page_boot }}' - # alias: 'boot page' + #- alias: Boot page + # conditions: "{{ trigger.event.data.new_state.state == nextion.pages.boot }}" # sequence: ## PAGE SCREENSAVER ## - #- conditions: '{{ trigger.event.data.new_state.state == page_screensaver }}' - # alias: 'screensaver page' + #- alias: Screensaver page + # conditions: "{{ trigger.event.data.new_state.state == nextion.pages.screensaver }}" # sequence: ##### BOOT NSPANEL - automation reload ##### - - conditions: + - alias: Automation reloaded + conditions: - condition: trigger id: automation_reloaded sequence: - choose: ## PAGE HOME ## - - conditions: '{{ states(current_page) == page_home }}' + - conditions: "{{ nextion.pages.current == nextion.pages.home }}" sequence: *refresh_page_home + + ## PAGE BUTTON PAGES 01 - 04 ## + - conditions: "{{ nextion.pages.current in nextion.pages.buttonpages }}" + sequence: *refresh_page_buttonpage - ## PAGE BUTTONPAGE01 ## - - conditions: '{{ states(current_page) == page_buttonpage01 }}' - sequence: *refresh_page_buttonpage01 - - ## PAGE BUTTONPAGE02 ## - - conditions: '{{ states(current_page) == page_buttonpage02 }}' - sequence: *refresh_page_buttonpage02 - - ## PAGE BUTTONPAGE03 ## - - conditions: '{{ states(current_page) == page_buttonpage03 }}' - sequence: *refresh_page_buttonpage03 - - ## PAGE BUTTONPAGE04 ## - - conditions: '{{ states(current_page) == page_buttonpage04 }}' - sequence: *refresh_page_buttonpage04 - - ## ENTITY PAGE 01 ## - - conditions: '{{ states(current_page) == page_entitypage01 }}' - sequence: *refresh_page_entitypage01 - - ## ENTITY PAGE 02 ## - - conditions: '{{ states(current_page) == page_entitypage02 }}' - sequence: *refresh_page_entitypage02 - - ## ENTITY PAGE 03 ## - - conditions: '{{ states(current_page) == page_entitypage03 }}' - sequence: *refresh_page_entitypage03 - - ## ENTITY PAGE 04 ## - - conditions: '{{ states(current_page) == page_entitypage04 }}' - sequence: *refresh_page_entitypage04 + ## ENTITY PAGES ## + - conditions: "{{ nextion.pages.current in nextion.pages.entitypages }}" + sequence: *refresh-entity_pages ##### UPDATE BUTTONS AND PAGES - button page / lightsettings page / coversettings page ##### - - conditions: + - alias: "Update buttons & pages" + conditions: - condition: trigger id: - current_state_entity01 @@ -6238,964 +5035,269 @@ action: - current_state_entity30 - current_state_entity31 - current_state_entity32 - - condition: template - value_template: "{{ states(current_page) == page_buttonpage01 or states(current_page) == page_buttonpage02 or states(current_page) == page_buttonpage03 or states(current_page) == page_buttonpage04 and trigger.to_state.state != 'unavailable' }}" + - "{{ nextion.pages.current in nextion.pages.buttonpages and trigger.to_state.state not in ['unavailable', 'unknown'] }}" sequence: - ##### SET Buttons #### - - alias: "Set variable(s) for entity change" - variables: - buttonpage: '{{ states(current_page) }}' - component_to_update: >- - {%- if trigger.entity_id == entity01 and buttonpage == 'buttonpage01' -%} buttonpage01.button01 - {%- elif trigger.entity_id == entity02 and buttonpage == 'buttonpage01' -%} buttonpage01.button02 - {%- elif trigger.entity_id == entity03 and buttonpage == 'buttonpage01' -%} buttonpage01.button03 - {%- elif trigger.entity_id == entity04 and buttonpage == 'buttonpage01' -%} buttonpage01.button04 - {%- elif trigger.entity_id == entity05 and buttonpage == 'buttonpage01' -%} buttonpage01.button05 - {%- elif trigger.entity_id == entity06 and buttonpage == 'buttonpage01' -%} buttonpage01.button06 - {%- elif trigger.entity_id == entity07 and buttonpage == 'buttonpage01' -%} buttonpage01.button07 - {%- elif trigger.entity_id == entity08 and buttonpage == 'buttonpage01' -%} buttonpage01.button08 - {%- elif trigger.entity_id == entity09 and buttonpage == 'buttonpage02' -%} buttonpage02.button01 - {%- elif trigger.entity_id == entity10 and buttonpage == 'buttonpage02' -%} buttonpage02.button02 - {%- elif trigger.entity_id == entity11 and buttonpage == 'buttonpage02' -%} buttonpage02.button03 - {%- elif trigger.entity_id == entity12 and buttonpage == 'buttonpage02' -%} buttonpage02.button04 - {%- elif trigger.entity_id == entity13 and buttonpage == 'buttonpage02' -%} buttonpage02.button05 - {%- elif trigger.entity_id == entity14 and buttonpage == 'buttonpage02' -%} buttonpage02.button06 - {%- elif trigger.entity_id == entity15 and buttonpage == 'buttonpage02' -%} buttonpage02.button07 - {%- elif trigger.entity_id == entity16 and buttonpage == 'buttonpage02' -%} buttonpage02.button08 - {%- elif trigger.entity_id == entity17 and buttonpage == 'buttonpage03' -%} buttonpage03.button01 - {%- elif trigger.entity_id == entity18 and buttonpage == 'buttonpage03' -%} buttonpage03.button02 - {%- elif trigger.entity_id == entity19 and buttonpage == 'buttonpage03' -%} buttonpage03.button03 - {%- elif trigger.entity_id == entity20 and buttonpage == 'buttonpage03' -%} buttonpage03.button04 - {%- elif trigger.entity_id == entity21 and buttonpage == 'buttonpage03' -%} buttonpage03.button05 - {%- elif trigger.entity_id == entity22 and buttonpage == 'buttonpage03' -%} buttonpage03.button06 - {%- elif trigger.entity_id == entity23 and buttonpage == 'buttonpage03' -%} buttonpage03.button07 - {%- elif trigger.entity_id == entity24 and buttonpage == 'buttonpage03' -%} buttonpage03.button08 - {%- elif trigger.entity_id == entity25 and buttonpage == 'buttonpage04' -%} buttonpage04.button01 - {%- elif trigger.entity_id == entity26 and buttonpage == 'buttonpage04' -%} buttonpage04.button02 - {%- elif trigger.entity_id == entity27 and buttonpage == 'buttonpage04' -%} buttonpage04.button03 - {%- elif trigger.entity_id == entity28 and buttonpage == 'buttonpage04' -%} buttonpage04.button04 - {%- elif trigger.entity_id == entity29 and buttonpage == 'buttonpage04' -%} buttonpage04.button05 - {%- elif trigger.entity_id == entity30 and buttonpage == 'buttonpage04' -%} buttonpage04.button06 - {%- elif trigger.entity_id == entity31 and buttonpage == 'buttonpage04' -%} buttonpage04.button07 - {%- elif trigger.entity_id == entity32 and buttonpage == 'buttonpage04' -%} buttonpage04.button08 - {%- endif -%} - # Button PIC - btn_pic: >- - {%- if trigger.to_state.entity_id is match "light." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "light." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "switch." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "switch." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "input_boolean." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "input_boolean." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "cover." and trigger.to_state.state == 'open' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "cover." and trigger.to_state.state == 'closed' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "automation." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "automation." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "button." -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "input_button." -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "scene." -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "script." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "script." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state != 'home' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "binary_sensor." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "binary_sensor." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "fan." and trigger.to_state.state == 'on' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "fan." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off' -%} {{ button_on }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state == 'off' -%} {{ button_off }} - {%- endif -%} - # TEXT and BRIGHTNESS and ICON Background - btn_bg: >- - {%- if trigger.to_state.entity_id is match "button." or trigger.to_state.entity_id is match "input_button." or trigger.to_state.entity_id is match "scene." -%} {{ color_01 }} - {%- elif trigger.to_state.state == 'on' or trigger.to_state.state == 'open' -%} {{ color_01 }} - {%- elif trigger.to_state.state == 'off' or trigger.to_state.state == 'closed' -%} {{ color_02 }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home' -%} {{ color_01 }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state != 'home' -%} {{ color_02 }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off' -%} {{ color_01 }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state == 'off' -%} {{ color_02 }} - {%- endif -%} - # ICON Font Color - btn_icon_font: >- - {%- if trigger.entity_id == entity01 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity01_icon_color }} - {%- elif trigger.entity_id == entity02 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity02_icon_color }} - {%- elif trigger.entity_id == entity03 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity03_icon_color }} - {%- elif trigger.entity_id == entity04 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity04_icon_color }} - {%- elif trigger.entity_id == entity05 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity05_icon_color }} - {%- elif trigger.entity_id == entity06 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity06_icon_color }} - {%- elif trigger.entity_id == entity07 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity07_icon_color }} - {%- elif trigger.entity_id == entity08 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity08_icon_color }} - {%- elif trigger.entity_id == entity09 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity09_icon_color }} - {%- elif trigger.entity_id == entity10 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity10_icon_color }} - {%- elif trigger.entity_id == entity11 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity11_icon_color }} - {%- elif trigger.entity_id == entity12 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity12_icon_color }} - {%- elif trigger.entity_id == entity13 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity13_icon_color }} - {%- elif trigger.entity_id == entity14 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity14_icon_color }} - {%- elif trigger.entity_id == entity15 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity15_icon_color }} - {%- elif trigger.entity_id == entity16 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity16_icon_color }} - {%- elif trigger.entity_id == entity17 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity17_icon_color }} - {%- elif trigger.entity_id == entity18 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity18_icon_color }} - {%- elif trigger.entity_id == entity19 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity19_icon_color }} - {%- elif trigger.entity_id == entity20 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity20_icon_color }} - {%- elif trigger.entity_id == entity21 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity21_icon_color }} - {%- elif trigger.entity_id == entity22 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity22_icon_color }} - {%- elif trigger.entity_id == entity23 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity23_icon_color }} - {%- elif trigger.entity_id == entity24 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity24_icon_color }} - {%- elif trigger.entity_id == entity25 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity25_icon_color }} - {%- elif trigger.entity_id == entity26 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity26_icon_color }} - {%- elif trigger.entity_id == entity27 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity27_icon_color }} - {%- elif trigger.entity_id == entity28 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity28_icon_color }} - {%- elif trigger.entity_id == entity29 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity29_icon_color }} - {%- elif trigger.entity_id == entity30 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity30_icon_color }} - {%- elif trigger.entity_id == entity31 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity31_icon_color }} - {%- elif trigger.entity_id == entity32 and ((trigger.to_state.state == 'on' or trigger.to_state.state == 'open') or (trigger.to_state.entity_id is match "button.") or (trigger.to_state.entity_id is match "input_button.") or (trigger.to_state.entity_id is match "scene.") or (trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home') or (trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off') ) -%} {{ entity32_icon_color }} - {%- elif trigger.to_state.state == 'off' or trigger.to_state.state == 'closed' -%} {{ color_03 }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state != 'home' -%} {{ color_03 }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state == 'off' -%} {{ color_03 }} - {%- endif -%} - - # LABEL Font Color - btn_txt_font: >- - {%- if trigger.to_state.entity_id is match "button." or trigger.to_state.entity_id is match "input_button." or trigger.to_state.entity_id is match "scene." -%} {{ color_02 }} - {%- elif trigger.to_state.state == 'on' or trigger.to_state.state == 'open' -%} {{ color_02 }} - {%- elif trigger.to_state.state == 'off' or trigger.to_state.state == 'closed' -%} {{ color_01 }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home' -%} {{ color_02 }} - {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state != 'home' -%} {{ color_01 }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off' -%} {{ color_02 }} - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state == 'off' -%} {{ color_01 }} - {%- endif -%} - # BRIGHTNESS Font Color - btn_bri_font: "{{ color_02 }}" - # BRIGHTNESS Value - btn_bri_txt: >- - {%- if trigger.to_state.entity_id is match "light." and trigger.to_state.state == 'on' and trigger.to_state.attributes.brightness is defined -%} {{ (trigger.to_state.attributes.brightness | int * 100 /255) | round(0) }}% - {%- elif trigger.to_state.entity_id is match "cover." and trigger.to_state.state == 'open' and trigger.to_state.attributes.current_position is defined -%} {{ (trigger.to_state.attributes.current_position | int) | round(0) }}% - {%- elif trigger.to_state.entity_id is match "climate." and trigger.to_state.state != 'off' and trigger.to_state.attributes.current_temperature is defined -%} {{ (trigger.to_state.attributes.current_temperature | int) | round(0) }}{{ weather.units.temperature }} - {%- else -%} 0 - {%- endif -%} - ##### SET Button PIC - - service: "{{ command_printf }}" - data: - cmd: "{{ component_to_update }}pic.pic={{ btn_pic }}" - ##### SET ICON Background ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_background_color }}" - data: - component: "{{ component_to_update }}icon" - message: "{{ btn_bg }}" - ##### SET LABEL Background ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_background_color }}" - data: - component: "{{ component_to_update }}text" - message: "{{ btn_bg }}" - ##### SET BRIGHTNESS Background Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_background_color }}" - data: - component: "{{ component_to_update }}bri" - message: "{{ btn_bg }}" - ##### SET ICON Font Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: "{{ component_to_update }}icon" - message: "{{ btn_icon_font }}" - ##### SET LABEL Font Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: "{{ component_to_update }}text" - message: "{{ btn_txt_font }}" - ##### SET BRIGHTNESS Font Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: "{{ component_to_update }}bri" - message: "{{ btn_bri_font }}" - - ##### "BRIGHTNESS" Value ##### - - if: - - condition: template - value_template: "{{ btn_bri_txt == 0 }}" - then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ component_to_update }}bri" - message: " " - else: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: "{{ component_to_update }}bri" - message: "{{ btn_bri_txt }}" - + - *variables-page_buttons + - variables: + buttonpage: "{{ nextion.pages.current }}" + - repeat: + for_each: "{{ button_pages_buttons | selectattr('component', 'defined') | selectattr('component', 'match', buttonpage) | selectattr('entity', 'defined') | selectattr('entity', 'eq', trigger.entity_id) | list }}" + sequence: *display-button_page_button ##### release button/scene (stateless) ##### - - if: - - condition: template - value_template: '{{ trigger.to_state.entity_id is match "button." or trigger.to_state.entity_id is match "input_button." or trigger.to_state.entity_id is match "scene." }}' + - if: "{{ trigger.to_state.entity_id is match 'button.' or trigger.to_state.entity_id is match 'input_button.' or trigger.to_state.entity_id is match 'scene.' }}" then: - delay: milliseconds: "1000" - - variables: - btn_pic: >- - {%- if trigger.to_state.entity_id is match "button." -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "input_button." -%} {{ button_off }} - {%- elif trigger.to_state.entity_id is match "scene." -%} {{ button_off }} - {%- endif -%} - btn_bg: '{{ color_02 }}' - btn_txt_font: '{{ color_01 }}' - - ##### Button PIC ##### - - service: "{{ command_printf }}" - data: - cmd: "{{ component_to_update }}pic.pic={{ btn_pic }}" - - ##### LABEL Background ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_background_color }}" - data: - component: "{{ component_to_update }}text" - message: "{{ btn_bg }}" - - ##### TEXT Font Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: "{{ component_to_update }}text" - message: "{{ btn_txt_font }}" - - ##### BRIGHTNESS Background Color ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_background_color }}" - data: - component: "{{ component_to_update }}bri" - message: "{{ btn_bg }}" - - # ##### UPDATE LIGHTSETTING / COVERSETTING PAGE - # - choose: - # ##### LIGHTSETTINGS PAGE - LIGHT Entity ##### - # - conditions: - # - condition: template - # # value_template: '{{ entity_long is match "light." }}' TODO - # value_template: '{{ states(current_page) == page_lightsettings }}' - # sequence: - # ##### LIGHT ICON - ON / OFF ##### - # - variables: - # lightsettings_icon_font: >- - # {%- if entity_long_icon |length > 0 -%} {{ entity_long_icon }} - # {%- else -%} {{ button_icon_light }} - # {%- endif -%} - # lightsettings_icon_font_color: >- - # {%- if states(entity_long) == 'on' -%} {{ entity_long_icon_color }} - # {%- else -%} {{ color_03 }} - # {%- endif -%} - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" - # data: - # component: lightsettings.icon_state - # message: "{{ lightsettings_icon_font }}" - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_font_color }}" - # data: - # component: lightsettings.icon_state - # message: "{{ lightsettings_icon_font_color }}" - - # # ##### LIGHT ON / OFF ##### - # # - choose: - # # ##### LIGHT Settings ON ##### - # # - conditions: - # # - condition: template - # # value_template: '{{ states(entity_long) == "on" }}' - # # sequence: - # # ##### LIGHT Brightness Slider HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_slider_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_value }}" - # # data: - # # component: lightsettings.lightslider - # # message: '{{ (state_attr(entity_long, "brightness") | int ) |round(0) }}' - - # # ##### LIGHT Temp Slider HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_slider_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_value }}" - # # data: - # # component: lightsettings.tempslider - # # message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' - - # # ##### LIGHT Brightness Value HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_value_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.light_value - # # message: '{{ (state_attr(entity_long, "brightness") | int * 100 / 255) |round(0) }}%' - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.light_value_2 - # # message: '{{ (state_attr(entity_long, "brightness") | int * 100 / 255) |round(0) }}%' - - # # ##### LIGHT Temp Value HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_value_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.temp_value - # # message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.temp_value_2 - # # message: '{{ (state_attr(entity_long, "color_temp") | int ) |round(0) }}' - - # # ##### LIGHT SETTINGS - OFF ##### - # # - conditions: - # # - condition: template - # # value_template: '{{ states(entity_long) == "off" }}' - # # sequence: - # # ##### LIGHT Brightness Slider HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_slider_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_value }}" - # # data: - # # component: lightsettings.lightslider - # # message: '0' - - # # ##### LIGHT Brightness Value HA Sync - YES ##### - # # - if: - # # - condition: template - # # value_template: '{{ sync_value_ha == "select_yes" }}' - # # then: - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.light_value - # # message: '0 %' - # # - delay: - # # milliseconds: "{{ delay_value }}" - # # - service: "{{ command_text_printf }}" - # # data: - # # component: lightsettings.light_value_2 - # # message: '0 %' - - # ##### COVERSETTINGS PAGE - COVER Entity ##### - # - conditions: - # - condition: template - # # value_template: '{{ entity_long is match "cover." }}' TODO - # value_template: '{{ states(current_page) == page_coversettings }}' - # sequence: - # ##### COVER ICON - ON / OFF ##### - # - variables: - # coversettings_icon_font: >- - # {%- if entity_long_icon |length > 0 -%} {{ entity_long_icon }} - # {%- else -%} {{ button_icon_cover }} - # {%- endif -%} - # coversettings_icon_font_color: >- - # {%- if states(entity_long) == 'open' -%} {{ entity_long_icon_color }} - # {%- else -%} {{ color_03 }} - # {%- endif -%} - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" - # data: - # component: coversettings.icon_state - # message: "{{ coversettings_icon_font }}" - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_font_color }}" - # data: - # component: coversettings.icon_state - # message: "{{ coversettings_icon_font_color }}" - - # ##### COVER OPEN ##### - # - choose: - # - conditions: - # - condition: template - # value_template: '{{ states(entity_long) == "open" }}' - # sequence: - # ##### Cover Slider HA Sync - YES ##### - # - if: - # - condition: template - # value_template: '{{ sync_slider_ha == "select_yes" }}' - # then: - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_value }}" - # data: - # component: coversettings.coverslider - # message: '{{ (state_attr(entity_long, "current_position") | int ) |round(0) }}' - - # ##### Cover Value HA Sync - YES ##### - # - if: - # - condition: template - # value_template: '{{ sync_value_ha == "select_yes" }}' - # then: - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" - # data: - # component: coversettings.cover_value - # message: '{{ (state_attr(entity_long, "current_position") | int ) |round(0) }} %' - - # ##### Cover - Closed ##### - # - conditions: - # - condition: template - # value_template: '{{ states(entity_long) == "closed" }}' - # sequence: - # ##### Cover Slider HA Sync - YES ##### - # - if: - # - condition: template - # value_template: '{{ sync_slider_ha == "select_yes" }}' - # then: - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_value }}" - # data: - # component: coversettings.coverslider - # message: '0' - - # ##### Cover Value HA Sync - YES ##### - # - if: - # - condition: template - # value_template: '{{ sync_value_ha == "select_yes" }}' - # then: - # - delay: - # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" - # data: - # component: coversettings.cover_value - # message: '0 %' ##### SHORT PRESS BUTTON PAGE - toggle enities ##### - - conditions: + - alias: Button page - Short press + conditions: - condition: trigger id: short_press - - condition: template - value_template: '{{ states(current_page) == page_buttonpage01 or states(current_page) == page_buttonpage02 or states(current_page) == page_buttonpage03 or states(current_page) == page_buttonpage04}}' + - "{{ nextion.pages.current in nextion.pages.buttonpages }}" sequence: + - *variables-page_buttons - variables: ##### Entity - Page Button - Toggle Entity ##### - entity_short: >- - {%- if states(last_click) == "releasebuttonpage01button01" -%} {{ entity01 }} - {%- elif states(last_click) == "releasebuttonpage01button02" -%} {{ entity02 }} - {%- elif states(last_click) == "releasebuttonpage01button03" -%} {{ entity03 }} - {%- elif states(last_click) == "releasebuttonpage01button04" -%} {{ entity04 }} - {%- elif states(last_click) == "releasebuttonpage01button05" -%} {{ entity05 }} - {%- elif states(last_click) == "releasebuttonpage01button06" -%} {{ entity06 }} - {%- elif states(last_click) == "releasebuttonpage01button07" -%} {{ entity07 }} - {%- elif states(last_click) == "releasebuttonpage01button08" -%} {{ entity08 }} - {%- elif states(last_click) == "releasebuttonpage02button01" -%} {{ entity09 }} - {%- elif states(last_click) == "releasebuttonpage02button02" -%} {{ entity10 }} - {%- elif states(last_click) == "releasebuttonpage02button03" -%} {{ entity11 }} - {%- elif states(last_click) == "releasebuttonpage02button04" -%} {{ entity12 }} - {%- elif states(last_click) == "releasebuttonpage02button05" -%} {{ entity13 }} - {%- elif states(last_click) == "releasebuttonpage02button06" -%} {{ entity14 }} - {%- elif states(last_click) == "releasebuttonpage02button07" -%} {{ entity15 }} - {%- elif states(last_click) == "releasebuttonpage02button08" -%} {{ entity16 }} - {%- elif states(last_click) == "releasebuttonpage03button01" -%} {{ entity17 }} - {%- elif states(last_click) == "releasebuttonpage03button02" -%} {{ entity18 }} - {%- elif states(last_click) == "releasebuttonpage03button03" -%} {{ entity19 }} - {%- elif states(last_click) == "releasebuttonpage03button04" -%} {{ entity20 }} - {%- elif states(last_click) == "releasebuttonpage03button05" -%} {{ entity21 }} - {%- elif states(last_click) == "releasebuttonpage03button06" -%} {{ entity22 }} - {%- elif states(last_click) == "releasebuttonpage03button07" -%} {{ entity23 }} - {%- elif states(last_click) == "releasebuttonpage03button08" -%} {{ entity24 }} - {%- elif states(last_click) == "releasebuttonpage04button01" -%} {{ entity25 }} - {%- elif states(last_click) == "releasebuttonpage04button02" -%} {{ entity26 }} - {%- elif states(last_click) == "releasebuttonpage04button03" -%} {{ entity27 }} - {%- elif states(last_click) == "releasebuttonpage04button04" -%} {{ entity28 }} - {%- elif states(last_click) == "releasebuttonpage04button05" -%} {{ entity29 }} - {%- elif states(last_click) == "releasebuttonpage04button06" -%} {{ entity30 }} - {%- elif states(last_click) == "releasebuttonpage04button07" -%} {{ entity31 }} - {%- elif states(last_click) == "releasebuttonpage04button08" -%} {{ entity32 }} - {%- endif -%} - entity_confirm: >- - {%- if states(last_click) == "releasebuttonpage01button01" -%} {{ entity01_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button02" -%} {{ entity02_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button03" -%} {{ entity03_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button04" -%} {{ entity04_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button05" -%} {{ entity05_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button06" -%} {{ entity06_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button07" -%} {{ entity07_confirm }} - {%- elif states(last_click) == "releasebuttonpage01button08" -%} {{ entity08_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button01" -%} {{ entity09_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button02" -%} {{ entity10_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button03" -%} {{ entity11_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button04" -%} {{ entity12_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button05" -%} {{ entity13_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button06" -%} {{ entity14_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button07" -%} {{ entity15_confirm }} - {%- elif states(last_click) == "releasebuttonpage02button08" -%} {{ entity16_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button01" -%} {{ entity17_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button02" -%} {{ entity18_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button03" -%} {{ entity19_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button04" -%} {{ entity20_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button05" -%} {{ entity21_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button06" -%} {{ entity22_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button07" -%} {{ entity23_confirm }} - {%- elif states(last_click) == "releasebuttonpage03button08" -%} {{ entity24_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button01" -%} {{ entity25_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button02" -%} {{ entity26_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button03" -%} {{ entity27_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button04" -%} {{ entity28_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button05" -%} {{ entity29_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button06" -%} {{ entity30_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button07" -%} {{ entity31_confirm }} - {%- elif states(last_click) == "releasebuttonpage04button08" -%} {{ entity32_confirm }} - {%- endif -%} - - condition: template - value_template: '{{ entity_short |length > 0 and entity_short is not match "person." and entity_short is not match "binary_sensor." }}' - - if: - - condition: template - value_template: '{{ entity_short is match "climate." }}' + last_click_state: "{{ states(last_click) | default('unavailable') if last_click is string else 'unavailable' }}" + last_click_coordinates: "{{ last_click_state.replace('releasebuttonpage', '').split('button') if last_click_state not in ['unavailable', 'unknown', None] else [-1, -1] }}" + last_click_entity_index: "{{ (last_click_coordinates[0] | int(-99) -1)*8 + last_click_coordinates[1] | int(-99) - 1 }}" + - condition: "{{ last_click_entity_index > 0 }}" + - variables: + last_click_button: "{{ button_pages_buttons[last_click_entity_index] | default([]) }}" + entity_short: "{{ last_click_button.entity | default('unavailable') if last_click_button and last_click_button.entity is defined }}" + entity_domain: "{{ (entity_short.split('.')[0] | default('unknown')) if entity_short is string and entity_short | length > 0 else 'unknown' }}" + - condition: "{{ entity_domain not in ['unknown', 'person', 'binary_sensor', 'sensor'] }}" + - if: "{{ entity_domain == 'climate' }}" then: - variables: - entity_long: '{{ entity_short }}' - entity_long_name: >- - {%- if states(entity_short) == 'unavailable' -%} {{ entity_short }} - {%- else -%} {{ state_attr(entity_short, "friendly_name")| default('no name') }} - {%- endif -%} - entity_back: '{{ states(current_page) }}' - - service: '{{ command_set_settings_entity }}' + entity_long: "{{ entity_short }}" + entity_short_state: "{{ states(entity_short) | default('unavailable') if entity_short is string else 'unavailable' }}" + entity_long_name: "{{ entity_short if entity_short_state in ['unavailable', 'unknown'] else state_attr(entity_short, 'friendly_name') | default(mui[language].no_name) }}" + entity_back: "{{ nextion.pages.current }}" + - service: "{{ nextion.commands.set_settings_entity }}" data: - entity: '{{ entity_long }},{{ entity_back }},{{ entity_long_name }}' - - condition: template - value_template: '{{ entity_short is not match "climate." }}' - - if: - - condition: template - value_template: "{{ entity_confirm }}" - then: - - variables: - buttonpage: '{{ states(current_page) }}' - btn_entity_name: >- - {%- if state_attr(entity_short, "friendly_name") != None -%} {{ state_attr(entity_short, "friendly_name") }} - {%- elif state_attr(entity_short, "name") != None -%} {{ state_attr(entity_short, "name") }} - {%- else -%} "unknown" - {%- endif -%} - #### turn on switch confirmation_message - - service: switch.turn_on - data: - entity_id: '{{ confirmation_message }}' - - service: "{{ command_printf }}" - data: - cmd: "page {{ page_notification }}" - - service: "{{ command_text_printf }}" - data: - component: notification.notifi_text01 - message: "{{ btn_entity_name }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: notification.notifi_label - message: "{{ mui[language].please_confirm }}" - - wait_template: "{{ is_state(last_click, ['notificationacceptrelease','notificationclearrelease','homepage']) }}" - timeout: - seconds: 10 - continue_on_timeout: true - - choose: - - conditions: "{{ is_state(last_click, 'notificationacceptrelease') }}" - sequence: - - service: "{{ command_printf }}" - data: - cmd: "page {{ buttonpage }}" - - service: switch.turn_off - data: - entity_id: '{{ confirmation_message }}' - - service: >- - {% if entity_short is match 'light.' %} - light.toggle - {% elif entity_short is match 'switch.' %} - switch.toggle - {% elif entity_short is match 'cover.' %} - cover.toggle - {% elif entity_short is match 'input_boolean.' %} - input_boolean.toggle - {% elif entity_short is match 'automation.' %} - automation.toggle - {% elif entity_short is match 'button.' %} - button.press - {% elif entity_short is match 'input_button.' %} - input_button.press - {% elif entity_short is match 'scene.' %} - scene.turn_on - {% elif entity_short is match 'script.' %} - script.turn_on - {% elif entity_short is match 'fan.' %} - fan.toggle - {% endif %} - data: - entity_id: "{{ entity_short }}" - - - conditions: "{{ is_state(last_click, 'notificationclearrelease') }}" - sequence: - - service: "{{ command_printf }}" - data: - cmd: "page {{ buttonpage }}" - - service: switch.turn_off - data: - entity_id: '{{ confirmation_message }}' - - - conditions: "{{ is_state(last_click, 'homepage') }}" - sequence: - - service: switch.turn_off - data: - entity_id: '{{ confirmation_message }}' - - default: - - service: switch.turn_off - data: - entity_id: '{{ confirmation_message }}' - - service: "{{ command_printf }}" - data: - cmd: "page {{ page_home }}" - + entity: "{{ entity_long }},{{ entity_back }},{{ entity_long_name }}" else: - - service: >- - {% if entity_short is match 'light.' %} - light.toggle - {% elif entity_short is match 'switch.' %} - switch.toggle - {% elif entity_short is match 'cover.' %} - cover.toggle - {% elif entity_short is match 'input_boolean.' %} - input_boolean.toggle - {% elif entity_short is match 'automation.' %} - automation.toggle - {% elif entity_short is match 'button.' %} - button.press - {% elif entity_short is match 'input_button.' %} - input_button.press - {% elif entity_short is match 'scene.' %} - scene.turn_on - {% elif entity_short is match 'script.' %} - script.turn_on - {% elif entity_short is match 'fan.' %} - fan.toggle - {% endif %} - data: - entity_id: "{{ entity_short }}" + - if: "{{ last_click_button.confirm }}" + then: + - variables: + buttonpage: "{{ nextion.pages.current }}" + btn_entity_name: >- + {%- if state_attr(entity_short, 'friendly_name') != None -%} {{ state_attr(entity_short, 'friendly_name') }} + {%- elif state_attr(entity_short, 'name') != None -%} {{ state_attr(entity_short, 'name') }} + {%- else -%} 'unknown' + {%- endif -%} + #### turn on switch confirmation_message + - service: switch.turn_on + data: + entity_id: "{{ confirmation_message }}" + - service: "{{ nextion.commands.printf }}" + data: + cmd: "page {{ nextion.pages.notification }}" + - service: "{{ nextion.commands.text_printf }}" + data: + component: notification.notifi_text01 + message: "{{ btn_entity_name }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" + data: + component: notification.notifi_label + message: "{{ mui[language].please_confirm }}" + - wait_template: "{{ is_state(last_click, ['notificationacceptrelease', 'notificationclearrelease', 'homepage']) }}" + timeout: + seconds: 10 + continue_on_timeout: true + - choose: + - conditions: "{{ is_state(last_click, 'notificationacceptrelease') }}" + sequence: + - service: "{{ nextion.commands.printf }}" + data: + cmd: "page {{ buttonpage }}" + - service: switch.turn_off + data: + entity_id: "{{ confirmation_message }}" + - &service-button_changed + service: >- + {% if entity_domain in ['light', 'switch', 'cover', 'input_boolean', 'automation', 'fan'] %} + {{ entity_domain }}.toggle + {% elif entity_domain in ['button', 'input_button'] %} + {{ entity_domain }}.press + {% elif entity_domain in ['scene', 'script'] %} + {{ entity_domain }}.turn_on + {% else %} + homeassistant.update_entity + {% endif %} + data: + entity_id: "{{ entity_short }}" + continue_on_error: true + - conditions: "{{ is_state(last_click, 'notificationclearrelease') }}" + sequence: + - service: "{{ nextion.commands.printf }}" + data: + cmd: "page {{ buttonpage }}" + - service: switch.turn_off + data: + entity_id: "{{ confirmation_message }}" + - conditions: "{{ is_state(last_click, 'homepage') }}" + sequence: + - service: switch.turn_off + data: + entity_id: "{{ confirmation_message }}" + default: + - service: switch.turn_off + data: + entity_id: "{{ confirmation_message }}" + - service: "{{ nextion.commands.printf }}" + data: + cmd: "page {{ nextion.pages.home }}" + else: + - *service-button_changed ##### LONG PRESS BUTTON PAGE - save entity for settings pages ##### - - conditions: + - alias: Button page - Long press + conditions: - condition: trigger id: long_press - - condition: template - value_template: '{{ states(current_page) == page_buttonpage01 or states(current_page) == page_buttonpage02 or states(current_page) == page_buttonpage03 or states(current_page) == page_buttonpage04}}' + - "{{ nextion.pages.current in nextion.pages.buttonpages }}" sequence: + - *variables-page_buttons - variables: + last_click_state: "{{ trigger.to_state.state }}" + last_click_coordinates: "{{ last_click_state.replace('pressbuttonpage', '').split('button') }}" + last_click_entity_index: "{{ (last_click_coordinates[0] | int(-99) -1)*8 + last_click_coordinates[1] | int(-99) - 1 }}" + last_click_button: "{{ button_pages_buttons[last_click_entity_index] }}" ##### Long Press Entity ##### - entity_long: >- - {%- if trigger.to_state.state == "pressbuttonpage01button01" -%} {{ entity01 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button02" -%} {{ entity02 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button03" -%} {{ entity03 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button04" -%} {{ entity04 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button05" -%} {{ entity05 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button06" -%} {{ entity06 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button07" -%} {{ entity07 }} - {%- elif trigger.to_state.state == "pressbuttonpage01button08" -%} {{ entity08 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button01" -%} {{ entity09 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button02" -%} {{ entity10 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button03" -%} {{ entity11 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button04" -%} {{ entity12 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button05" -%} {{ entity13 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button06" -%} {{ entity14 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button07" -%} {{ entity15 }} - {%- elif trigger.to_state.state == "pressbuttonpage02button08" -%} {{ entity16 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button01" -%} {{ entity17 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button02" -%} {{ entity18 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button03" -%} {{ entity19 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button04" -%} {{ entity20 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button05" -%} {{ entity21 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button06" -%} {{ entity22 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button07" -%} {{ entity23 }} - {%- elif trigger.to_state.state == "pressbuttonpage03button08" -%} {{ entity24 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button01" -%} {{ entity25 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button02" -%} {{ entity26 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button03" -%} {{ entity27 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button04" -%} {{ entity28 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button05" -%} {{ entity29 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button06" -%} {{ entity30 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button07" -%} {{ entity31 }} - {%- elif trigger.to_state.state == "pressbuttonpage04button08" -%} {{ entity32 }} - {%- endif -%} - + entity_long: "{{ last_click_button.entity }}" + entity_domain: "{{ (entity_long.split('.')[0] | default('unknown')) if entity_long | length > 0 else 'unknown' }}" ##### Long Press Entity Name ##### - entity_long_name: >- - {%- if trigger.to_state.state == "pressbuttonpage01button01" -%} {{ entity01_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button02" -%} {{ entity02_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button03" -%} {{ entity03_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button04" -%} {{ entity04_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button05" -%} {{ entity05_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button06" -%} {{ entity06_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button07" -%} {{ entity07_name }} - {%- elif trigger.to_state.state == "pressbuttonpage01button08" -%} {{ entity08_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button01" -%} {{ entity09_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button02" -%} {{ entity10_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button03" -%} {{ entity11_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button04" -%} {{ entity12_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button05" -%} {{ entity13_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button06" -%} {{ entity14_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button07" -%} {{ entity15_name }} - {%- elif trigger.to_state.state == "pressbuttonpage02button08" -%} {{ entity16_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button01" -%} {{ entity17_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button02" -%} {{ entity18_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button03" -%} {{ entity19_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button04" -%} {{ entity20_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button05" -%} {{ entity21_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button06" -%} {{ entity22_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button07" -%} {{ entity23_name }} - {%- elif trigger.to_state.state == "pressbuttonpage03button08" -%} {{ entity24_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button01" -%} {{ entity25_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button02" -%} {{ entity26_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button03" -%} {{ entity27_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button04" -%} {{ entity28_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button05" -%} {{ entity29_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button06" -%} {{ entity30_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button07" -%} {{ entity31_name }} - {%- elif trigger.to_state.state == "pressbuttonpage04button08" -%} {{ entity32_name }} - {%- endif -%} - + entity_long_name: "{{ last_click_button.name }}" ##### Long Press Entity Icon ##### - entity_long_icon: >- - {%- if trigger.to_state.state == "pressbuttonpage01button01" -%} {{ entity01_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button02" -%} {{ entity02_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button03" -%} {{ entity03_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button04" -%} {{ entity04_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button05" -%} {{ entity05_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button06" -%} {{ entity06_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button07" -%} {{ entity07_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage01button08" -%} {{ entity08_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button01" -%} {{ entity09_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button02" -%} {{ entity10_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button03" -%} {{ entity11_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button04" -%} {{ entity12_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button05" -%} {{ entity13_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button06" -%} {{ entity14_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button07" -%} {{ entity15_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage02button08" -%} {{ entity16_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button01" -%} {{ entity17_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button02" -%} {{ entity18_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button03" -%} {{ entity19_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button04" -%} {{ entity20_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button05" -%} {{ entity21_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button06" -%} {{ entity22_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button07" -%} {{ entity23_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage03button08" -%} {{ entity24_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button01" -%} {{ entity25_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button02" -%} {{ entity26_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button03" -%} {{ entity27_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button04" -%} {{ entity28_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button05" -%} {{ entity29_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button06" -%} {{ entity30_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button07" -%} {{ entity31_icon }} - {%- elif trigger.to_state.state == "pressbuttonpage04button08" -%} {{ entity32_icon }} - {%- endif -%} - + entity_long_icon: "{{ last_click_button.icon }}" ##### Long Press Entity Icon Color ##### - entity_long_icon_color: >- - {%- if trigger.to_state.state == "pressbuttonpage01button01" -%} {{ entity01_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button02" -%} {{ entity02_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button03" -%} {{ entity03_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button04" -%} {{ entity04_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button05" -%} {{ entity05_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button06" -%} {{ entity06_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button07" -%} {{ entity07_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage01button08" -%} {{ entity08_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button01" -%} {{ entity09_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button02" -%} {{ entity10_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button03" -%} {{ entity11_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button04" -%} {{ entity12_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button05" -%} {{ entity13_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button06" -%} {{ entity14_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button07" -%} {{ entity15_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage02button08" -%} {{ entity16_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button01" -%} {{ entity17_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button02" -%} {{ entity18_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button03" -%} {{ entity19_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button04" -%} {{ entity20_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button05" -%} {{ entity21_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button06" -%} {{ entity22_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button07" -%} {{ entity23_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage03button08" -%} {{ entity24_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button01" -%} {{ entity25_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button02" -%} {{ entity26_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button03" -%} {{ entity27_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button04" -%} {{ entity28_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button05" -%} {{ entity29_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button06" -%} {{ entity30_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button07" -%} {{ entity31_icon_color }} - {%- elif trigger.to_state.state == "pressbuttonpage04button08" -%} {{ entity32_icon_color }} - {%- endif -%} - - + entity_long_icon_color: "{{ last_click_button.icon_color_rgb if is_number(last_click_button.icon_color_rgb) else ((last_click_button.icon_color_rgb[0] //(2**3)) *(2**11))+((last_click_button.icon_color_rgb[1] //(2**2)) *(2**5))+(last_click_button.icon_color_rgb[2] //(2**3)) }}" ##### Current Page ##### - entity_back: '{{ states(current_page) }}' - - service: '{{ command_set_settings_entity }}' + entity_back: "{{ nextion.pages.current }}" + - service: "{{ nextion.commands.set_settings_entity }}" data: - entity: '{{ entity_long }},{{ entity_back }},{{ entity_long_name }},{{ entity_long_icon }},{{ entity_long_icon_color }}' + entity: "{{ entity_long }},{{ entity_back }},{{ entity_long_name }},{{ entity_long_icon }},{{ entity_long_icon_color }}" ##### LASTCLICK_LIGHTSETTINGS - changes on page lightsettings ##### - - conditions: + - alias: Changes on page lightsettings + conditions: - condition: trigger id: light_settings - - condition: template - value_template: "{{ states(current_page) == page_lightsettings }}" + - "{{ nextion.pages.current == nextion.pages.light }}" sequence: - choose: ##### Page Lightsettings - Brightness Slider MOVE ##### - conditions: - - condition: template - #value_template: '{{ trigger.event.data.new_state.state is match "brightness\d+" and trigger.event.data.new_state.state == states(last_click_lightsettings) }}' - value_template: '{{ trigger.event.data.new_state.state is match "brightness\d+" }}' + #- '{{ trigger.event.data.new_state.state is match "brightness\d+" and trigger.event.data.new_state.state == states(last_click_lightsettings) }}' + - '{{ trigger.event.data.new_state.state is match "brightness\d+" }}' sequence: - service: light.turn_on data: entity_id: "{{ entity_long }}" - brightness: '{{ (trigger.event.data.new_state.state |replace("brightness","") | int / 100 * 255) |round(0) }}' + brightness: "{{ (trigger.event.data.new_state.state | replace('brightness','') | int / 100 * 255) | round(0) }}" #### wird nicht mehr benÃļtigt, da es im nextion editor nun direkt gemacht wird # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: lightsettings.light_value - # message: '{{ (trigger.event.data.new_state.state |replace("brightness","") | int * 100 /255) |round(0) }}%' + # message: "{{ (trigger.event.data.new_state.state | replace('brightness','') | int * 100 /255) | round(0) }}%' # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: lightsettings.light_value_2 - # message: '{{ (trigger.event.data.new_state.state |replace("brightness","") | int * 100 /255) |round(0) }}%' + # message: "{{ (trigger.event.data.new_state.state | replace('brightness','') | int * 100 /255) | round(0) }}%' - # value_template: '{{ states(last_click_lightsettings) is match "brightness\d+" }}' + # value_template: "{{ states(last_click_lightsettings) is match 'brightness\d+' }}" # sequence: # - service: light.turn_on # data: - # entity_id: '{{ entity_long }}' - # brightness: '{{ states(last_click_lightsettings) |replace("brightness","") | int }}' - # - service: "{{ command_text_printf }}" + # entity_id: "{{ entity_long }}" + # brightness: "{{ states(last_click_lightsettings) | replace('brightness','') | int }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: lightsettings.light_value - # message: '{{ (states(last_click_lightsettings) |replace("brightness","") | int * 100 /255) |round(0) }}' + # message: "{{ (states(last_click_lightsettings) | replace('brightness','') | int * 100 /255) | round(0) }}" ##### Page Lightsettings - color_Temp Slider MOVE ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state is match "colortemp\d+" and trigger.event.data.new_state.state == states(last_click_lightsettings) }}' + - '{{ trigger.event.data.new_state.state is match "colortemp\d+" and trigger.event.data.new_state.state == (states(last_click_lightsettings) | default("unavailable") if last_click_lightsettings is string else "unavailable") }}' sequence: - service: light.turn_on data: entity_id: "{{ entity_long }}" - color_temp: '{{ trigger.event.data.new_state.state |replace("colortemp","") | int }}' + color_temp: "{{ trigger.event.data.new_state.state | replace('colortemp','') | int }}" #### wird nicht mehr benÃļtigt, da es im nextion editor nun direkt gemacht wird # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: lightsettings.temp_value - # message: '{{ trigger.event.data.new_state.state |replace("colortemp","") | int }}' + # message: "{{ trigger.event.data.new_state.state | replace('colortemp','') | int }}" # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: lightsettings.temp_value_2 - # message: '{{ trigger.event.data.new_state.state |replace("colortemp","") | int }}' + # message: "{{ trigger.event.data.new_state.state | replace('colortemp','') | int }}" ##### Page Lightsettings - Color RGB Slider MOVE ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state is match "\d+,\d+,\d+" }}' + - '{{ trigger.event.data.new_state.state is match "\d+,\d+,\d+" }}' sequence: - service: light.turn_on data: entity_id: "{{ entity_long }}" - rgb_color: '{{ trigger.event.data.new_state.state.split(",") }}' + rgb_color: "{{ trigger.event.data.new_state.state.split(',') }}" ##### Page Lightsettings - Close Lightsetting Page ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "releaselightsettingsclose" }}' + - "{{ trigger.event.data.new_state.state == 'releaselightsettingsclose' }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: "page {{ entity_back }}" ##### LASTCLICK_COVERSETTINGS - changes on page coversettings ##### - - conditions: + - alias: Changes on page coversettings + conditions: - condition: trigger id: cover_settings - - condition: template - value_template: "{{ states(current_page) == page_coversettings }}" + - "{{ nextion.pages.current == nextion.pages.cover }}" sequence: - choose: ##### Page Coversettings - Cover Slider MOVE ##### - conditions: - - condition: template - #value_template: '{{ trigger.event.data.new_state.state is match "coverposition\d+" and trigger.event.data.new_state.state == states(last_click_coversettings) }}' - value_template: '{{ trigger.event.data.new_state.state is match "coverposition\d+" }}' + # - "{{ trigger.event.data.new_state.state is match 'coverposition\d+' and trigger.event.data.new_state.state == states(last_click_coversettings) }}" + - '{{ trigger.event.data.new_state.state is match "coverposition\d+" }}' sequence: - service: cover.set_cover_position data: entity_id: "{{ entity_long }}" - position: '{{ trigger.event.data.new_state.state |replace("coverposition","") | int }}' + position: "{{ trigger.event.data.new_state.state | replace('coverposition','') | int }}" #### wird nicht mehr benÃļtigt, da es im nextion editor nun direkt gemacht wird # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: coversettings.cover_value - # message: '{{ trigger.event.data.new_state.state |replace("coverposition","") | int }} %' + # message: "{{ trigger.event.data.new_state.state | replace('coverposition','') | int }} %' # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_text_printf }}" + # - service: "{{ nextion.commands.text_printf }}" # data: # component: coversettings.cover_value_2 - # message: '{{ trigger.event.data.new_state.state |replace("coverposition","") | int }} %' + # message: "{{ trigger.event.data.new_state.state | replace('coverposition','') | int }} %' ##### Page Coversettings - Cover CLOSE Button ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "cover_close_press" }}' + - "{{ trigger.event.data.new_state.state == 'cover_close_press' }}" sequence: - service: cover.close_cover data: @@ -7203,8 +5305,7 @@ action: ##### Page Coversettings - Cover OPEN Button ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "cover_open_press" }}' + - "{{ trigger.event.data.new_state.state == 'cover_open_press' }}" sequence: - service: cover.open_cover data: @@ -7212,8 +5313,7 @@ action: ##### Page Coversettings - Cover STOP Button ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "cover_stop_press" }}' + - "{{ trigger.event.data.new_state.state == 'cover_stop_press' }}" sequence: - service: cover.stop_cover data: @@ -7221,23 +5321,24 @@ action: ##### Page Coversettings - Close Coversettings Page ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "releasecoversettingsclose" }}' + - "{{ trigger.event.data.new_state.state == 'releasecoversettingsclose' }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: "page {{ entity_back }}" ##### LASTCLICK_CLIMATESETTINGS - changes on page climatesettings ##### - - conditions: + - alias: Changes on page climatesettings + conditions: - condition: trigger id: climate_settings - - condition: template - value_template: "{{ states(current_page) == page_climate }}" + - "{{ nextion.pages.current == nextion.pages.climate }}" sequence: + - variables: + entity_long_state: "{{ states(entity_long) | default('unavailable') if entity_long is string else 'unavailable' }}" - choose: ##### Page Climatesettings - hotwater ##### - - conditions: '{{ trigger.event.data.new_state.state == "releasehotwater" }}' + - conditions: "{{ trigger.event.data.new_state.state == 'releasehotwater' }}" sequence: - service: >- {% if hotwatercharge is match 'switch.' %} @@ -7249,15 +5350,13 @@ action: entity_id: "{{ hotwatercharge }}" ##### Page Climatesettings - heating ##### - - conditions: '{{ trigger.event.data.new_state.state == "releaseheating" }}' + - conditions: "{{ trigger.event.data.new_state.state == 'releaseheating' }}" sequence: - - if: - - condition: template - value_template: '{{ states(entity_long) == "off" }}' + - if: "{{ entity_long_state == 'off' }}" then: - service: climate.turn_on ############ data: - entity_id: '{{ entity_long }}' + entity_id: "{{ entity_long }}" # - service: climate.set_temperature # data: # entity_id: !input climate @@ -7266,1046 +5365,556 @@ action: else: - service: climate.turn_off ############ data: - entity_id: '{{ entity_long }}' + entity_id: "{{ entity_long }}" # - service: climate.set_temperature # data: # entity_id: !input climate # hvac_mode: 'off' # temperature: "{{ state_attr(climate, 'temperature') }}" - ##### Page Climatesettings - decreasetemp ##### - - conditions: '{{ trigger.event.data.new_state.state == "releasedecreasetemp" }}' + ##### Page Climatesettings - increase/decrease temp ##### + - conditions: "{{ trigger.event.data.new_state.state in [ 'releaseincreasetemp', 'releasedecreasetemp'] }}" sequence: - - if: - - condition: template - value_template: '{{ states(entity_long) != "off" }}' + - variables: + delta: "{{ +0.5 if trigger.event.data.new_state.state == 'releaseincreasetemp' else -0.5 }}" + - if: "{{ entity_long_state != 'off' }}" then: - - if: - - condition: template - value_template: '{{ climate_optimistic == true }}' ## TODO - remove from here + - if: "{{ climate_optimistic == true }}" ## TODO - remove from here then: - variables: - current_setpoint: "{{ states(display_target_temperature) | round(1) if is_number(states(display_target_temperature)) else states(display_target_temperature) }}" - - service: "{{ command_thermostat_cycle }}" - data: - value: "{{ current_setpoint -0.5 }}" + current_setpoint: "{{ states(display_target_temperature) | default('unavailable') if display_target_temperature is string else 'unavailable' }}" + - if: "{{ is_number(current_setpoint) }}" + then: + - service: "{{ nextion.commands.thermostat_cycle }}" + data: + value: "{{ (current_setpoint + delta) | round(1) }}" else: - variables: - current_setpoint: "{{state_attr(entity_long, 'temperature') | round(1)}}" - - service: climate.set_temperature - data: - entity_id: '{{ entity_long }}' - #hvac_mode: 'heat' - temperature: "{{ current_setpoint -0.5 }}" - - - ##### Page Climatesettings - increasetemp ##### - - conditions: '{{ trigger.event.data.new_state.state == "releaseincreasetemp" }}' - sequence: - - if: - - condition: template - value_template: '{{ states(entity_long) != "off" }}' - then: - - variables: - current_setpoint: "{{state_attr(entity_long, 'temperature') | round(1)}}" - - if: - - condition: template - value_template: '{{ climate_optimistic == true }}' ## TODO - remove from here - then: - - variables: - current_setpoint: "{{ states(display_target_temperature) | round(1) if is_number(states(display_target_temperature)) else states(display_target_temperature) }}" - - service: "{{ command_thermostat_cycle }}" - data: - value: "{{ current_setpoint +0.5 }}" - else: - - variables: - current_setpoint: "{{state_attr(entity_long, 'temperature') | round(1)}}" - - service: climate.set_temperature - data: - entity_id: '{{ entity_long }}' - #hvac_mode: 'heat' - temperature: "{{ current_setpoint +0.5 }}" - + current_setpoint: "{{state_attr(entity_long, 'temperature') | default('unavailable') if entity_long is string else 'unavailable' }}" + - if: "{{ is_number(current_setpoint) }}" + then: + - service: climate.set_temperature + data: + entity_id: "{{ entity_long }}" + #hvac_mode: 'heat' + temperature: "{{ (current_setpoint + delta) | round(1) }}" ##### Page Climatesettings - climateslider ##### - - conditions: '{{ trigger.event.data.new_state.state is match "climateslider\d+" and trigger.event.data.new_state.state == states(last_click_climatesettings) }}' + - conditions: '{{ trigger.event.data.new_state.state is match "climateslider\d+" and trigger.event.data.new_state.state == states(last_click_climatesettings) }}' sequence: - - if: - - condition: template - value_template: '{{ states(entity_long) != "off" }}' + - if: "{{ entity_long_state != 'off' }}" then: - variables: - #climateslider: '{{ trigger.event.data.new_state.state |replace("climateslider","") | int }}' - new_setpoint: >- - {%- if trigger.event.data.new_state.state == "climateslider0" -%} 13.0 - {%- elif trigger.event.data.new_state.state == "climateslider1" -%} 13.5 - {%- elif trigger.event.data.new_state.state == "climateslider2" -%} 14 - {%- elif trigger.event.data.new_state.state == "climateslider3" -%} 14.5 - {%- elif trigger.event.data.new_state.state == "climateslider4" -%} 15 - {%- elif trigger.event.data.new_state.state == "climateslider5" -%} 15.5 - {%- elif trigger.event.data.new_state.state == "climateslider6" -%} 16 - {%- elif trigger.event.data.new_state.state == "climateslider7" -%} 16.5 - {%- elif trigger.event.data.new_state.state == "climateslider8" -%} 17 - {%- elif trigger.event.data.new_state.state == "climateslider9" -%} 17.5 - {%- elif trigger.event.data.new_state.state == "climateslider10" -%} 18 - {%- elif trigger.event.data.new_state.state == "climateslider11" -%} 18.5 - {%- elif trigger.event.data.new_state.state == "climateslider12" -%} 19 - {%- elif trigger.event.data.new_state.state == "climateslider13" -%} 19.5 - {%- elif trigger.event.data.new_state.state == "climateslider14" -%} 20 - {%- elif trigger.event.data.new_state.state == "climateslider15" -%} 20.5 - {%- elif trigger.event.data.new_state.state == "climateslider16" -%} 21 - {%- elif trigger.event.data.new_state.state == "climateslider17" -%} 21.5 - {%- elif trigger.event.data.new_state.state == "climateslider18" -%} 22 - {%- elif trigger.event.data.new_state.state == "climateslider19" -%} 22.5 - {%- elif trigger.event.data.new_state.state == "climateslider20" -%} 23 - {%- elif trigger.event.data.new_state.state == "climateslider21" -%} 23.5 - {%- elif trigger.event.data.new_state.state == "climateslider22" -%} 24 - {%- elif trigger.event.data.new_state.state == "climateslider23" -%} 24.5 - {%- elif trigger.event.data.new_state.state == "climateslider24" -%} 25 - {%- elif trigger.event.data.new_state.state == "climateslider25" -%} 25.5 - {%- elif trigger.event.data.new_state.state == "climateslider26" -%} 26 - {%- elif trigger.event.data.new_state.state == "climateslider27" -%} 26.5 - {%- elif trigger.event.data.new_state.state == "climateslider28" -%} 27 - {%- endif -%} - - if: - - condition: template - value_template: '{{ climate_optimistic == true }}' ## TODO - remove from here + climateslider: "{{ trigger.event.data.new_state.state | replace('climateslider','') | int(-1) }}" + new_setpoint: "{{ (13.0 + (climateslider * 0.5)) if climateslider >= 0 and climateslider <= 27 }}" + - if: "{{ climate_optimistic == true }}" ## TODO - remove from here then: - - service: "{{ command_thermostat_cycle }}" + - service: "{{ nextion.commands.thermostat_cycle }}" data: value: "{{ new_setpoint }}" else: - service: climate.set_temperature data: - entity_id: '{{ entity_long }}' + entity_id: "{{ entity_long }}" #hvac_mode: 'heat' temperature: "{{ new_setpoint }}" #### Page Climate - Close Climate Page ##### - conditions: - - condition: template - value_template: '{{ trigger.event.data.new_state.state == "releaseclimateclose" }}' + - "{{ trigger.event.data.new_state.state == 'releaseclimateclose' }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: "page {{ entity_back }}" - ##### TRIGGER - HOME PAGE ###### - ##### HOME PAGE - value 01 ##### - - conditions: + ##### HOME PAGE - Values ##### + - alias: Home page - Values + conditions: - condition: trigger - id: home_value01_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" + id: + - home_value01_state + - home_value02_state + - home_value03_state + - "{{ nextion.pages.current == nextion.pages.home }}" sequence: - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.value01_state - message: "{{ home_value01_label_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.value01_state - message: '{{ trigger.event.data.new_state.state |round(1) }}{{ trigger.event.data.new_state.attributes.unit_of_measurement }}' + - *variables-home_page_values + #- *display-home_page_values + - repeat: + for_each: "{{ home_page_values | selectattr('entity', 'defined') | selectattr('entity', 'eq', trigger.entity_id) | list }}" + sequence: + - *display-home_page_value - ##### HOME PAGE - value 02 ##### - - conditions: + ##### HOME PAGE - Status bar ##### + - alias: Home page - status bar + conditions: - condition: trigger - id: home_value02_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" + id: + - relay01_state + - relay02_state + - climate_state + - chip01_state + - chip02_state + - chip03_state + - chip04_state + - chip05_state + - chip06_state + - chip07_state + - "{{ nextion.pages.current == nextion.pages.home and trigger.event.data.new_state.state not in ['unavailable', 'unknown'] }}" sequence: - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.value02_state - message: "{{ home_value02_label_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.value02_state - message: '{{ trigger.event.data.new_state.state |round(1) }}{{ trigger.event.data.new_state.attributes.unit_of_measurement }}' - - ##### HOME PAGE - value 03 ##### - - conditions: - - condition: trigger - id: home_value03_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.value03_state - message: "{{ home_value03_label_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.value03_state - message: '{{ trigger.event.data.new_state.state |round(1) }}{{ trigger.event.data.new_state.attributes.unit_of_measurement }}' - - ##### CHIP RELAY 01 - statusbar 01 ##### - - conditions: - - condition: trigger - id: relay01_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_relay01: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ relay01_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_01 - message: "{{ relay01_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_01 - message: "{{ chip_relay01 }}" - - ##### CHIP RELAY 02 - statusbar 02 ##### - - conditions: - - condition: trigger - id: relay02_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_relay02: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ relay02_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_02 - message: "{{ relay02_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_02 - message: "{{ chip_relay02 }}" - - ##### CHIP HEATING - statusbar 03 ##### - - conditions: - - condition: trigger - id: climate_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_climate: >- - {%- if trigger.event.data.new_state.state == "heat" and trigger.event.data.new_state.attributes.hvac_action is defined and trigger.event.data.new_state.attributes.hvac_action == "heating" -%} {{ heat_icon }} - {%- elif trigger.event.data.new_state.state == "heat" -%} {{ thermostat_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_03 - message: "{{ thermostat_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_03 - message: "{{ chip_climate }}" - - ##### CHIP 01 - statusbar 04 ##### - - conditions: - - condition: trigger - id: chip01_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip01_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_04 - message: "{{ chip01_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_04 - message: "{{ chip_icon }}" - - ##### CHIP 02 - statusbar 05 ##### - - conditions: - - condition: trigger - id: chip02_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip02_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_05 - message: "{{ chip02_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_05 - message: "{{ chip_icon }}" - - ##### CHIP 03 - statusbar 06 ##### - - conditions: - - condition: trigger - id: chip03_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip03_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_06 - message: "{{ chip03_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_06 - message: "{{ chip_icon }}" - - ##### CHIP 04 - statusbar 07 ##### - - conditions: - - condition: trigger - id: chip04_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip04_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_07 - message: "{{ chip04_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_07 - message: "{{ chip_icon }}" - - ##### CHIP 05 - statusbar 08 ##### - - conditions: - - condition: trigger - id: chip05_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip05_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_08 - message: "{{ chip05_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_08 - message: "{{ chip_icon }}" - - ##### CHIP 06 - statusbar 09 ##### - - conditions: - - condition: trigger - id: chip06_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip06_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_09 - message: "{{ chip06_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_09 - message: "{{ chip_icon }}" - - ##### CHIP 07 - statusbar 10 ##### - - conditions: - - condition: trigger - id: chip07_state - - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" - sequence: - - variables: - chip_icon: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ chip07_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - ### ICON Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" - data: - component: home.icon_top_10 - message: "{{ chip07_icon_color }}" - ### ICON Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.icon_top_10 - message: "{{ chip_icon }}" + - *variables-home_page_status_bar + - repeat: + for_each: "{{ home_page_status_bar | selectattr('entity', 'defined') | selectattr('entity', 'eq', trigger.event.data.entity_id) | list }}" + sequence: + - *display-home_page_status_bar ##### JUMP TO - climate page ##### - - conditions: + - alias: Jump to climate page + conditions: - condition: trigger id: open_climate_page - condition: template - value_template: "{{ states(current_page) == page_home and climate |length > 0 }} " + value_template: "{{ nextion.pages.current == nextion.pages.home and climate | length > 0 }} " sequence: - variables: - entity_long: '{{ climate }}' - entity_long_name: >- - {%- if states(climate) == 'unavailable' -%} {{ climate }} - {%- else -%} {{ state_attr(climate, "friendly_name")| default('no name') }} - {%- endif -%} - entity_back: '{{ page_home }}' - - service: '{{ command_set_settings_entity }}' + entity_long: "{{ climate }}" + entity_long_state: "{{ states(climate) | default('unavailable') if climate is string else 'unavailable' }}" + entity_long_name: "{{ climate if entity_long_state in ['unavailable', 'unknown', None] else (state_attr(climate, 'friendly_name') | default(mui[language].no_name) if climate is string else mui[language].unavailable )}}" + entity_back: "{{ nextion.pages.home }}" + - service: "{{ nextion.commands.set_settings_entity }}" data: - entity: '{{ entity_long }},{{ entity_back }},{{ entity_long_name }}' + entity: "{{ entity_long }},{{ entity_back }},{{ entity_long_name }}" - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_climate }}" + cmd: "page {{ nextion.pages.climate }}" ##### JUMP TO - Weather Page ##### - - conditions: + - alias: Jump to weather page + conditions: - condition: trigger id: open_weather_page - condition: template - value_template: "{{ states(current_page) == page_home }}" + value_template: "{{ nextion.pages.current == nextion.pages.home }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_weather01 }}" + cmd: "page {{ nextion.pages.weatherpages[0] }}" ##### JUMP TO - QR Code Page ##### - - conditions: + - alias: Jump to QR code page + conditions: - condition: trigger id: open_qrcode_page - condition: template - value_template: "{{ states(current_page) == page_home and qrcode_enabled == true }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and qrcode_enabled == true }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_qrcode }}" + cmd: "page {{ nextion.pages.qrcode }}" ##### JUMP TO - ENTITY Page ##### - - conditions: + - alias: Jump to entity page + conditions: - condition: trigger id: open_entity_page - condition: template - value_template: "{{ states(current_page) == page_home and entitypages_enabled == true }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and entitypages_enabled == true }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_entitypage01 }}" + cmd: "page {{ nextion.pages.entitypages[0] }}" ##### JUMP TO - notification ##### - - conditions: + - alias: Jump to notification page + conditions: - condition: trigger id: open_notification_page - condition: template - value_template: "{{ states(current_page) == page_home and states(notification_text) |length > 0}}" + value_template: "{{ nextion.pages.current == nextion.pages.home and notification_text is string and states(notification_text) | length > 0 }}" sequence: - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_notification }}" + cmd: "page {{ nextion.pages.notification }}" #### SHOW BUTTON - notification #### - - conditions: + - alias: Show button - Notification + conditions: - condition: trigger id: - notification_text_state - notification_unread_state - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' and trigger.event.data.new_state.state != 'unknown' }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" sequence: - alias: "Set notifiy pic" variables: - set_button04_icon: >- - {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button04_icon}} - {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button04_icon }} - {%- else -%} {{ blank_icon }} - {%- endif -%} - set_button04_icon_font: >- - {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button04_icon_color01 }} - {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button04_icon_color02 }} - {%- else -%} {{ color_03 }} - {%- endif -%} + notification_text_state: "{{ states(notification_text) | default('unavailable') if notification_text is string else 'unavailable' }}" + notification_text_available: "{{ notification_text_state not in ['unavailable', 'unknown', None] }}" + notification_unread_state: "{{ states(notification_unread) | default('unavailable') if notification_unread is string else 'unavailable' }}" + set_button04_icon: "{{ page_home.buttons[3].icon if notification_unread_state in ['on', 'off'] and notification_text_available else nextion.icons.blank }}" + set_button04_icon_font: > + {{ + (page_home.buttons[3].color_rgb[notification_unread_state] if is_number(page_home.buttons[3].color_rgb[notification_unread_state]) else ((page_home.buttons[3].color_rgb[notification_unread_state][0] //(2**3)) *(2**11))+((page_home.buttons[3].color_rgb[notification_unread_state][1] //(2**2)) *(2**5))+(page_home.buttons[3].color_rgb[notification_unread_state][2] //(2**3))) + if notification_unread_state in ['on', 'off'] and notification_text_available + else nextion.colors.grey_light + }} ##### SET ICON Font - Notify ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.button04_icon message: "{{ set_button04_icon }}" ##### SET ICON Font Color - Notify ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.button04_icon message: "{{ set_button04_icon_font }}" ##### SHOW BUTTON - notification clear ##### - - conditions: + - alias: Show button - Notification clear + conditions: - condition: trigger id: btn_notificationclearrelease - condition: template - value_template: "{{ states(current_page) == page_notification and states(confirmation_message) != 'on'}}" + value_template: "{{ nextion.pages.current == nextion.pages.notification and confirmation_message is string and states(confirmation_message) | default('unavailable') != 'on' }}" sequence: - service: switch.turn_off data: entity_id: "{{ notification_unread }}" - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_home }}" + cmd: "page {{ nextion.pages.home }}" ##### SHOW BUTTON - notification accept ##### - - conditions: + - alias: Show button - Notification accept + conditions: - condition: trigger id: btn_notificationacceptrelease - condition: template - value_template: "{{ states(current_page) == page_notification and states(confirmation_message) != 'on'}}" + value_template: "{{ nextion.pages.current == nextion.pages.notification and confirmation_message is string and states(confirmation_message) | default('unavailable') != 'on' }}" sequence: - service: switch.turn_off data: entity_id: "{{ notification_unread }}" - - service: "{{ command_notification_clear }}" + - service: "{{ nextion.commands.notification_clear }}" data: {} - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: - cmd: "page {{ page_home }}" + cmd: "page {{ nextion.pages.home }}" - ##### LEFT BUTTON - press ##### - - conditions: + ##### BUTTON - press ##### + - alias: Button - Press + conditions: - condition: trigger - id: left_button_press + id: + - left_button_press + - right_button_press sequence: - - wait_template: "{{ is_state(left_button, 'off') }}" - timeout: !input hold_delay - continue_on_timeout: true - - if: - - condition: template - value_template: "{{ not wait.completed }}" - then: # Hold - - choose: - - conditions: '{{ left_button_hold_select == "Default" and left_button_entity |length > 0 }}' - sequence: - - variables: - entity_long: '{{ left_button_entity }}' - entity_long_name: >- - {%- if left_button_name |length > 0 -%} {{ left_button_name }} - {%- elif states(left_button_entity) == 'unavailable' -%} {{ left_button_entity }} - {%- else -%} {{ state_attr(left_button_entity, "friendly_name")| default('no name') }} - {%- endif -%} - entity_back: '{{ page_home }}' - entity_long_icon: >- - {%- if left_button_entity is match "light." -%} {{ button_icon_light }} - {%- elif left_button_entity is match "switch." -%} {{ button_icon_switch }} - {%- elif left_button_entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif left_button_entity is match "cover." -%} {{ button_icon_cover }} - {%- elif left_button_entity is match "automation." -%} {{ button_icon_automation }} - {%- elif left_button_entity is match "button." -%} {{ button_icon_button }} - {%- elif left_button_entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif left_button_entity is match "scene." -%} {{ button_icon_scene }} - {%- elif left_button_entity is match "script." -%} {{ button_icon_script }} - {%- elif left_button_entity is match "person." -%} {{ button_icon_person }} - {%- elif left_button_entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif left_button_entity is match "fan." -%} {{ button_icon_fan }} - {%- elif left_button_entity is match "climate." -%} {{ button_icon_climate }} - {%- endif -%} - entity_long_icon_color: 1055 - - service: '{{ command_set_settings_entity }}' - data: - entity: '{{ entity_long }},{{ entity_back }},{{ entity_long_name }},{{ entity_long_icon }},{{ entity_long_icon_color }}' - - - conditions: '{{ left_button_hold_select == "Custom Action" }}' - sequence: !input left_button_hold_custom_action - else: # Single Click - - condition: template - value_template: '{{ left_button_entity |length > 0 }}' - - service: >- - {% if left_button_entity is match 'light.' %} - light.toggle - {% elif left_button_entity is match 'switch.' %} - switch.toggle - {% elif left_button_entity is match 'cover.' %} - cover.toggle - {% elif left_button_entity is match 'input_boolean.' %} - input_boolean.toggle - {% elif left_button_entity is match 'automation.' %} - automation.toggle - {% elif left_button_entity is match 'button.' %} - button.press - {% elif left_button_entity is match 'input_button.' %} - input_button.press - {% elif left_button_entity is match 'scene.' %} - scene.turn_on - {% elif left_button_entity is match 'script.' %} - script.turn_on - {% elif left_button_entity is match 'fan.' %} - fan.toggle - {% endif %} - data: - entity_id: "{{ left_button_entity }}" - - ##### LEFT BUTTON - state ##### - - conditions: - - condition: trigger - id: left_button_state - - condition: template - value_template: "{{ states(current_page) == page_home }}" - sequence: - - ###### Left Hardware Button PIC ##### - variables: - # Hardware Button PIC - left_hardware_button_state: >- - {%- if trigger.event.data.new_state.state == 'off' -%} {{ hardware_button_pic_off }} - {%- elif trigger.event.data.new_state.state == 'on' -%} {{ hardware_button_pic_on }} - {%- endif -%} - - ##### SET Right hardware Button PIC on Home Page #### - - service: "{{ command_printf }}" - data: - cmd: home.left_bt_pic.pic={{ left_hardware_button_state }} - - ##### RIGHT BUTTON - press ##### - - conditions: - - condition: trigger - id: right_button_press - sequence: - - wait_template: "{{ is_state(right_button, 'off') }}" + button_context: "{{ page_home.hardware.buttons.left if trigger.id == 'left_button_press' else page_home.hardware.buttons.right }}" + - wait_template: "{{ is_state(left_button if trigger.id == 'left_button_press' else right_button, 'off') }}" timeout: !input hold_delay continue_on_timeout: true - - if: - - condition: template - value_template: "{{ not wait.completed }}" + - if: "{{ not wait.completed }}" then: # Hold - choose: - - conditions: '{{ right_button_hold_select == "Default" and right_button_entity |length > 0 }}' + - conditions: "{{ button_context.hold_select == 'Default' and button_context.entity | length > 0 }}" sequence: - variables: - entity_long: '{{ right_button_entity }}' + entity_long: "{{ button_context.entity }}" + button_status: "{{ states(button_context.entity) | default('unavailable') if button_context.entity is string else 'unavailable' }}" entity_long_name: >- - {%- if right_button_name |length > 0 -%} {{ right_button_name }} - {%- elif states(right_button_entity) == 'unavailable' -%} {{ right_button_entity }} - {%- else -%} {{ state_attr(right_button_entity, "friendly_name")| default('no name') }} - {%- endif -%} - entity_back: '{{ page_home }}' - entity_long_icon: >- - {%- if left_button_entity is match "light." -%} {{ button_icon_light }} - {%- elif left_button_entity is match "switch." -%} {{ button_icon_switch }} - {%- elif left_button_entity is match "input_boolean." -%} {{ button_icon_input_boolan }} - {%- elif left_button_entity is match "cover." -%} {{ button_icon_cover }} - {%- elif left_button_entity is match "automation." -%} {{ button_icon_automation }} - {%- elif left_button_entity is match "button." -%} {{ button_icon_button }} - {%- elif left_button_entity is match "input_button." -%} {{ button_icon_input_button }} - {%- elif left_button_entity is match "scene." -%} {{ button_icon_scene }} - {%- elif left_button_entity is match "script." -%} {{ button_icon_script }} - {%- elif left_button_entity is match "person." -%} {{ button_icon_person }} - {%- elif left_button_entity is match "binary_sensor." -%} {{ button_icon_binary_sensor }} - {%- elif left_button_entity is match "fan." -%} {{ button_icon_fan }} - {%- elif left_button_entity is match "climate." -%} {{ button_icon_climate }} + {%- if button_context.name | length > 0 -%} {{ button_context.name }} + {%- elif button_status in ['unavailable', 'unknown', None] -%} {{ button_context.entity }} + {%- else -%} {{ state_attr(button_context.entity, 'friendly_name') | default(mui[language].no_name) }} {%- endif -%} + entity_back: "{{ nextion.pages.home }}" + entity_long_icon: "{{ nextion.icons.buttons[button_context.entity.split('.')[0] if button_context.entity else 'unknown'] }}" entity_long_icon_color: 1055 - - service: '{{ command_set_settings_entity }}' + - service: "{{ nextion.commands.set_settings_entity }}" data: - entity: '{{ entity_long }},{{ entity_back }},{{ entity_long_name }},{{ entity_long_icon }},{{ entity_long_icon_color }}' - - - conditions: '{{ right_button_hold_select == "Custom Action" }}' + entity: "{{ entity_long }},{{ entity_back }},{{ entity_long_name }},{{ entity_long_icon }},{{ entity_long_icon_color }}" + - conditions: "{{ button_context.hold_select == 'Custom Action' and trigger.id == 'left_button_press' }}" + sequence: !input left_button_hold_custom_action + - conditions: "{{ button_context.hold_select == 'Custom Action' and trigger.id == 'right_button_press' }}" sequence: !input right_button_hold_custom_action else: # Single Click - condition: template - value_template: '{{ right_button_entity |length > 0 }}' - - service: >- - {% if right_button_entity is match 'light.' %} - light.toggle - {% elif right_button_entity is match 'switch.' %} - switch.toggle - {% elif right_button_entity is match 'cover.' %} - cover.toggle - {% elif right_button_entity is match 'input_boolean.' %} - input_boolean.toggle - {% elif right_button_entity is match 'automation.' %} - automation.toggle - {% elif right_button_entity is match 'button.' %} - button.press - {% elif right_button_entity is match 'input_button.' %} - input_button.press - {% elif right_button_entity is match 'scene.' %} - scene.turn_on - {% elif right_button_entity is match 'script.' %} - script.turn_on - {% elif right_button_entity is match 'fan.' %} - fan.toggle + value_template: "{{ button_context.entity | length > 0 }}" + - variables: + button_domain: "{{ (button_context.entity.split('.')[0] | default('unknown')) if button_context.entity | length > 0 else 'unknown' }}" + - service: > + {% if button_domain in ['light', 'switch', 'cover', 'input_boolean', 'automation', 'fan'] %} + {{ button_domain }}.toggle + {% elif button_domain in ['button', 'input_button'] %} + {{ button_domain }}.press + {% elif button_domain in ['scene', 'script'] %} + {{ button_domain }}.turn_on + {% else %} + homeassistant.update_entity {% endif %} data: - entity_id: "{{ right_button_entity }}" + entity_id: "{{ button_context.entity }}" - ##### RIGHT BUTTON - state ##### - - conditions: + ##### BUTTON - state ##### + - alias: Button - State + conditions: - condition: trigger - id: right_button_state + id: + - left_button_state + - right_button_state - condition: template - value_template: "{{ states(current_page) == page_home }}" + value_template: "{{ nextion.pages.current == nextion.pages.home }}" sequence: - - ###### Left Hardware Button PIC ##### - variables: # Hardware Button PIC - right_hardware_button_state: >- - {%- if trigger.event.data.new_state.state == 'off' -%} {{ hardware_button_pic_off }} - {%- elif trigger.event.data.new_state.state == 'on' -%} {{ hardware_button_pic_on }} - {%- endif -%} - - ##### SET Right hardware Button PIC on Home Page #### - - service: "{{ command_printf }}" + current_hardware_button_state: "{{ nextion.pics.hardware.button[trigger.to_state.state] }}" + ##### SET hardware Button PIC on Home Page #### + - service: "{{ nextion.commands.printf }}" data: - cmd: home.right_bt_pic.pic={{ right_hardware_button_state }} + cmd: "home.{{ 'left' if trigger.id == 'left_button_state' else 'right'}}_bt_pic.pic={{ current_hardware_button_state }}" ##### DATE AND TIME ##### - - conditions: + - alias: "Date & Time" + conditions: - condition: trigger id: time_state - condition: template - value_template: "{{ states(current_page) == page_home }}" + value_template: "{{ nextion.pages.current == nextion.pages.home }}" sequence: ### TIME Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.time - message: "{{ time_label_color }}" + message: "{{ page_home.general.time.label.color_rgb if is_number(page_home.general.time.label.color_rgb) else ((page_home.general.time.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.time.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.time.label.color_rgb[2] //(2**3)) }}" ### TIME Font ### - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: home.time message: "{{ time }}" ### TIME Meridiem Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.meridiem - message: "{{ time_label_color }}" + message: "{{ page_home.general.time.label.color_rgb if is_number(page_home.general.time.label.color_rgb) else ((page_home.general.time.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.time.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.time.label.color_rgb[2] //(2**3)) }}" ### TIME Meridiem Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.meridiem message: "{{ meridiem }}" ### DATE Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.date - message: "{{ date_label_color }}" + message: "{{ page_home.general.date.label.color_rgb if is_number(page_home.general.date.label.color_rgb) else ((page_home.general.date.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.date.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.date.label.color_rgb[2] //(2**3)) }}" ### DATE Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.date - message: "{{ mui_weekday_today }}" + message: "{{ (dict.values(mui[language].weekdays) | list)[now().weekday()] ~ ', ' ~ as_timestamp(now()) | timestamp_custom('%d.%m') }}" ##### OUTDOOR TEMP - entity ##### - - conditions: + - alias: Outdoor temp - Entity + conditions: - condition: trigger id: outdoortemp_state - condition: template - value_template: "{{ states(current_page) == page_home and is_number(trigger.event.data.new_state.state) }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and is_number(trigger.event.data.new_state.state) }}" sequence: + - *variables-weather ### LABEL Outdoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.outdoor_temp - message: "{{ home_outdoor_temp_label_color }}" + message: "{{ page_home.general.outdoor_temp.label.color_rgb if is_number(page_home.general.outdoor_temp.label.color_rgb) else ((page_home.general.outdoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.outdoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.outdoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Outdoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.outdoor_temp - message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather.units.temperature }}" + message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather_units.temperature }}" ##### INDOOR TEMP - entity ##### - - conditions: + - alias: Indoor temp - Entity + conditions: - condition: trigger id: indoortemp_state - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" sequence: + - *variables-weather ### LABEL Indoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.current_temp - message: "{{ home_indoor_temp_label_color }}" + message: "{{ page_home.general.indoor_temp.label.color_rgb if is_number(page_home.general.indoor_temp.label.color_rgb) else ((page_home.general.indoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.indoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.indoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Indoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.current_temp - message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather.units.temperature }}" + message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather_units.temperature }}" ##### INDOOR TEMP - nspanel ##### - - conditions: + - alias: Indoor temp - NSPanel + conditions: - condition: trigger id: nspaneltemp_state - condition: template - value_template: "{{ states(current_page) == page_home and is_number(trigger.event.data.new_state.state) }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and is_number(trigger.event.data.new_state.state) }}" sequence: - - if: - - condition: template - value_template: '{{ indoortemp is not match "sensor." }}' + - *variables-weather + - if: "{{ indoortemp is not match 'sensor.' }}" then: ### LABEL Indoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.current_temp - message: "{{ home_indoor_temp_label_color }}" + message: "{{ page_home.general.indoor_temp.label.color_rgb if is_number(page_home.general.indoor_temp.label.color_rgb) else ((page_home.general.indoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.indoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.indoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Indoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.current_temp - message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather.units.temperature }}" + message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather_units.temperature }}" ##### WEATHER STATE - change update ##### - - conditions: + - alias: Weather - State changed + conditions: - condition: trigger id: weather_state_change - condition: template - value_template: "{{ states(current_page) == page_home and trigger.event.data.new_state.state != 'unavailable' }}" + value_template: "{{ nextion.pages.current == nextion.pages.home and trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" sequence: - - if: - - condition: template - value_template: '{{ outdoortemp is not match "sensor." }}' + - *variables-weather + - if: "{{ outdoortemp is not match 'sensor.' }}" then: ### LABEL Outdoor Temp Font Color ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_font_color }}" + - *delay-default + - service: "{{ nextion.commands.font_color }}" data: component: home.outdoor_temp - message: "{{ home_outdoor_temp_label_color }}" + message: "{{ page_home.general.outdoor_temp.label.color_rgb if is_number(page_home.general.outdoor_temp.label.color_rgb) else ((page_home.general.outdoor_temp.label.color_rgb[0] //(2**3)) *(2**11))+((page_home.general.outdoor_temp.label.color_rgb[1] //(2**2)) *(2**5))+(page_home.general.outdoor_temp.label.color_rgb[2] //(2**3)) }}" ### LABEL Outdoor Temp Font ### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: home.outdoor_temp - message: '{{trigger.event.data.new_state.attributes.temperature | round(1)}}{{ weather.units.temperature }}' - - service: "{{ command_text_printf }}" + message: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}{{ weather_units.temperature }}" + - service: "{{ nextion.commands.text_printf }}" data: component: climate.outdoor_temp - message: '{{trigger.event.data.new_state.attributes.temperature | round(1)}}{{ weather.units.temperature }}' + message: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}{{ weather_units.temperature }}" - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: home.weather.pic={{ nextion.pics.weather[trigger.event.data.new_state.state | default('unknown')] }} - - -########################################################################################################### - - ##### Sync Climate ##### -> muss noch in page changed climate wwenn climate page fertig - - conditions: + - alias: Climate - Sync + conditions: - condition: trigger id: climate_state - - condition: template - value_template: "{{ trigger.event.data.new_state.state != 'unavailable' }}" + - "{{ trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" # - condition: template - # value_template: '{{ states(current_page) == page_climate }}' + # value_template: "{{ nextion.pages.current == nextion.pages.climate }}" # - condition: template - # value_template: '{{ climate_optimistic == false }}' + # value_template: "{{ climate_optimistic == false }}" sequence: + - *variables-weather - variables: - heating_state: "{{ mui[language].climate.states.off if trigger.event.data.new_state.state == 'off' else mui[language].climate.states.on }}" + heating_state: "{{ mui[language].climate.states.off if trigger.event.data.new_state.state == 'off' else mui[language].climate.states.on }}" heating_bt_pic: >- - {%- if trigger.event.data.new_state.state == "off" -%} {{ heating_bt_pic_off }} - {%- else -%} {{ heating_bt_pic_on }} + {%- if trigger.event.data.new_state.state == 'off' -%} {{ nextion.pics.heating.button.off }} + {%- else -%} {{ nextion.pics.heating.button.on }} {%- endif -%} - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: current_temp - message: "{{ trigger.event.data.new_state.attributes.current_temperature | round(1)}}{{ weather.units.temperature }}" - - service: "{{ command_text_printf }}" + message: "{{ trigger.event.data.new_state.attributes.current_temperature | round(1)}}{{ weather_units.temperature }}" + - service: "{{ nextion.commands.text_printf }}" data: component: heating_state message: "{{heating_state}}" - - service: "{{ command_printf }}" + - service: "{{ nextion.commands.printf }}" data: cmd: heating_bt_pic.pic={{ heating_bt_pic }} - - if: - - condition: template - value_template: '{{ trigger.event.data.new_state.state != "off" }}' #### TODO AND->OR (not) not optimistic-mode + - if: "{{ trigger.event.data.new_state.state != 'off' }}" #### TODO AND->OR (not) not optimistic-mode then: - - service: "{{ command_thermostat_cycle }}" + - service: "{{ nextion.commands.thermostat_cycle }}" data: value: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}" else: - - service: "{{ command_thermostat_cycle }}" + - service: "{{ nextion.commands.thermostat_cycle }}" data: value: "0" - - service: "{{ command_text_printf }}" + - service: "{{ nextion.commands.text_printf }}" data: component: target_temp message: " " ##### Sync Hotwater Charge button-symbol ##### -> kann wenn climate page fertig - - conditions: + - alias: Hotwater - Sync + conditions: - condition: trigger id: hotwatercharge_state - - condition: template - value_template: "{{ states(current_page) == page_climate }}" + - "{{ nextion.pages.current == nextion.pages.climate }}" sequence: - variables: - hotw_bt_pic: >- - {%- if trigger.event.data.new_state.state == 'on' -%} {{ hotw_bt_on }} - {%- elif trigger.event.data.new_state.state == 'off' -%} {{ hotw_bt_off }} - {%- else -%} {{ hotw_bt_blank }} - {%- endif -%} - - service: "{{ command_printf }}" + hotw_bt_pic: "{{ nextion.pics.hvac.button[trigger.event.data.new_state.state] }}" + - service: "{{ nextion.commands.printf }}" data: cmd: hotw_bt_pic.pic={{ hotw_bt_pic }} ##### Hotwater Temp ##### kann raus und wird durch neue value 01 und value 02 ersetzt wenn climate page fertig - - conditions: + - alias: Hotwater - Temp + conditions: - condition: trigger id: hotwatertemp_state - - condition: template - value_template: "{{ states(current_page) == page_climate and trigger.event.data.new_state.state != 'unavailable' }}" + - "{{ nextion.pages.current == nextion.pages.climate and trigger.event.data.new_state.state not in ['unavailable', 'unknown', None] }}" sequence: - - service: "{{ command_text_printf }}" + - *variables-weather + - service: "{{ nextion.commands.text_printf }}" data: component: home.hotwater_temp - message: "{{ trigger.event.data.new_state.state |round(1) }}{{ weather.units.temperature }}" - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather_units.temperature }}" + - *delay-default + - service: "{{ nextion.commands.text_printf }}" data: component: climate.hotwater_temp - message: "{{ trigger.event.data.new_state.state |round(1) }}{{ weather.units.temperature }}" + message: "{{ trigger.event.data.new_state.state | round(1) }}{{ weather_units.temperature }}" # - delay: # milliseconds: "{{ delay_value }}" - # - service: "{{ command_printf }}" + # - service: "{{ nextion.commands.printf }}" # data: # cmd: home.hotwater_pic.pic={{ hotwater_pic_on }} #### TFT Upload Automation ##### - - conditions: + - alias: TFT auto-upload + conditions: - condition: trigger id: tft_upload sequence: - delay: seconds: 2 - - service: "{{ tft_upload }}" + - service: "{{ nextion.commands.tft_upload }}" data: {} - ############################################################# ##### CLOSE - Action ##### #############################################################