diff --git a/README.md b/README.md index 7005e4a..b81bc8a 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # NSPanel Custom with HA Blueprint +[![Paypal](https://user-images.githubusercontent.com/41958506/212499642-b2fd097a-0938-4bfc-b37b-74df64592c58.png)](https://www.paypal.com/donate/?hosted_button_id=S974SWQMB8PB2) [![Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.](https://my.home-assistant.io/badges/blueprint_import.svg)](https://my.home-assistant.io/redirect/blueprint_import/?blueprint_url=https%3A%2F%2Fgithub.com%2FBlackymas%2FNSPanel_HA_Blueprint%2Fblob%2Fmain%2Fnspanel_blueprint.yaml) diff --git a/nspanel.HMI b/nspanel.HMI index cdc3b96..f2553bc 100644 Binary files a/nspanel.HMI and b/nspanel.HMI differ diff --git a/nspanel.tft b/nspanel.tft index f259d2c..267abe4 100644 Binary files a/nspanel.tft and b/nspanel.tft differ diff --git a/nspanel_blueprint.yaml b/nspanel_blueprint.yaml index 24498d4..52bebcc 100644 --- a/nspanel_blueprint.yaml +++ b/nspanel_blueprint.yaml @@ -31,6 +31,9 @@ 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.0.0 + ' source_url: https://github.com/Blackymas/NSPanel_HA_Blueprint/blob/main/nspnael_blueprint.yaml @@ -58,55 +61,56 @@ The goal was to create a version that allows everyone to use the NSpanel fully l options: - label: 'English' value: ENG - - label: 'Germany' + - label: 'German' value: DEU - - label: 'Bulgaria' + - label: 'Bulgarian' value: BGR - - label: 'Denmark' - value: DNK - - label: 'Estonia' - value: EST - - label: 'Finland' - value: FIN - - label: 'France' - value: FRA - - label: 'Greece' - value: GRC - - label: 'Indonesia' - value: IDN - - label: 'Italy' - value: ITA - - label: 'Latvia' - value: LVA - - label: 'Lithuania' - value: LTU - - label: 'Netherlands' - value: NLD - - label: 'Poland' - value: POL - - label: 'Portugal' - value: PRT - - label: 'Romania' - value: ROU - - label: 'Sweden' - value: SWE - - label: 'Slovakia' - value: SVK - - label: 'Slovenia' - value: SVN - - label: 'Spain' - value: ESP - - label: 'Czechia' + - label: 'Czech' value: CZE - - label: 'Turkey' - value: TUR - - label: 'Ukraine' - value: UKR - - label: 'Hungary' + - label: 'Danish' + value: DNK + - label: 'Dutch' + value: NLD + - label: 'Estonian' + value: EST + - label: 'Finnish' + value: FIN + - label: 'French' + value: FRA + - label: 'Greek' + value: GRC + - label: 'Hungarian' value: HUN - - label: 'Norway' + - 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 tft_path: name: Nextion TFT File Folder (Optional) @@ -155,12 +159,14 @@ The goal was to create a version that allows everyone to use the NSpanel fully l options: - Default - AccuWeather - accuweather: - name: Name assigned to the AccuWeather Integration (Optional) - description: '* *If you use Accuweather Integration, the name of the Accuweather Integration must be entered here. ATTENTION! You must enter the name as specified in the entity. Example: Name of Accuweather is **"Home Weather"** then please write **"home_weather"** in the field*' + weather_entity: + name: Weather entity from HA + description: '* *Select your weather entity.*' default: [] selector: - text: {} + entity: + domain: + - weather ##### GENERAL ENTITYS ##### outdoortemp: @@ -171,6 +177,16 @@ The goal was to create a version that allows everyone to use the NSpanel fully l entity: domain: - sensor + + indoortemp: + name: Indoor Temperature Sensor (Optional) + description: '* *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 + humidity: name: Humidity Sensor (Optional) description: '* *Choose your humidity sensor*' @@ -235,6 +251,7 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - input_button - scene - script + - fan left_button_name: name: Name "Left Button" (Optional) description: '* *Left Button label - 10 characters are supported*' @@ -257,6 +274,7 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - input_button - scene - script + - fan right_button_name: name: Name "Right Button" (Optional) description: '* *Right Button label - 10 characters are supported*' @@ -296,7 +314,7 @@ The goal was to create a version that allows everyone to use the NSpanel fully l ##### BUTTONS ##### entity01: name: Button 01 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -311,15 +329,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity01_name: name: Name "Button 01" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity01_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button01"** action*' + selector: + boolean: entity02: name: Button 02 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -334,15 +360,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity02_name: name: Name "Button 02" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity02_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button02"** action*' + selector: + boolean: entity03: name: Button 03 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -357,15 +391,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity03_name: name: Name "Button 03" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity03_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button03"** action*' + selector: + boolean: entity04: name: Button 04 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -380,15 +422,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity04_name: name: Name "Button 04" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity04_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button04"** action*' + selector: + boolean: entity05: name: Button 05 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -403,15 +453,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity05_name: name: Name "Button 05" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity05_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button05"** action*' + selector: + boolean: entity06: name: Button 06 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -426,15 +484,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity06_name: name: Name "Button 06" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity06_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button06"** action*' + selector: + boolean: entity07: name: Button 07 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -449,15 +515,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity07_name: name: Name "Button 07" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity07_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button07"** action*' + selector: + boolean: entity08: name: Button 08 (Optional) - description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 1"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -472,15 +546,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity08_name: name: Name "Button 08" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity08_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button08"** action*' + selector: + boolean: entity09: name: Button 09 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -495,15 +577,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity09_name: name: Name "Button 09" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity09_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button09"** action*' + selector: + boolean: entity10: name: Button 10 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -518,15 +608,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity10_name: name: Name "Button 10" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity10_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button10"** action*' + selector: + boolean: entity11: name: Button 11 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -541,15 +639,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity11_name: name: Name "Button 11" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity11_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button11"** action*' + selector: + boolean: entity12: name: Button 12 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -564,15 +670,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity12_name: name: Name "Button 12" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity12_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button12"** action*' + selector: + boolean: entity13: name: Button 13 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -587,15 +701,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity13_name: name: Name "Button 13" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity13_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button13"** action*' + selector: + boolean: entity14: name: Button 14 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -610,15 +732,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity14_name: name: Name "Button 14" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity14_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button14"** action*' + selector: + boolean: entity15: name: Button 15 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -633,15 +763,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity15_name: name: Name "Button 15" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity15_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button15"** action*' + selector: + boolean: entity16: name: Button 16 (Optional) - description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 2"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -656,15 +794,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity16_name: name: Name "Button 16" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity16_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button16"** action*' + selector: + boolean: entity17: name: Button 17 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -679,15 +825,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity17_name: name: Name "Button 17" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity17_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button17"** action*' + selector: + boolean: entity18: name: Button 18 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -702,15 +856,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity18_name: name: Name "Button 18" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity18_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button18"** action*' + selector: + boolean: entity19: name: Button 19 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -725,15 +887,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity19_name: name: Name "Button 19" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity19_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button19"** action*' + selector: + boolean: entity20: name: Button 20 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -748,15 +918,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity20_name: name: Name "Button 20" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity20_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button20"** action*' + selector: + boolean: entity21: name: Button 21 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -771,15 +949,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity21_name: name: Name "Button 21" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity21_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button21"** action*' + selector: + boolean: entity22: name: Button 22 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -794,15 +980,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity22_name: name: Name "Button 22" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity22_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button22"** action*' + selector: + boolean: entity23: name: Button 23 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -817,15 +1011,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity23_name: name: Name "Button 23" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity23_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button23"** action*' + selector: + boolean: entity24: name: Button 24 (Optional) - description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 3"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -840,15 +1042,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity24_name: name: Name "Button 24" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity24_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button24"** action*' + selector: + boolean: entity25: name: Button 25 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -863,15 +1073,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity25_name: name: Name "Button 25" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity25_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button25"** action*' + selector: + boolean: entity26: name: Button 26 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -886,15 +1104,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity26_name: name: Name "Button 26" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity26_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button26"** action*' + selector: + boolean: entity27: name: Button 27 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -909,15 +1135,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity27_name: name: Name "Button 27" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity27_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button27"** action*' + selector: + boolean: entity28: name: Button 28 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -932,15 +1166,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity28_name: name: Name "Button 28" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity28_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button28"** action*' + selector: + boolean: entity29: name: Button 29 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -955,15 +1197,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity29_name: name: Name "Button 29" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity29_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button29"** action*' + selector: + boolean: entity30: name: Button 30 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -978,15 +1228,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity30_name: name: Name "Button 30" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity30_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button30"** action*' + selector: + boolean: entity31: name: Button 31 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -1001,15 +1259,23 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity31_name: name: Name "Button 31" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity31_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button31"** action*' + selector: + boolean: entity32: name: Button 32 (Optional) - description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script)*' + description: '* *Displayed on **"Button Page 4"** - (ONLY light | switch | cover | input_boolean | automation | button | input_button | scene | person | script | binary_sensor | fan)*' default: [] selector: entity: @@ -1024,15 +1290,25 @@ The goal was to create a version that allows everyone to use the NSpanel fully l - scene - person - script + - binary_sensor + - fan entity32_name: name: Name "Button 32" (Optional) description: '* *Button label - 10 characters are supported*' default: [] selector: text: {} + entity32_confirm: + name: Confirm execution of the button press (Optional) + default: false + description: '* *Ask for confirmation to execute **"Button32"** action*' + selector: + boolean: mode: parallel max: 5000 +trace: + stored_traces: 20 ############################################################# ##### CLOSE - INPUT ##### @@ -1060,16 +1336,17 @@ trigger_variables: display_target_temperature: "sensor.{{ nspanel_name_trigger }}_display_target_temperature" relay01_entity: "switch.{{ nspanel_name_trigger }}_relay_1" relay02_entity: "switch.{{ nspanel_name_trigger }}_relay_2" + nspaneltemp: "sensor.{{ nspanel_name_trigger }}_temperature" + + ##### notification Trigger ##### + notification_unread: "switch.{{ nspanel_name_trigger }}_notification_unread" + notification_text: "sensor.{{ nspanel_name_trigger }}_notification_text" + notification_label: "sensor.{{ nspanel_name_trigger }}_notification_label" ##### WEATHER Trigger ##### weather: !input "weather" - ha_weather: "weather.home" - accuweather: !input "accuweather" - accuweather_value: "weather.{{ accuweather }}" - weather_entity: >- - {%- if weather == "Default" -%} {{ ha_weather }} - {%- elif weather == "AccuWeather" -%} {{ accuweather_value }} - {%- endif -%} + weather_entity: !input "weather_entity" + accuweather_name: '{{ weather_entity |replace("weather.","") }}' variables: ##### GENERAL ##### @@ -1077,6 +1354,9 @@ variables: time: "{{ (as_timestamp(now()) | timestamp_custom('%H:%M')) }}" language: !input "language" + notification_sound: "switch.{{ nspanel_name_trigger }}_notification_sound" + confirmation_message: "switch.{{ nspanel_name_trigger }}_confirmation_message" + ##### PUSH TO NEXTION DISPLAY ##### command_text_printf: "esphome.{{ nspanel_name }}_send_command_text_printf" command_value: "esphome.{{ nspanel_name }}_send_command_value" @@ -1084,6 +1364,9 @@ variables: 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" ###### SYNC SETTINGS ##### delay_boot: !input "delay" @@ -1101,6 +1384,7 @@ variables: humidity: !input "humidity" hotwatertemp: !input "hotwatertemp" outdoortemp: !input "outdoortemp" + indoortemp: !input "indoortemp" climate: !input "climate" #### HARDWARE BUTTONS ##### @@ -1125,7 +1409,11 @@ variables: button_person_off: "111" button_person_on: "112" button_script_off: "107" - button_script_on: "108" + button_script_on: "108" + button_binary_sensor_off: '107' + button_binary_sensor_on: '108' + button_fan_off: "121" + button_fan_on: "122" hardware_button_pic_off: "98" hardware_button_pic_on: "99" @@ -1171,6 +1459,10 @@ variables: weather_icon_lightning: "55" weather_icon_wind: "56" + # humidity_pic + humidity_pic_on: "115" + humidity_pic_blank: "51" + # hotw_bt_pic hotw_bt_blank: "100" hotw_bt_off: "101" @@ -1180,6 +1472,11 @@ variables: heating_bt_pic_off: "103" heating_bt_pic_on: "104" + # home_buttons + home_button_blank: "116" + home_button_notify_white: "117" + home_button_notify_red: "118" + ###### NEXTION COLOR MAPPING ##### button_color_1: "65535" button_color_2: "10597" @@ -1201,6 +1498,7 @@ variables: page_buttonpage02: "buttonpage02" page_buttonpage03: "buttonpage03" page_buttonpage04: "buttonpage04" + page_notification: "notification" ##### MUI Multilingual User Interface (DE/EN) ##### @@ -1230,6 +1528,7 @@ variables: {%- elif language == "UKR" -%} {{ ((as_timestamp(now())) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеділок,')| replace('Tue', 'Вівторок,')| replace('Wed', 'Середа,')| replace('Thu', 'Четвер,')| replace('Fri', 'П ятниця,')| replace('Sat', 'Субота,')| replace('Sun', 'Неділя,') }} {%- elif language == "HUN" -%} {{ ((as_timestamp(now())) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Hétfő,')| replace('Tue', 'Kedd,')| replace('Wed', 'Szerda,')| replace('Thu', 'Csütörtök,')| replace('Fri', 'Péntek,')| replace('Sat', 'Szombat,')| replace('Sun', 'Vasárnap,') }} {%- elif language == "NOR" -%} {{ ((as_timestamp(now())) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} + {%- elif language == "RUS" -%} {{ ((as_timestamp(now())) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понедельник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Среда,')| replace('Thu', 'Четверг,')| replace('Fri', 'Пятница,')| replace('Sat', 'Суббота,')| replace('Sun', 'Воскресение,') }} {%- endif -%} date02_mui: >- {%- if language == "DEU" -%} {{ ((as_timestamp(now()) + 86400) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Montag,')| replace('Tue', 'Dienstag,')| replace('Wed', 'Mittwoch,')| replace('Thu', 'Donnerstag,')| replace('Fri', 'Freitag,')| replace('Sat', 'Samstag,')| replace('Sun', 'Sonntag,') }} @@ -1257,6 +1556,7 @@ variables: {%- elif language == "UKR" -%} {{ ((as_timestamp(now()) + 86400) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеділок,')| replace('Tue', 'Вівторок,')| replace('Wed', 'середа,')| replace('Thu', 'четвер,')| replace('Fri', 'п ятниця,')| replace('Sat', 'Субота,')| replace('Sun', 'Неділя,') }} {%- elif language == "HUN" -%} {{ ((as_timestamp(now()) + 86400) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Hétfő,')| replace('Tue', 'Kedd,')| replace('Wed', 'Szerda,')| replace('Thu', 'Csütörtök,')| replace('Fri', 'Péntek,')| replace('Sat', 'Szombat,')| replace('Sun', 'Vasárnap,') }} {%- elif language == "NOR" -%} {{ ((as_timestamp(now()) + 86400) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} + {%- elif language == "RUS" -%} {{ ((as_timestamp(now()) + 86400) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понедельник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Среда,')| replace('Thu', 'Четверг,')| replace('Fri', 'Пятница,')| replace('Sat', 'Суббота,')| replace('Sun', 'Воскресение,') }} {%- endif -%} date03_mui: >- {%- if language == "DEU" -%} {{ ((as_timestamp(now()) + 172800) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Montag,')| replace('Tue', 'Dienstag,')| replace('Wed', 'Mittwoch,')| replace('Thu', 'Donnerstag,')| replace('Fri', 'Freitag,')| replace('Sat', 'Samstag,')| replace('Sun', 'Sonntag,') }} @@ -1284,6 +1584,7 @@ variables: {%- elif language == "UKR" -%} {{ ((as_timestamp(now()) + 172800) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеділок,')| replace('Tue', 'Вівторок,')| replace('Wed', 'середа,')| replace('Thu', 'четвер,')| replace('Fri', 'п ятниця,')| replace('Sat', 'Субота,')| replace('Sun', 'Неділя,') }} {%- elif language == "HUN" -%} {{ ((as_timestamp(now()) + 172800) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Hétfő,')| replace('Tue', 'Kedd,')| replace('Wed', 'Szerda,')| replace('Thu', 'Csütörtök,')| replace('Fri', 'Péntek,')| replace('Sat', 'Szombat,')| replace('Sun', 'Vasárnap,') }} {%- elif language == "NOR" -%} {{ ((as_timestamp(now()) + 172800) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} + {%- elif language == "RUS" -%} {{ ((as_timestamp(now()) + 172800) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понедельник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Среда,')| replace('Thu', 'Четверг,')| replace('Fri', 'Пятница,')| replace('Sat', 'Суббота,')| replace('Sun', 'Воскресение,') }} {%- endif -%} date04_mui: >- {%- if language == "DEU" -%} {{ ((as_timestamp(now()) + 259200) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Montag,')| replace('Tue', 'Dienstag,')| replace('Wed', 'Mittwoch,')| replace('Thu', 'Donnerstag,')| replace('Fri', 'Freitag,')| replace('Sat', 'Samstag,')| replace('Sun', 'Sonntag,') }} @@ -1311,9 +1612,10 @@ variables: {%- elif language == "UKR" -%} {{ ((as_timestamp(now()) + 259200) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеділок,')| replace('Tue', 'Вівторок,')| replace('Wed', 'середа,')| replace('Thu', 'четвер,')| replace('Fri', 'п ятниця,')| replace('Sat', 'Субота,')| replace('Sun', 'Неділя,') }} {%- elif language == "HUN" -%} {{ ((as_timestamp(now()) + 259200) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Hétfő,')| replace('Tue', 'Kedd,')| replace('Wed', 'Szerda,')| replace('Thu', 'Csütörtök,')| replace('Fri', 'Péntek,')| replace('Sat', 'Szombat,')| replace('Sun', 'Vasárnap,') }} {%- elif language == "NOR" -%} {{ ((as_timestamp(now()) + 259200) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} + {%- elif language == "RUS" -%} {{ ((as_timestamp(now()) + 259200) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понедельник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Среда,')| replace('Thu', 'Четверг,')| replace('Fri', 'Пятница,')| replace('Sat', 'Суббота,')| replace('Sun', 'Воскресение,') }} {%- endif -%} date05_mui: >- - {%- if language == "DE" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Montag,')| replace('Tue', 'Dienstag,')| replace('Wed', 'Mittwoch,')| replace('Thu', 'Donnerstag,')| replace('Fri', 'Freitag,')| replace('Sat', 'Samstag,')| replace('Sun', 'Sonntag,') }} + {%- if language == "DEU" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Montag,')| replace('Tue', 'Dienstag,')| replace('Wed', 'Mittwoch,')| replace('Thu', 'Donnerstag,')| replace('Fri', 'Freitag,')| replace('Sat', 'Samstag,')| replace('Sun', 'Sonntag,') }} {%- elif language == "ENG" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Monday,')| replace('Tue', 'Tuesday,')| replace('Wed', 'Wednesday,')| replace('Thu', 'Thursday,')| replace('Fri', 'Friday,')| replace('Sat', 'Saturday,')| replace('Sun', 'Sunday,') }} {%- elif language == "BGR" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеделник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Сряда,')| replace('Thu', 'Четвъртък,')| replace('Fri', 'Петък,')| replace('Sat', 'Събота,')| replace('Sun', 'Неделя,') }} {%- elif language == "DNK" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} @@ -1338,6 +1640,7 @@ variables: {%- elif language == "UKR" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понеділок,')| replace('Tue', 'Вівторок,')| replace('Wed', 'середа,')| replace('Thu', 'четвер,')| replace('Fri', 'п ятниця,')| replace('Sat', 'Субота,')| replace('Sun', 'Неділя,') }} {%- elif language == "HUN" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Hétfő,')| replace('Tue', 'Kedd,')| replace('Wed', 'Szerda,')| replace('Thu', 'Csütörtök,')| replace('Fri', 'Péntek,')| replace('Sat', 'Szombat,')| replace('Sun', 'Vasárnap,') }} {%- elif language == "NOR" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Mandag,')| replace('Tue', 'Tirsdag,')| replace('Wed', 'Onsdag,')| replace('Thu', 'Torsdag,')| replace('Fri', 'Fredag,')| replace('Sat', 'Lørdag,')| replace('Sun', 'Søndag,') }} + {%- elif language == "RUS" -%} {{ ((as_timestamp(now()) + 345600) | timestamp_custom('%a %d.%m' )) | replace('Mon', 'Понедельник,')| replace('Tue', 'Вторник,')| replace('Wed', 'Среда,')| replace('Thu', 'Четверг,')| replace('Fri', 'Пятница,')| replace('Sat', 'Суббота,')| replace('Sun', 'Воскресение,') }} {%- endif -%} day01_mui: >- {%- if language == "DEU" -%} Heute @@ -1365,6 +1668,7 @@ variables: {%- elif language == "UKR" -%} Сьогодні {%- elif language == "HUN" -%} Ma {%- elif language == "NOR" -%} I dag + {%- elif language == "RUS" -%} Сегодня {%- endif -%} day02_mui: >- {%- if language == "DEU" -%} Morgen @@ -1392,6 +1696,7 @@ variables: {%- elif language == "UKR" -%} Завтра {%- elif language == "HUN" -%} Holnap {%- elif language == "NOR" -%} I morgen + {%- elif language == "RUS" -%} Завтра {%- endif -%} day03_mui: >- {%- if language == "DEU" -%} in 2 Tagen @@ -1419,6 +1724,7 @@ variables: {%- elif language == "UKR" -%} наступні 2 дні {%- elif language == "HUN" -%} 2 nap múlva {%- elif language == "NOR" -%} om 2 dager + {%- elif language == "RUS" -%} на 2 дня {%- endif -%} day04_mui: >- {%- if language == "DEU" -%} in 3 Tagen @@ -1446,6 +1752,7 @@ variables: {%- elif language == "UKR" -%} наступні 3 дні {%- elif language == "HUN" -%} 3 nap múlva {%- elif language == "NOR" -%} om 3 dager + {%- elif language == "RUS" -%} на 3 дня {%- endif -%} day05_mui: >- {%- if language == "DEU" -%} in 4 Tagen @@ -1473,6 +1780,7 @@ variables: {%- elif language == "UKR" -%} наступні 4 дні {%- elif language == "HUN" -%} 4 nap múlva {%- elif language == "NOR" -%} om 4 dager + {%- elif language == "RUS" -%} на 4 дня {%- endif -%} on_mui: >- {%- if language == "DEU" -%} ein @@ -1500,6 +1808,7 @@ variables: {%- elif language == "UKR" -%} увімкнено {%- elif language == "HUN" -%} a oldalon {%- elif language == "NOR" -%} på + {%- elif language == "RUS" -%} включено {%- endif -%} off_mui: >- {%- if language == "DEU" -%} aus @@ -1527,6 +1836,7 @@ variables: {%- elif language == "UKR" -%} вимкнено {%- elif language == "HUN" -%} off {%- elif language == "NOR" -%} av + {%- elif language == "RUS" -%} выключено {%- endif -%} heat_mui: >- {%- if language == "DEU" -%} heizen @@ -1554,54 +1864,83 @@ variables: {%- elif language == "UKR" -%} нагрівання {%- elif language == "HUN" -%} hő {%- elif language == "NOR" -%} varme + {%- elif language == "RUS" -%} нагрев + {%- endif -%} + please_confirm_mui: >- + {%- if language == "DEU" -%} Bitte bestätigen + {%- elif language == "ENG" -%} Please confirm + {%- elif language == "BGR" -%} Моля, потвърдете + {%- elif language == "DNK" -%} Bekræft venligst + {%- elif language == "EST" -%} Palun kinnitage + {%- elif language == "FIN" -%} Vahvistakaa + {%- elif language == "FRA" -%} Veuillez confirmer + {%- elif language == "GRC" -%} Παρακαλώ επιβεβαιώστε + {%- elif language == "IDN" -%} Mohon konfirmasi + {%- elif language == "ITA" -%} Confermare + {%- elif language == "LVA" -%} Lūdzu, apstipriniet + {%- elif language == "LTU" -%} Prašome patvirtinti + {%- elif language == "NLD" -%} Bevestig alstublieft + {%- elif language == "POL" -%} Proszę o potwierdzenie + {%- elif language == "PRT" -%} Favor confirmar + {%- elif language == "ROU" -%} Vă rugăm să confirmați + {%- elif language == "SWE" -%} PVänligen bekräfta + {%- elif language == "SVK" -%} Potvrďte, prosím + {%- elif language == "SVN" -%} Prosimo, potrdite + {%- elif language == "ESP" -%} Por favor, confirme + {%- elif language == "CZE" -%} Potvrďte prosím + {%- elif language == "TUR" -%} Lütfen onaylayın + {%- elif language == "UKR" -%} Будь ласка, підтвердіть + {%- elif language == "HUN" -%} Kérjük, erősítse meg + {%- elif language == "NOR" -%} Vennligst bekreft + {%- elif language == "RUS" -%} Пожалуйста, подтвердите {%- endif -%} ##### FORCAST ACCUWEATHER - DAY 0 ##### - accuweather_realfeel_temperature_min_0d: "sensor.{{ accuweather }}_realfeel_temperature_min_0d" - accuweather_realfeel_temperature_max_0d: "sensor.{{ accuweather }}_realfeel_temperature_max_0d" - accuweather_hours_of_sun_0d: "sensor.{{ accuweather }}_hours_of_sun_0d" - accuweather_uv_index_0d: "sensor.{{ accuweather }}_uv_index_0d" - accuweather_thunderstorm_probability_day_0d: "sensor.{{ accuweather }}_thunderstorm_probability_day_0d" - accuweather_thunderstorm_probability_night_0d: "sensor.{{ accuweather }}_thunderstorm_probability_night_0d" - accuweather_wind_day_0d: "sensor.{{ accuweather }}_wind_day_0d" - accuweather_wind_night_0d: "sensor.{{ accuweather }}_wind_night_0d" + accuweather_realfeel_temperature_min_0d: "sensor.{{ accuweather_name }}_realfeel_temperature_min_0d" + accuweather_realfeel_temperature_max_0d: "sensor.{{ accuweather_name }}_realfeel_temperature_max_0d" + accuweather_hours_of_sun_0d: "sensor.{{ accuweather_name }}_hours_of_sun_0d" + accuweather_uv_index_0d: "sensor.{{ accuweather_name }}_uv_index_0d" + accuweather_thunderstorm_probability_day_0d: "sensor.{{ accuweather_name }}_thunderstorm_probability_day_0d" + accuweather_thunderstorm_probability_night_0d: "sensor.{{ accuweather_name }}_thunderstorm_probability_night_0d" + accuweather_wind_day_0d: "sensor.{{ accuweather_name }}_wind_day_0d" + accuweather_wind_night_0d: "sensor.{{ accuweather_name }}_wind_night_0d" ##### FORCAST ACCUWEATHER - DAY 1 ##### - accuweather_realfeel_temperature_min_1d: "sensor.{{ accuweather }}_realfeel_temperature_min_1d" - accuweather_realfeel_temperature_max_1d: "sensor.{{ accuweather }}_realfeel_temperature_max_1d" - accuweather_hours_of_sun_1d: "sensor.{{ accuweather }}_hours_of_sun_1d" - accuweather_uv_index_1d: "sensor.{{ accuweather }}_uv_index_1d" - accuweather_thunderstorm_probability_day_1d: "sensor.{{ accuweather }}_thunderstorm_probability_day_1d" - accuweather_thunderstorm_probability_night_1d: "sensor.{{ accuweather }}_thunderstorm_probability_night_1d" - accuweather_wind_day_1d: "sensor.{{ accuweather }}_wind_day_1d" - accuweather_wind_night_1d: "sensor.{{ accuweather }}_wind_night_1d" + accuweather_realfeel_temperature_min_1d: "sensor.{{ accuweather_name }}_realfeel_temperature_min_1d" + accuweather_realfeel_temperature_max_1d: "sensor.{{ accuweather_name }}_realfeel_temperature_max_1d" + accuweather_hours_of_sun_1d: "sensor.{{ accuweather_name }}_hours_of_sun_1d" + accuweather_uv_index_1d: "sensor.{{ accuweather_name }}_uv_index_1d" + accuweather_thunderstorm_probability_day_1d: "sensor.{{ accuweather_name }}_thunderstorm_probability_day_1d" + accuweather_thunderstorm_probability_night_1d: "sensor.{{ accuweather_name }}_thunderstorm_probability_night_1d" + accuweather_wind_day_1d: "sensor.{{ accuweather_name }}_wind_day_1d" + accuweather_wind_night_1d: "sensor.{{ accuweather_name }}_wind_night_1d" ##### FORCAST ACCUWEATHER - DAY 2 ##### - accuweather_realfeel_temperature_min_2d: "sensor.{{ accuweather }}_realfeel_temperature_min_2d" - accuweather_realfeel_temperature_max_2d: "sensor.{{ accuweather }}_realfeel_temperature_max_2d" - accuweather_hours_of_sun_2d: "sensor.{{ accuweather }}_hours_of_sun_2d" - accuweather_uv_index_2d: "sensor.{{ accuweather }}_uv_index_2d" - accuweather_thunderstorm_probability_day_2d: "sensor.{{ accuweather }}_thunderstorm_probability_day_2d" - accuweather_thunderstorm_probability_night_2d: "sensor.{{ accuweather }}_thunderstorm_probability_night_2d" - accuweather_wind_day_2d: "sensor.{{ accuweather }}_wind_day_2d" - accuweather_wind_night_2d: "sensor.{{ accuweather }}_wind_night_2d" + accuweather_realfeel_temperature_min_2d: "sensor.{{ accuweather_name }}_realfeel_temperature_min_2d" + accuweather_realfeel_temperature_max_2d: "sensor.{{ accuweather_name }}_realfeel_temperature_max_2d" + accuweather_hours_of_sun_2d: "sensor.{{ accuweather_name }}_hours_of_sun_2d" + accuweather_uv_index_2d: "sensor.{{ accuweather_name }}_uv_index_2d" + accuweather_thunderstorm_probability_day_2d: "sensor.{{ accuweather_name }}_thunderstorm_probability_day_2d" + accuweather_thunderstorm_probability_night_2d: "sensor.{{ accuweather_name }}_thunderstorm_probability_night_2d" + accuweather_wind_day_2d: "sensor.{{ accuweather_name }}_wind_day_2d" + accuweather_wind_night_2d: "sensor.{{ accuweather_name }}_wind_night_2d" ##### FORCAST ACCUWEATHER - DAY 3 ##### - accuweather_realfeel_temperature_min_3d: "sensor.{{ accuweather }}_realfeel_temperature_min_3d" - accuweather_realfeel_temperature_max_3d: "sensor.{{ accuweather }}_realfeel_temperature_max_3d" - accuweather_hours_of_sun_3d: "sensor.{{ accuweather }}_hours_of_sun_3d" - accuweather_uv_index_3d: "sensor.{{ accuweather }}_uv_index_3d" - accuweather_thunderstorm_probability_day_3d: "sensor.{{ accuweather }}_thunderstorm_probability_day_3d" - accuweather_thunderstorm_probability_night_3d: "sensor.{{ accuweather }}_thunderstorm_probability_night_3d" - accuweather_wind_day_3d: "sensor.{{ accuweather }}_wind_day_3d" - accuweather_wind_night_3d: "sensor.{{ accuweather }}_wind_night_3d" + accuweather_realfeel_temperature_min_3d: "sensor.{{ accuweather_name }}_realfeel_temperature_min_3d" + accuweather_realfeel_temperature_max_3d: "sensor.{{ accuweather_name }}_realfeel_temperature_max_3d" + accuweather_hours_of_sun_3d: "sensor.{{ accuweather_name }}_hours_of_sun_3d" + accuweather_uv_index_3d: "sensor.{{ accuweather_name }}_uv_index_3d" + accuweather_thunderstorm_probability_day_3d: "sensor.{{ accuweather_name }}_thunderstorm_probability_day_3d" + accuweather_thunderstorm_probability_night_3d: "sensor.{{ accuweather_name }}_thunderstorm_probability_night_3d" + accuweather_wind_day_3d: "sensor.{{ accuweather_name }}_wind_day_3d" + accuweather_wind_night_3d: "sensor.{{ accuweather_name }}_wind_night_3d" ##### FORCAST ACCUWEATHER - DAY 4 ##### - accuweather_realfeel_temperature_min_4d: "sensor.{{ accuweather }}_realfeel_temperature_min_4d" - accuweather_realfeel_temperature_max_4d: "sensor.{{ accuweather }}_realfeel_temperature_max_4d" - accuweather_hours_of_sun_4d: "sensor.{{ accuweather }}_hours_of_sun_4d" - accuweather_uv_index_4d: "sensor.{{ accuweather }}_uv_index_4d" - accuweather_thunderstorm_probability_day_4d: "sensor.{{ accuweather }}_thunderstorm_probability_day_4d" - accuweather_thunderstorm_probability_night_4d: "sensor.{{ accuweather }}_thunderstorm_probability_night_4d" - accuweather_wind_day_4d: "sensor.{{ accuweather }}_wind_day_4d" - accuweather_wind_night_4d: "sensor.{{ accuweather }}_wind_night_4d" + accuweather_realfeel_temperature_min_4d: "sensor.{{ accuweather_name }}_realfeel_temperature_min_4d" + accuweather_realfeel_temperature_max_4d: "sensor.{{ accuweather_name }}_realfeel_temperature_max_4d" + accuweather_hours_of_sun_4d: "sensor.{{ accuweather_name }}_hours_of_sun_4d" + accuweather_uv_index_4d: "sensor.{{ accuweather_name }}_uv_index_4d" + accuweather_thunderstorm_probability_day_4d: "sensor.{{ accuweather_name }}_thunderstorm_probability_day_4d" + accuweather_thunderstorm_probability_night_4d: "sensor.{{ accuweather_name }}_thunderstorm_probability_night_4d" + accuweather_wind_day_4d: "sensor.{{ accuweather_name }}_wind_day_4d" + accuweather_wind_night_4d: "sensor.{{ accuweather_name }}_wind_night_4d" ##### BUTTON Page Labels ##### button_page01_label: !input button_page01_label @@ -1675,6 +2014,39 @@ variables: entity32: !input "entity32" entity32_name: !input "entity32_name" + entity01_confirm: !input "entity01_confirm" + entity02_confirm: !input "entity02_confirm" + entity03_confirm: !input "entity03_confirm" + entity04_confirm: !input "entity04_confirm" + entity05_confirm: !input "entity05_confirm" + entity06_confirm: !input "entity06_confirm" + entity07_confirm: !input "entity07_confirm" + entity08_confirm: !input "entity08_confirm" + entity09_confirm: !input "entity09_confirm" + entity10_confirm: !input "entity10_confirm" + entity11_confirm: !input "entity11_confirm" + entity12_confirm: !input "entity12_confirm" + entity13_confirm: !input "entity13_confirm" + entity14_confirm: !input "entity14_confirm" + entity15_confirm: !input "entity15_confirm" + entity16_confirm: !input "entity16_confirm" + entity17_confirm: !input "entity17_confirm" + entity18_confirm: !input "entity18_confirm" + entity19_confirm: !input "entity19_confirm" + entity20_confirm: !input "entity20_confirm" + entity21_confirm: !input "entity21_confirm" + entity22_confirm: !input "entity22_confirm" + entity23_confirm: !input "entity23_confirm" + entity24_confirm: !input "entity24_confirm" + entity25_confirm: !input "entity25_confirm" + entity26_confirm: !input "entity26_confirm" + entity27_confirm: !input "entity27_confirm" + entity28_confirm: !input "entity28_confirm" + entity29_confirm: !input "entity29_confirm" + entity30_confirm: !input "entity30_confirm" + entity31_confirm: !input "entity31_confirm" + entity32_confirm: !input "entity32_confirm" + ############################################################# ##### CLOSE - Variables ##### ############################################################# @@ -1747,6 +2119,20 @@ trigger: entity_id: !input "outdoortemp" id: outdoortemp_state + ##### indoor Temp Sensor - Trigger "indoortemp_state" ##### + - platform: event + event_type: state_changed + event_data: + entity_id: !input "indoortemp" + id: indoortemp_state + + ##### NSPAnel Temp Sensor - Trigger "nspaneltemp_state" ##### + - platform: event + event_type: state_changed + event_data: + entity_id: '{{ nspaneltemp }}' + id: nspaneltemp_state + ##### Hot Water Charge - Trigger "hotwatercharge_state" ##### - platform: event event_type: state_changed @@ -1804,6 +2190,37 @@ trigger: value_template: '{{ states(last_click) is match "releaseclimate" }}' id: open_climate_settings + ##### Trigger - Notification ##### + + ##### Notification Text - Trigger "notification_text_state" ##### + - platform: event + event_type: state_changed + event_data: + 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 }}' + id: notification_unread_state + + #### Show notification - Trigger #### + - platform: template + value_template: '{{ states(last_click) is match "homebutton04release" }}' + id: open_notification_page + + #### Notification clear - Trigger #### + - platform: template + value_template: '{{ states(last_click) is match "notificationclearrelease" }}' + id: btn_notificationclearrelease + + #### Notification accept - Trigger #### + - platform: template + value_template: '{{ states(last_click) is match "notificationacceptrelease" }}' + id: btn_notificationacceptrelease + ##### Trigger - Button General ################################################################################################################# ##### Page Button - Trigger "short_press" - SHORT Press via "last_click" ##### @@ -2149,18 +2566,6 @@ action: ##### NSPanel boot init start ##### - delay: milliseconds: 100 - - service: "{{ command_text_printf }}" - data: - component: home.loading - message: "Loading - PLS WAIT!" - - ##### NSPanel boot init Date ##### - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.date - message: "{{ date01_mui }}" ##### NSPanel boot init buttons ##### - delay: @@ -2289,6 +2694,10 @@ action: {%- elif repeat.item.entity is match "script." and states[repeat.item.entity].state == 'off' -%} {{ button_script_off }} {%- elif repeat.item.entity is match "person." and states[repeat.item.entity].state == 'home' -%} {{ button_person_on }} {%- elif repeat.item.entity is match "person." and states[repeat.item.entity].state != 'home' -%} {{ button_person_off }} + {%- elif repeat.item.entity is match "binary_sensor." and states[repeat.item.entity].state == 'on' -%} {{ button_binary_sensor_on }} + {%- elif repeat.item.entity is match "binary_sensor." and states[repeat.item.entity].state == 'off' -%} {{ button_binary_sensor_off }} + {%- elif repeat.item.entity is match "fan." and states[repeat.item.entity].state == 'on' -%} {{ button_fan_on }} + {%- elif repeat.item.entity is match "fan." and states[repeat.item.entity].state == 'off' -%} {{ button_fan_off }} {%- endif -%} # TEXT and BRIGHTNESS Background btn_bg: >- @@ -2374,204 +2783,99 @@ action: component: "{{ component_to_update }}bri" message: "{{ btn_bri_txt }}" - ##### NSPanel boot init - Time ##### + ###### INIT Notify ###### + - service: "{{ command_notification_clear }}" + data: {} + + ###### NSPanel beep ###### - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.time - message: "{{ time }}" - - ##### NSPanel boot init - Humidity ##### + milliseconds: 100 - if: - condition: template - value_template: '{{ humidity is match "sensor." and states(humidity).state != "unavailable" }}' + value_template: '{{ is_state(notification_sound, "on") }}' then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" + - service: "{{ command_play_rtttl }}" data: - component: home.humidity_state - message: "{{ states(humidity) |round(0) }}%" - - ##### NSPanel boot init - Hotwater ##### - - if: - - condition: template - value_template: '{{ hotwatertemp is match "sensor." and states(hotwatertemp).state != "unavailable" }}' - then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" - data: - cmd: home.hotwater_pic.pic={{ hotwater_pic_on }} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.hotwater_temp - message: "{{ states(hotwatertemp) |round(1) }}°" - - ##### NSPanel boot init - Outdoor Temp ##### - - variables: - outdoor_temp: >- - {%- if outdoortemp is match "sensor." and states(outdoortemp).state != "unavailable" -%} {{ states(outdoortemp) |round(0) }} - {%- elif weather == "Default" and state_attr(ha_weather, "temperature") != None -%} {{state_attr(ha_weather,"temperature") | round(0)}} - {%- elif weather == "AccuWeather" and state_attr(accuweather_value, "temperature") != None -%} {{state_attr(accuweather_value,"temperature") | round(0)}} - {%- else -%} 0 - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.outdoor_temp - message: "{{ outdoor_temp }}°" - - ##### Weather Icon Home Page - - variables: - weather_pic: >- - {%- if states(weather_entity) == 'sunny' -%} {{ weather_sunny }} - {%- elif states(weather_entity) == 'cloudy' -%} {{ weather_cloudy }} - {%- elif states(weather_entity) == 'rainy' -%} {{ weather_rainy }} - {%- elif states(weather_entity) == 'pouring' -%} {{ weather_pouring }} - {%- elif states(weather_entity) == 'snowy' -%} {{ weather_snowy }} - {%- elif states(weather_entity) == 'hail' -%} {{ weather_hail }} - {%- elif states(weather_entity) == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif states(weather_entity) == 'fog' -%} {{ weather_fog }} - {%- elif states(weather_entity) == 'windy' -%} {{ weather_windy }} - {%- elif states(weather_entity) == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif states(weather_entity) == 'lightning' -%} {{ weather_lightning }} - {%- elif states(weather_entity) == 'partlycloudy' and states('sun.sun') == 'above_horizon' -%} {{ weather_partlycloudy_day }} - {%- elif states(weather_entity) == 'partlycloudy' and states('sun.sun') == 'below_horizon' -%} {{ weather_partlycloudy_night }} - {%- elif states(weather_entity) == 'lightning-rainy' and states('sun.sun') == 'above_horizon' -%} {{ weather_lightning_rainy_day }} - {%- elif states(weather_entity) == 'lightning-rainy' and states('sun.sun') == 'below_horizon' -%} {{ weather_lightning_rainy_night }} - {%- elif states(weather_entity) == 'execptional' and states('sun.sun') == 'above_horizon' -%} {{ weather_execptional_day }} - {%- elif states(weather_entity) == 'execptional' and states('sun.sun') == 'below_horizon' -%} {{ weather_execptional_night }} - {%- elif states(weather_entity) == 'clear-night' -%} {{ weather_clear_night }} - {%- endif -%} + song_str: "two short:d=4,o=5,b=100:16e6,16e6" + ##### NSPanel boot init finished and jump to Home Page##### - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" data: - cmd: home.weather.pic={{ weather_pic }} + cmd: page home - ##### NSPanel boot init - Left Button Name ##### - - if: - - condition: template - value_template: '{{ left_button_name |length > 0 }}' - then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.left_bt_text - message: "{{ left_button_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" }}' - 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 }}" - data: - cmd: home.left_bt_pic.pic={{ left_hardware_button_state }} - - ##### NSPanel boot init - Right Button Name ##### - - if: - - condition: template - value_template: '{{ right_button_name |length > 0 }}' - then: - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_text_printf }}" - data: - component: home.right_bt_text - message: "{{ right_button_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" }}' - 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 }}" - data: - cmd: home.right_bt_pic.pic={{ right_hardware_button_state }} - - ###### StatusBar - Climate Symbol ###### - - if: - - condition: template - value_template: '{{ climate |length > 0 }}' - then: - - variables: - top_menu_climate: >- - {%- if states(climate) == "heat" and state_attr(climate, "hvac_action") != None and state_attr(climate, "hvac_action") == "heating" -%} {{ heat_pic_on }} - {%- elif states(climate) == "heat" -%} {{ thermostat_pic_on }} - {%- else -%} {{ top_menu_blank }} - {%- endif -%} - - service: "{{ command_printf }}" - data: - cmd: home.icon_top_03.pic={{ top_menu_climate }} - - ###### StatusBar - Relay Symbols ###### - - variables: - relay01_pic: >- - {%- if states(relay01_entity) == 'on' -%} {{ relay01_pic_on }} - {%- else -%} {{ top_menu_blank }} + #### Notification Symbol #### + - conditions: + - condition: trigger + id: + - notification_text_state + - notification_unread_state + - condition: template + value_template: "{{ trigger.event.data.new_state.state != 'unavailable' and trigger.event.data.new_state.state != 'unknown' and states(current_page) == page_home }}" + sequence: + - alias: "Set notifiy pic" + variables: + notify_pic: >- + {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button_notify_red }} + {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button_notify_white }} + {%- else -%} {{ home_button_blank }} {%- endif -%} - relay02_pic: >- - {%- if states(relay02_entity) == 'on' -%} {{ relay02_pic_on }} - {%- else -%} {{ top_menu_blank }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" data: - cmd: home.icon_top_01.pic={{ relay01_pic }} - - delay: - milliseconds: "{{ delay_value }}" + cmd: "homebt04_pic.pic={{ notify_pic }}" + + ##### Show last notification ##### + - conditions: + - condition: trigger + id: open_notification_page + - condition: template + value_template: "{{ states(notification_text) |length > 0}} " + sequence: - service: "{{ command_printf }}" data: - cmd: home.icon_top_02.pic={{ relay02_pic }} - - ##### NSPanel boot init finished ##### + cmd: "page {{ page_notification }}" + - service: "{{ command_text_printf }}" + data: + component: notification.notifi_text01 + message: "{{ states(notification_text) }}" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_text_printf }}" data: - component: home.loading - message: " " + component: notification.notifi_label + message: "{{ states(notification_label) }}" - ###### StatusBar - Icon 04 ###### - - if: - - condition: template - value_template: '{{ heatingsystemflame |length > 0 }}' - then: - - variables: - flame_pic: >- - {%- if states(heatingsystemflame) == "on" -%} {{ flame_pic_on }} - {%- else -%} {{ top_menu_blank }} - {%- endif -%} - - delay: - milliseconds: "{{ delay_value }}" - - service: "{{ command_printf }}" - data: - cmd: home.icon_top_04.pic={{ flame_pic }} + ##### Button Notification clear ##### + - conditions: + - condition: trigger + id: btn_notificationclearrelease + - condition: template + value_template: "{{ states(confirmation_message) != 'on'}} " + sequence: + - service: switch.turn_off + data: + entity_id: "{{ notification_unread }}" + - service: "{{ command_printf }}" + data: + cmd: "page {{ page_home }}" + + ##### Button Notification accept ##### + - conditions: + - condition: trigger + id: btn_notificationacceptrelease + - condition: template + value_template: "{{ states(confirmation_message) != 'on'}} " + sequence: + - service: switch.turn_off + data: + entity_id: "{{ notification_unread }}" + - service: "{{ command_notification_clear }}" + data: {} + - service: "{{ command_printf }}" + data: + cmd: "page {{ page_home }}" #### TFT Upload Automation ##### - conditions: @@ -2583,7 +2887,6 @@ action: - service: "{{ tft_upload }}" data: {} - ##### Update Button Page and Lightsettings / Coversettings Page ##### - conditions: - condition: trigger @@ -2625,8 +2928,41 @@ action: sequence: - alias: "Set variable(s) for entity change" variables: + buttonpage: '{{ states(current_page) }}' component_to_update: >- - {%- if trigger.entity_id == entity01 -%} buttonpage01.button01 + {%- 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 + {%- elif trigger.entity_id == entity01 -%} buttonpage01.button01 {%- elif trigger.entity_id == entity02 -%} buttonpage01.button02 {%- elif trigger.entity_id == entity03 -%} buttonpage01.button03 {%- elif trigger.entity_id == entity04 -%} buttonpage01.button04 @@ -2678,6 +3014,10 @@ action: {%- elif trigger.to_state.entity_id is match "script." and trigger.to_state.state == 'off' -%} {{ button_script_off }} {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state == 'home' -%} {{ button_person_on }} {%- elif trigger.to_state.entity_id is match "person." and trigger.to_state.state != 'home' -%} {{ button_person_off }} + {%- elif trigger.to_state.entity_id is match "binary_sensor." and trigger.to_state.state == 'on' -%} {{ button_binary_sensor_on }} + {%- elif trigger.to_state.entity_id is match "binary_sensor." and trigger.to_state.state == 'off' -%} {{ button_binary_sensor_off }} + {%- elif trigger.to_state.entity_id is match "fan." and trigger.to_state.state == 'on' -%} {{ button_fan_on }} + {%- elif trigger.to_state.entity_id is match "fan." and trigger.to_state.state == 'off' -%} {{ button_fan_off }} {%- endif -%} # TEXT and BRIGHTNESS Background btn_bg: >- @@ -3048,7 +3388,6 @@ action: component: coversettings.cover_value message: '0 %' - ##### Page Button - SHORT Press - Toggle Enities ##### - conditions: - condition: trigger @@ -3090,31 +3429,156 @@ action: {%- 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 is not match "person." }}' - - 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 - {% endif %} - data: - entity_id: "{{ entity_short }}" + value_template: '{{ entity_short is not match "person." and entity_short is not match "binary_sensor." }}' + - 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: "{{ please_confirm_mui }}" + - 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 }}" + + 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 }}" ##### Page Button - LONG Press - JUMP to Page Lightsettings / Coversettings ##### - conditions: @@ -3294,7 +3758,6 @@ action: data: cmd: coversettings.cover_status.pic={{ cover_pic_closed }} - ##### LASTCLICK_LIGHTSETTINGS - Changes on page Light-Settings ##### - conditions: - condition: trigger @@ -3364,7 +3827,6 @@ action: data: cmd: "{{ entity_back }}" - ##### LASTCLICK_COVERSETTINGS - Changes on page Cover-Settings ##### - conditions: - condition: trigger @@ -3429,7 +3891,6 @@ action: data: cmd: "{{ entity_back }}" - ##### LASTCLICK_CLIMATESETTINGS - Changes on page Climate-Settings ##### - conditions: - condition: trigger @@ -3581,7 +4042,6 @@ action: #hvac_mode: 'heat' temperature: "{{ new_setpoint }}" - ##### Left button press ##### - conditions: - condition: trigger @@ -3606,13 +4066,14 @@ action: 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 }}" - delay: milliseconds: "{{ delay_value }}" - ##### Left button State ##### - conditions: - condition: trigger @@ -3632,7 +4093,6 @@ action: data: cmd: home.left_bt_pic.pic={{ left_hardware_button_state }} - ##### Right button press ##### - conditions: - condition: trigger @@ -3657,11 +4117,12 @@ action: scene.turn_on {% elif right_button_entity is match 'script.' %} script.turn_on + {% elif right_button_entity is match 'fan.' %} + fan.toggle {% endif %} data: entity_id: "{{ right_button_entity }}" - ##### Right button State ##### - conditions: - condition: trigger @@ -3681,7 +4142,6 @@ action: data: cmd: home.right_bt_pic.pic={{ right_hardware_button_state }} - ##### Date and Time Home Page ##### - conditions: - condition: trigger @@ -3699,7 +4159,6 @@ action: component: home.date message: "{{ date01_mui }}" - ##### Humidity ##### - conditions: - condition: trigger @@ -3712,7 +4171,6 @@ action: component: home.humidity_state message: "{{ trigger.event.data.new_state.state |round(0) }}%" - ##### Hotwater Temp ##### - conditions: - condition: trigger @@ -3736,7 +4194,6 @@ action: data: cmd: home.hotwater_pic.pic={{ hotwater_pic_on }} - ##### Outdoor Temp Entity ##### - conditions: - condition: trigger @@ -3755,6 +4212,33 @@ action: component: climate.outdoor_temp message: "{{ trigger.event.data.new_state.state |round(0) }}°" + ##### Indoor Temp Entity ##### + - conditions: + - condition: trigger + id: indoortemp_state + - condition: template + value_template: "{{ trigger.event.data.new_state.state != 'unavailable' }}" + sequence: + - service: "{{ command_text_printf }}" + data: + component: home.current_temp + message: "{{ trigger.event.data.new_state.state |round(1) }}°" + + ##### Indoor NSPANEL Temp Entity ##### + - conditions: + - condition: trigger + id: nspaneltemp_state + - condition: template + value_template: "{{ trigger.event.data.new_state.state != 'unavailable' }}" + sequence: + - if: + - condition: template + value_template: '{{ indoortemp is not match "sensor." }}' + then: + - service: "{{ command_text_printf }}" + data: + component: home.current_temp + message: "{{ trigger.event.data.new_state.state |round(1) }}°" ##### Weather state change update ##### - conditions: @@ -3826,11 +4310,16 @@ action: component: home.time message: "{{ time }}" - ##### NSPanel Humidity ##### + ##### NSPanel Humidity ##### - if: - condition: template value_template: '{{ humidity is match "sensor." and states(humidity).state != "unavailable" }}' then: + - delay: + milliseconds: "{{ delay_value }}" + - service: "{{ command_printf }}" + data: + cmd: home.humidity_pic.pic={{ humidity_pic_on }} - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_text_printf }}" @@ -3838,7 +4327,7 @@ action: component: home.humidity_state message: "{{ states(humidity) |round(0) }}%" - ##### NSPanel Hotwater ##### + ##### NSPanel Hotwater ##### - if: - condition: template value_template: '{{ hotwatertemp is match "sensor." and states(hotwatertemp).state != "unavailable" }}' @@ -3855,12 +4344,11 @@ action: component: home.hotwater_temp message: "{{ states(hotwatertemp) |round(1) }}°" - ##### NSPanel Outdoor Temp ##### + ##### NSPanel Outdoor Temp ##### - variables: outdoor_temp: >- {%- if outdoortemp is match "sensor." and states(outdoortemp).state != "unavailable" -%} {{ states(outdoortemp) |round(0) }} - {%- elif weather == "Default" and state_attr(ha_weather, "temperature") != None -%} {{state_attr(ha_weather,"temperature") | round(0)}} - {%- elif weather == "AccuWeather" and state_attr(accuweather_value, "temperature") != None -%} {{state_attr(accuweather_value,"temperature") | round(0)}} + {%- elif state_attr(weather_entity, "temperature") != None -%} {{state_attr(weather_entity,"temperature") | round(0)}} {%- else -%} 0 {%- endif -%} - delay: @@ -3870,6 +4358,19 @@ action: component: home.outdoor_temp message: "{{ outdoor_temp }}°" + ##### NSPanel Indoor Temp ##### + - variables: + indoor_temp: >- + {%- if indoortemp is match "sensor." and states(indoortemp).state != "unavailable" -%} {{ states(indoortemp) |round(1) }} + {%- else -%} {{ states(nspaneltemp) |round(1) }} + {%- endif -%} + - delay: + milliseconds: "{{ delay_value }}" + - service: "{{ command_text_printf }}" + data: + component: home.current_temp + message: "{{ indoor_temp }}°" + ##### Weather Icon Home Page ##### - variables: weather_pic: >- @@ -3899,7 +4400,7 @@ action: data: cmd: home.weather.pic={{ weather_pic }} - ##### NSPanel Left Button Name ##### + ##### NSPanel Left Button Name ##### - if: - condition: template value_template: '{{ left_button_name |length > 0 }}' @@ -3928,7 +4429,7 @@ action: data: cmd: home.left_bt_pic.pic={{ left_hardware_button_state }} - ##### NSPanel Right Button Name ##### + ##### NSPanel Right Button Name ##### - if: - condition: template value_template: '{{ right_button_name |length > 0 }}' @@ -3940,7 +4441,7 @@ action: component: home.right_bt_text message: "{{ right_button_name }}" - ###### SET Right Hardware Button PIC on Home Page ##### + ##### SET Right Hardware Button PIC on Home Page ##### - if: - condition: template @@ -3958,7 +4459,7 @@ action: data: cmd: home.right_bt_pic.pic={{ right_hardware_button_state }} - ###### StatusBar - Climate Symbol ###### + ##### StatusBar - Climate Symbol ###### - if: - condition: template value_template: '{{ climate |length > 0 }}' @@ -3973,7 +4474,7 @@ action: data: cmd: home.icon_top_03.pic={{ top_menu_climate }} - ###### StatusBar - Relay Symbols ###### + ##### StatusBar - Relay Symbols ###### - variables: relay01_pic: >- {%- if states(relay01_entity) == 'on' -%} {{ relay01_pic_on }} @@ -4014,6 +4515,35 @@ action: entity_id: !input climate #hvac_mode: 'heat' temperature: "{{ display_target_temperature }}" + + ##### Set notify icon ##### + - variables: + notify_pic: >- + {%- if is_state(notification_unread, 'on') and states(notification_text) |length > 0 -%} {{ home_button_notify_red }} + {%- elif is_state(notification_unread, 'off') and states(notification_text) |length > 0 -%} {{ home_button_notify_white }} + {%- else -%} {{ home_button_blank }} + {%- endif -%} + - delay: + milliseconds: "{{ delay_value }}" + - service: "{{ command_printf }}" + data: + cmd: "homebt04_pic.pic={{ notify_pic }}" + + ###### StatusBar - Icon 04 ###### + - if: + - condition: template + value_template: '{{ heatingsystemflame |length > 0 }}' + then: + - variables: + flame_pic: >- + {%- if states(heatingsystemflame) == "on" -%} {{ flame_pic_on }} + {%- else -%} {{ top_menu_blank }} + {%- endif -%} + - delay: + milliseconds: "{{ delay_value }}" + - service: "{{ command_printf }}" + data: + cmd: home.icon_top_04.pic={{ flame_pic }} ## PAGE WEATHE01 ## - conditions: '{{ trigger.event.data.new_state.state == page_weather01 }}' @@ -4024,24 +4554,24 @@ action: - variables: # weather PIC weather_icon: >- - {%- if states(ha_weather) == 'sunny' -%} {{ weather_sunny }} - {%- elif states(ha_weather) == 'cloudy' -%} {{ weather_cloudy }} - {%- elif states(ha_weather) == 'rainy' -%} {{ weather_rainy }} - {%- elif states(ha_weather) == 'pouring' -%} {{ weather_pouring }} - {%- elif states(ha_weather) == 'snowy' -%} {{ weather_snowy }} - {%- elif states(ha_weather) == 'hail' -%} {{ weather_hail }} - {%- elif states(ha_weather) == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif states(ha_weather) == 'fog' -%} {{ weather_fog }} - {%- elif states(ha_weather) == 'windy' -%} {{ weather_windy }} - {%- elif states(ha_weather) == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif states(ha_weather) == 'lightning' -%} {{ weather_lightning }} - {%- elif states(ha_weather) == 'partlycloudy' and states('sun.sun') == 'above_horizon' -%} {{ weather_partlycloudy_day }} - {%- elif states(ha_weather) == 'partlycloudy' and states('sun.sun') == 'below_horizon' -%} {{ weather_partlycloudy_night }} - {%- elif states(ha_weather) == 'lightning-rainy' and states('sun.sun') == 'above_horizon' -%} {{ weather_lightning_rainy_day }} - {%- elif states(ha_weather) == 'lightning-rainy' and states('sun.sun') == 'below_horizon' -%} {{ weather_lightning_rainy_night }} - {%- elif states(ha_weather) == 'execptional' and states('sun.sun') == 'above_horizon' -%} {{ weather_execptional_day }} - {%- elif states(ha_weather) == 'execptional' and states('sun.sun') == 'below_horizon' -%} {{ weather_execptional_night }} - {%- elif states(ha_weather) == 'clear-night' -%} {{ weather_clear_night }} + {%- if states(weather_entity) == 'sunny' -%} {{ weather_sunny }} + {%- elif states(weather_entity) == 'cloudy' -%} {{ weather_cloudy }} + {%- elif states(weather_entity) == 'rainy' -%} {{ weather_rainy }} + {%- elif states(weather_entity) == 'pouring' -%} {{ weather_pouring }} + {%- elif states(weather_entity) == 'snowy' -%} {{ weather_snowy }} + {%- elif states(weather_entity) == 'hail' -%} {{ weather_hail }} + {%- elif states(weather_entity) == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif states(weather_entity) == 'fog' -%} {{ weather_fog }} + {%- elif states(weather_entity) == 'windy' -%} {{ weather_windy }} + {%- elif states(weather_entity) == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif states(weather_entity) == 'lightning' -%} {{ weather_lightning }} + {%- elif states(weather_entity) == 'partlycloudy' and states('sun.sun') == 'above_horizon' -%} {{ weather_partlycloudy_day }} + {%- elif states(weather_entity) == 'partlycloudy' and states('sun.sun') == 'below_horizon' -%} {{ weather_partlycloudy_night }} + {%- elif states(weather_entity) == 'lightning-rainy' and states('sun.sun') == 'above_horizon' -%} {{ weather_lightning_rainy_day }} + {%- elif states(weather_entity) == 'lightning-rainy' and states('sun.sun') == 'below_horizon' -%} {{ weather_lightning_rainy_night }} + {%- elif states(weather_entity) == 'execptional' and states('sun.sun') == 'above_horizon' -%} {{ weather_execptional_day }} + {%- elif states(weather_entity) == 'execptional' and states('sun.sun') == 'below_horizon' -%} {{ weather_execptional_night }} + {%- elif states(weather_entity) == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4055,7 +4585,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather01.temp_max ### Temperature MAX ### - message: '{{state_attr(ha_weather,"temperature") | round(0)}}°' + message: '{{state_attr(weather_entity,"temperature") | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4083,7 +4613,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather01.value03 - message: '{{state_attr(ha_weather,"wind_speed") | round(0)}} km/h' + message: '{{state_attr(weather_entity,"wind_speed") | round(0)}} km/h' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4101,21 +4631,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(accuweather_value,"forecast")[0].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(accuweather_value,"forecast")[0].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[0].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4169,7 +4699,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather01.value01 - message: "{{ state_attr(accuweather_value,'forecast')[0].precipitation_probability}} %" + message: "{{ state_attr(weather_entity,'forecast')[0].precipitation_probability}} %" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4242,21 +4772,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(ha_weather,"forecast")[0].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(ha_weather,"forecast")[0].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[0].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[0].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4270,7 +4800,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather02.temp_min ### Temperature MIN ### - message: '{{state_attr(ha_weather,"forecast")[0].templow | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[0].templow | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4286,7 +4816,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather02.temp_max ### Temperature MAX ### - message: '{{state_attr(ha_weather,"forecast")[0].temperature | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[0].temperature | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4312,7 +4842,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather02.value02 - message: '{{state_attr(ha_weather,"forecast")[0].precipitation| round(1)}} mm' + message: '{{state_attr(weather_entity,"forecast")[0].precipitation| round(1)}} mm' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4325,7 +4855,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather02.value03 - message: '{{state_attr(ha_weather,"forecast")[0].wind_speed | round(1)}} km/h' + message: '{{state_attr(weather_entity,"forecast")[0].wind_speed | round(1)}} km/h' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4343,21 +4873,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(accuweather_value,"forecast")[1].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(accuweather_value,"forecast")[1].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[1].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4411,7 +4941,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather02.value01 - message: "{{ state_attr(accuweather_value,'forecast')[1].precipitation_probability}} %" + message: "{{ state_attr(weather_entity,'forecast')[1].precipitation_probability}} %" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4484,21 +5014,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(ha_weather,"forecast")[1].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(ha_weather,"forecast")[1].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[1].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[1].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4512,7 +5042,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather03.temp_min ### Temperature MIN ### - message: '{{state_attr(ha_weather,"forecast")[1].templow | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[1].templow | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4528,7 +5058,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather03.temp_max ### Temperature MAX ### - message: '{{state_attr(ha_weather,"forecast")[1].temperature | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[1].temperature | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4554,7 +5084,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather03.value02 - message: '{{state_attr(ha_weather,"forecast")[1].precipitation| round(1)}} mm' + message: '{{state_attr(weather_entity,"forecast")[1].precipitation| round(1)}} mm' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4567,7 +5097,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather03.value03 - message: '{{state_attr(ha_weather,"forecast")[1].wind_speed | round(1)}} km/h' + message: '{{state_attr(weather_entity,"forecast")[1].wind_speed | round(1)}} km/h' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4585,21 +5115,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(accuweather_value,"forecast")[2].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(accuweather_value,"forecast")[2].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[2].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4653,7 +5183,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather03.value01 - message: "{{ state_attr(accuweather_value,'forecast')[2].precipitation_probability}} %" + message: "{{ state_attr(weather_entity,'forecast')[2].precipitation_probability}} %" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4726,21 +5256,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(ha_weather,"forecast")[2].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(ha_weather,"forecast")[2].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[2].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[2].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4754,7 +5284,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather04.temp_min ### Temperature MIN ### - message: '{{state_attr(ha_weather,"forecast")[2].templow | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[2].templow | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4770,7 +5300,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather04.temp_max ### Temperature MAX ### - message: '{{state_attr(ha_weather,"forecast")[2].temperature | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[2].temperature | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -4796,7 +5326,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather04.value02 - message: '{{state_attr(ha_weather,"forecast")[2].precipitation| round(1)}} mm' + message: '{{state_attr(weather_entity,"forecast")[2].precipitation| round(1)}} mm' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4809,7 +5339,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather04.value03 - message: '{{state_attr(ha_weather,"forecast")[2].wind_speed | round(1)}} km/h' + message: '{{state_attr(weather_entity,"forecast")[2].wind_speed | round(1)}} km/h' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4827,21 +5357,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(accuweather_value,"forecast")[3].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(accuweather_value,"forecast")[3].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[3].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4895,7 +5425,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather04.value01 - message: "{{ state_attr(accuweather_value,'forecast')[3].precipitation_probability}} %" + message: "{{ state_attr(weather_entity,'forecast')[3].precipitation_probability}} %" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -4968,21 +5498,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(ha_weather,"forecast")[3].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(ha_weather,"forecast")[3].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[3].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[3].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -4996,7 +5526,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather05.temp_min ### Temperature MIN ### - message: '{{state_attr(ha_weather,"forecast")[3].templow | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[3].templow | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -5012,7 +5542,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather05.temp_max ### Temperature MAX ### - message: '{{state_attr(ha_weather,"forecast")[3].temperature | round(0)}}°' + message: '{{state_attr(weather_entity,"forecast")[3].temperature | round(0)}}°' - delay: milliseconds: "{{ delay_value }}" @@ -5038,7 +5568,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather05.value02 - message: '{{state_attr(ha_weather,"forecast")[3].precipitation| round(1)}} mm' + message: '{{state_attr(weather_entity,"forecast")[3].precipitation| round(1)}} mm' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -5051,7 +5581,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather05.value03 - message: '{{state_attr(ha_weather,"forecast")[3].wind_speed | round(1)}} km/h' + message: '{{state_attr(weather_entity,"forecast")[3].wind_speed | round(1)}} km/h' - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -5069,21 +5599,21 @@ action: - variables: # weather PIC weather_icon: >- - {%- if state_attr(accuweather_value,"forecast")[4].condition == 'sunny' -%} {{ weather_sunny }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'cloudy' -%} {{ weather_cloudy }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'rainy' -%} {{ weather_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'pouring' -%} {{ weather_pouring }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'snowy' -%} {{ weather_snowy }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'hail' -%} {{ weather_hail }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'fog' -%} {{ weather_fog }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'windy' -%} {{ weather_windy }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'windy-variant' -%} {{ weather_windy-variant }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'lightning' -%} {{ weather_lightning }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'execptional' -%} {{ weather_execptional_day }} - {%- elif state_attr(accuweather_value,"forecast")[4].condition == 'clear-night' -%} {{ weather_clear_night }} + {%- if state_attr(weather_entity,"forecast")[4].condition == 'sunny' -%} {{ weather_sunny }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'cloudy' -%} {{ weather_cloudy }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'rainy' -%} {{ weather_rainy }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'pouring' -%} {{ weather_pouring }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'snowy' -%} {{ weather_snowy }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'hail' -%} {{ weather_hail }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'snowy-rainy' -%} {{ weather_snowy_rainy }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'fog' -%} {{ weather_fog }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'windy' -%} {{ weather_windy }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'windy-variant' -%} {{ weather_windy-variant }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'lightning' -%} {{ weather_lightning }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'partlycloudy' -%} {{ weather_partlycloudy_day }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'lightning-rainy' -%} {{ weather_lightning_rainy_day }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'execptional' -%} {{ weather_execptional_day }} + {%- elif state_attr(weather_entity,"forecast")[4].condition == 'clear-night' -%} {{ weather_clear_night }} {%- endif -%} ##### SET weather PIC on Home Page #### @@ -5137,7 +5667,7 @@ action: - service: "{{ command_text_printf }}" data: component: weather05.value01 - message: "{{ state_attr(accuweather_value,'forecast')[4].precipitation_probability}} %" + message: "{{ state_attr(weather_entity,'forecast')[4].precipitation_probability}} %" - delay: milliseconds: "{{ delay_value }}" - service: "{{ command_printf }}" @@ -5209,8 +5739,7 @@ action: hvac_mode: "{{ states(climate) }}" outdoor_temp: >- {%- if outdoortemp is match "sensor." and states(outdoortemp).state != "unavailable" -%} {{ states(outdoortemp) |round(0) }} - {%- elif weather == "Default" and state_attr(ha_weather, "temperature") != None -%} {{state_attr(ha_weather,"temperature") | round(0)}} - {%- elif weather == "AccuWeather" and state_attr(accuweather_value, "temperature") != None -%} {{state_attr(accuweather_value,"temperature") | round(0)}} + {%- elif state_attr(weather_entity, "temperature") != None -%} {{state_attr(weather_entity,"temperature") | round(0)}} {%- else -%} 0 {%- endif -%} heating_state: >- @@ -5351,6 +5880,9 @@ action: component: "bpage04_label" message: "{{ button_page04_label }}" + ## PAGE NOTIFICATION ## + - conditions: '{{ trigger.event.data.new_state.state == page_notification }}' + sequence: ##### Open Climate Settings ##### - conditions: @@ -5365,7 +5897,6 @@ action: data: cmd: "page {{ page_climate }}" - ##### Set Flame-Symbol ##### - conditions: - condition: trigger @@ -5380,7 +5911,6 @@ action: data: cmd: home.icon_top_04.pic={{ flame_pic }} - ##### Set Relay01-Symbol ##### - conditions: - condition: trigger @@ -5395,7 +5925,6 @@ action: data: cmd: home.icon_top_01.pic={{ relay01_pic }} - ##### Set Relay02-Symbol ##### - conditions: - condition: trigger @@ -5410,7 +5939,6 @@ action: data: cmd: home.icon_top_02.pic={{ relay02_pic }} - ##### Sync Hotwater Charge button-symbol ##### - conditions: - condition: trigger @@ -5497,4 +6025,4 @@ action: ############################################################# ##### CLOSE - Action ##### -############################################################# \ No newline at end of file +############################################################# diff --git a/nspanel_esphome.yaml b/nspanel_esphome.yaml index a9ba904..762c45c 100644 --- a/nspanel_esphome.yaml +++ b/nspanel_esphome.yaml @@ -124,6 +124,14 @@ api: - service: upload_tft then: - lambda: 'id(disp1)->upload_tft();' + + ##### SERVICE TO UPDATE THE TFT FILE from URL ##### + - service: upload_tft_url + variables: + url: string + then: + - lambda: 'id(disp1)->set_tft_url(url.c_str());' + - lambda: 'id(disp1)->upload_tft();' ##### Service to send a command "printf" directly to the display ##### - service: send_command_printf @@ -179,6 +187,7 @@ api: - wait_until: switch.is_on: nextion_init - lambda: 'id(disp1).set_component_font_color(component.c_str(), message);' + ##### Service to send a command "background color" directly to the display ##### - service: send_command_background_color variables: @@ -189,6 +198,46 @@ api: switch.is_on: nextion_init - lambda: 'id(disp1).set_component_background_color(component.c_str(), message);' + ##### Service to show a notification-message on the screen ##### + - service: notification_show + variables: + label: string + text: string + then: + - wait_until: + switch.is_on: nextion_init + - lambda: |- + id(disp1).send_command_printf("page notification"); + id(disp1).set_component_text_printf("notification.notifi_label", "%s", label.c_str()); + id(disp1).set_component_text_printf("notification.notifi_text01", "%s", text.c_str()); + id(notification_label).publish_state(label.c_str()); + id(notification_text).publish_state(text.c_str()); + - switch.turn_on: notification_unread + - if: + condition: + switch.is_on: notification_sound + then: + - rtttl.play: "two short:d=4,o=5,b=100:16e6,16e6" + + ##### Service to clear the notification ##### + - service: notification_clear + then: + - wait_until: + switch.is_on: nextion_init + - lambda: |- + id(notification_label).publish_state(""); + id(notification_text).publish_state(""); + - switch.turn_off: notification_unread + + ##### Service to play a rtttl tones ##### + # Example tones : https://codebender.cc/sketch:109888#RTTTL%20Songs.ino + - service: play_rtttl + variables: + song_str: string + then: + - rtttl.play: + rtttl: !lambda 'return song_str;' + #### Service to send thermostat cycle state #### - service: send_thermostat_cycle_state variables: @@ -404,7 +453,7 @@ binary_sensor: number: 27 inverted: true - ##### Restart NSPanel Button ##### + ##### Restart NSPanel Button - Setting Page ##### - platform: nextion name: ${device_name} Restart page_id: 7 @@ -413,6 +462,15 @@ binary_sensor: on_click: - button.press: restart_nspanel + ##### Restart NSPanel Button - Boot Page ##### + - platform: nextion + name: ${device_name} Restart + page_id: 8 + component_id: 5 + internal: true + on_click: + - button.press: restart_nspanel + ##### Sleep Modus NSPanel Button ##### - platform: nextion name: ${device_name} Sleep Modus @@ -472,12 +530,12 @@ sensor: reference_resistance: 10kOhm filters: - lambda: return x + id(temperature_correction_global); - on_value: - then: - - wait_until: - switch.is_on: nextion_init - - lambda: id(disp1).set_component_text_printf("home.current_temp", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page. - # - lambda: id(disp1).set_component_text_printf("climate.current_temp", "%.1f", id(temp_nspanel).state); +# on_value: +# then: +# - wait_until: +# switch.is_on: nextion_init +# - lambda: id(disp1).set_component_text_printf("home.current_temp", "%.1f°", id(temp_nspanel).state); # onboard temp (thermostat temp) to home page. +# - lambda: id(disp1).set_component_text_printf("climate.current_temp", "%.1f", id(temp_nspanel).state); ##### current value of page-climate target_temp ##### - platform: template @@ -549,6 +607,14 @@ text_sensor: name: ${device_name} BSSID disabled_by_default: true + - platform: template + name: ${device_name} Notification Label + id: notification_label + + - platform: template + name: ${device_name} Notification Text + id: notification_text + ##### last click sensor, the main action variable - push to HA ##### - platform: nextion nextion_id: disp1 @@ -675,9 +741,33 @@ switch: assumed_state: off optimistic: true + ##### Notification unread ##### + - platform: template + name: ${device_name} Notification unread + id: notification_unread + entity_category: config + restore_state: true + optimistic: true + + ##### Notification sound ##### + - platform: template + name: ${device_name} Notification sound + id: notification_sound + entity_category: config + restore_state: true + optimistic: true + + ##### Confirmation Message ##### + - platform: template + name: ${device_name} Confirmation Message + id: confirmation_message + entity_category: config + restore_state: false + optimistic: true + ##### UPDATE TFT DISPLAY ##### - platform: template - name: Update TFT display + name: ${device_name} Update TFT display id: tft_update entity_category: config turn_on_action: @@ -799,17 +889,10 @@ display: tft_url: ${nextion_update_url} on_setup: then: - - lambda: id(disp1).send_command_printf("page 9"); ##### CHANGE! - Loading page ##### + - lambda: id(disp1).send_command_printf("page 8"); - wait_until: api.connected - delay: 0.5s - - rtttl.play: "two short:d=4,o=5,b=100:16e6,16e6" - - delay: 0.5s - - switch.template.publish: - id: nextion_init - state: on - - lambda: id(disp1).send_command_printf("page 0"); #### home page ##### - - delay: 2s ##### gives the display time to update other components & set the home page ##### - number.set: id: display_brightness value: !lambda 'return id(display_brightness_global);' @@ -827,3 +910,7 @@ display: { id(disp1).set_component_value("settings.a02",1); } + - delay: 0.5s + - switch.template.publish: + id: nextion_init + state: on