111
blueprint.yaml
111
blueprint.yaml
@@ -6,6 +6,8 @@ blueprint:
|
|||||||
name: NSPanel Configuration
|
name: NSPanel Configuration
|
||||||
description: v2.0.0 - Configuration and synchronization NSpanele via Blueprint
|
description: v2.0.0 - Configuration and synchronization NSpanele via Blueprint
|
||||||
domain: automation
|
domain: automation
|
||||||
|
homeassistant:
|
||||||
|
min_version: 2022.11.1
|
||||||
input:
|
input:
|
||||||
|
|
||||||
##### MAIN NAME #####
|
##### MAIN NAME #####
|
||||||
@@ -127,6 +129,12 @@ blueprint:
|
|||||||
selector:
|
selector:
|
||||||
entity:
|
entity:
|
||||||
domain: climate
|
domain: climate
|
||||||
|
climate_optimistic:
|
||||||
|
name: Climate control optimistic mode (BUGGY!)
|
||||||
|
default: false
|
||||||
|
description: Depends on your climate device and HA-Integration. If optimisitc mode is *off* then changes are made wait for response from device. This can cause delays. If *on* we assume changes are set and update the display immediately.
|
||||||
|
selector:
|
||||||
|
boolean:
|
||||||
|
|
||||||
##### HARDWARE BUTTONS #####
|
##### HARDWARE BUTTONS #####
|
||||||
left_button_entity:
|
left_button_entity:
|
||||||
@@ -732,7 +740,7 @@ trigger_variables:
|
|||||||
right_button: "binary_sensor.{{ nspanel_name_trigger }}_right_button"
|
right_button: "binary_sensor.{{ nspanel_name_trigger }}_right_button"
|
||||||
weather_forcast_button: "binary_sensor.{{ nspanel_name_trigger }}_weather_forcast"
|
weather_forcast_button: "binary_sensor.{{ nspanel_name_trigger }}_weather_forcast"
|
||||||
nextion_inited_trigger: "switch.{{ nspanel_name_trigger }}_nextion_inited"
|
nextion_inited_trigger: "switch.{{ nspanel_name_trigger }}_nextion_inited"
|
||||||
# current_page: "sensor.{{ nspanel_name_trigger }}_current_page"
|
# current_page: "sensor.{{ nspanel_name_trigger }}_current_page"
|
||||||
current_page: "sensor.{{ nspanel_name_trigger }}_currentpage"
|
current_page: "sensor.{{ nspanel_name_trigger }}_currentpage"
|
||||||
hotwatercharge: !input "hotwatercharge"
|
hotwatercharge: !input "hotwatercharge"
|
||||||
heatingsystemflame: !input "heatingsystemflame"
|
heatingsystemflame: !input "heatingsystemflame"
|
||||||
@@ -767,6 +775,7 @@ variables:
|
|||||||
delay_jump_page: !input "delay"
|
delay_jump_page: !input "delay"
|
||||||
sync_slider_ha: !input "sync_slider_ha"
|
sync_slider_ha: !input "sync_slider_ha"
|
||||||
sync_value_ha: !input "sync_value_ha"
|
sync_value_ha: !input "sync_value_ha"
|
||||||
|
climate_optimistic: !input "climate_optimistic"
|
||||||
|
|
||||||
##### TFT UPLOAD #####
|
##### TFT UPLOAD #####
|
||||||
tft_upload: "esphome.{{ nspanel_name }}_upload_tft"
|
tft_upload: "esphome.{{ nspanel_name }}_upload_tft"
|
||||||
@@ -2683,11 +2692,19 @@ action:
|
|||||||
then:
|
then:
|
||||||
- variables:
|
- variables:
|
||||||
current_setpoint: "{{state_attr(climate, 'temperature') | round(1)}}"
|
current_setpoint: "{{state_attr(climate, 'temperature') | round(1)}}"
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ climate_optimistic == true }}'
|
||||||
|
then:
|
||||||
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
|
data:
|
||||||
|
value: "{{ current_setpoint -1 }}"
|
||||||
- service: climate.set_temperature
|
- service: climate.set_temperature
|
||||||
data:
|
data:
|
||||||
entity_id: !input climate
|
entity_id: !input climate
|
||||||
#hvac_mode: 'heat'
|
#hvac_mode: 'heat'
|
||||||
temperature: "{{ current_setpoint -1 }}"
|
temperature: "{{ current_setpoint -1 }}"
|
||||||
|
|
||||||
|
|
||||||
##### Page Climatesettings - increasetemp #####
|
##### Page Climatesettings - increasetemp #####
|
||||||
- conditions: '{{ trigger.event.data.new_state.state == "releaseincreasetemp" }}'
|
- conditions: '{{ trigger.event.data.new_state.state == "releaseincreasetemp" }}'
|
||||||
@@ -2698,12 +2715,73 @@ action:
|
|||||||
then:
|
then:
|
||||||
- variables:
|
- variables:
|
||||||
current_setpoint: "{{state_attr(climate, 'temperature') | round(1)}}"
|
current_setpoint: "{{state_attr(climate, 'temperature') | round(1)}}"
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ climate_optimistic == true }}'
|
||||||
|
then:
|
||||||
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
|
data:
|
||||||
|
value: "{{ current_setpoint +1 }}"
|
||||||
- service: climate.set_temperature
|
- service: climate.set_temperature
|
||||||
data:
|
data:
|
||||||
entity_id: !input climate
|
entity_id: !input climate
|
||||||
#hvac_mode: 'heat'
|
#hvac_mode: 'heat'
|
||||||
temperature: "{{ current_setpoint +1 }}"
|
temperature: "{{ current_setpoint +1 }}"
|
||||||
|
|
||||||
|
##### Page Climatesettings - climateslider #####
|
||||||
|
- conditions: '{{ trigger.event.data.new_state.state is match "climateslider\d+" and trigger.event.data.new_state.state == states(last_click_climatesettings) }}'
|
||||||
|
sequence:
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ states(climate) != "off" }}'
|
||||||
|
then:
|
||||||
|
- variables:
|
||||||
|
#climateslider: '{{ trigger.event.data.new_state.state |replace("climateslider","") | int }}'
|
||||||
|
new_setpoint: >-
|
||||||
|
{%- if trigger.event.data.new_state.state == "climateslider0" -%} 13.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider1" -%} 13.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider2" -%} 14.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider3" -%} 14.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider4" -%} 15.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider5" -%} 15.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider6" -%} 16.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider7" -%} 16.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider8" -%} 17.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider9" -%} 17.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider10" -%} 18.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider11" -%} 18.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider12" -%} 19.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider13" -%} 19.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider14" -%} 20.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider15" -%} 20.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider16" -%} 21.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider17" -%} 21.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider18" -%} 22.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider19" -%} 22.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider20" -%} 23.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider21" -%} 23.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider22" -%} 24.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider23" -%} 24.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider24" -%} 25.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider25" -%} 25.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider26" -%} 26.0
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider27" -%} 26.5
|
||||||
|
{%- elif trigger.event.data.new_state.state == "climateslider28" -%} 27.0
|
||||||
|
{%- endif -%}
|
||||||
|
- if:
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ climate_optimistic == true }}'
|
||||||
|
then:
|
||||||
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
|
data:
|
||||||
|
value: "{{ new_setpoint }}"
|
||||||
|
- service: climate.set_temperature
|
||||||
|
data:
|
||||||
|
entity_id: !input climate
|
||||||
|
#hvac_mode: 'heat'
|
||||||
|
temperature: "{{ new_setpoint }}"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -4233,7 +4311,6 @@ action:
|
|||||||
alias: 'climate page'
|
alias: 'climate page'
|
||||||
sequence:
|
sequence:
|
||||||
- variables:
|
- variables:
|
||||||
# target_temp: "{{state_attr(climate, 'temperature') | round(1)}}"
|
|
||||||
hvac_mode: "{{ states(climate) }}"
|
hvac_mode: "{{ states(climate) }}"
|
||||||
outdoor_temp: >-
|
outdoor_temp: >-
|
||||||
{%- if outdoortemp is match "sensor." -%} {{ states(outdoortemp) |round(0) }}
|
{%- if outdoortemp is match "sensor." -%} {{ states(outdoortemp) |round(0) }}
|
||||||
@@ -4259,21 +4336,21 @@ action:
|
|||||||
then:
|
then:
|
||||||
- variables:
|
- variables:
|
||||||
target_temp: "{{state_attr(climate, 'temperature') | round(1)}}"
|
target_temp: "{{state_attr(climate, 'temperature') | round(1)}}"
|
||||||
- service: "{{ command_text_printf }}"
|
# - service: "{{ command_text_printf }}"
|
||||||
data:
|
# data:
|
||||||
component: target_temp
|
# component: target_temp
|
||||||
message: "{{target_temp}}°"
|
# message: "{{target_temp}}°"
|
||||||
- service: "{{ command_thermostat_cycle }}"
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
data:
|
data:
|
||||||
value: "{{target_temp}}"
|
value: "{{target_temp}}"
|
||||||
else:
|
else:
|
||||||
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
|
data:
|
||||||
|
value: "0"
|
||||||
- service: "{{ command_text_printf }}"
|
- service: "{{ command_text_printf }}"
|
||||||
data:
|
data:
|
||||||
component: target_temp
|
component: target_temp
|
||||||
message: " "
|
message: " "
|
||||||
- service: "{{ command_thermostat_cycle }}"
|
|
||||||
data:
|
|
||||||
value: "0"
|
|
||||||
|
|
||||||
- service: "{{ command_text_printf }}"
|
- service: "{{ command_text_printf }}"
|
||||||
data:
|
data:
|
||||||
@@ -4399,6 +4476,8 @@ action:
|
|||||||
id: climate_state
|
id: climate_state
|
||||||
- condition: template
|
- condition: template
|
||||||
value_template: '{{ states(current_page) == page_climate }}'
|
value_template: '{{ states(current_page) == page_climate }}'
|
||||||
|
- condition: template
|
||||||
|
value_template: '{{ climate_optimistic == false }}'
|
||||||
sequence:
|
sequence:
|
||||||
- variables:
|
- variables:
|
||||||
heating_state: >-
|
heating_state: >-
|
||||||
@@ -4424,21 +4503,21 @@ action:
|
|||||||
- condition: template
|
- condition: template
|
||||||
value_template: '{{ trigger.event.data.new_state.state != "off" }}'
|
value_template: '{{ trigger.event.data.new_state.state != "off" }}'
|
||||||
then:
|
then:
|
||||||
- service: "{{ command_text_printf }}"
|
# - service: "{{ command_text_printf }}"
|
||||||
data:
|
# data:
|
||||||
component: target_temp
|
# component: target_temp
|
||||||
message: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}°"
|
# message: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}°"
|
||||||
- service: "{{ command_thermostat_cycle }}"
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
data:
|
data:
|
||||||
value: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}"
|
value: "{{trigger.event.data.new_state.attributes.temperature | round(1)}}"
|
||||||
else:
|
else:
|
||||||
|
- service: "{{ command_thermostat_cycle }}"
|
||||||
|
data:
|
||||||
|
value: "0"
|
||||||
- service: "{{ command_text_printf }}"
|
- service: "{{ command_text_printf }}"
|
||||||
data:
|
data:
|
||||||
component: target_temp
|
component: target_temp
|
||||||
message: " "
|
message: " "
|
||||||
- service: "{{ command_thermostat_cycle }}"
|
|
||||||
data:
|
|
||||||
value: "0"
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
21
esphome.yaml
21
esphome.yaml
@@ -50,6 +50,7 @@ external_components:
|
|||||||
##### ESPHOME CONFIGURATION #####
|
##### ESPHOME CONFIGURATION #####
|
||||||
esphome:
|
esphome:
|
||||||
name: ${device_name}
|
name: ${device_name}
|
||||||
|
min_version: 2022.10.2
|
||||||
|
|
||||||
##### TYPE OF ESP BOARD #####
|
##### TYPE OF ESP BOARD #####
|
||||||
esp32:
|
esp32:
|
||||||
@@ -311,6 +312,8 @@ api:
|
|||||||
id(disp1).send_command_printf("climate_left.pic=%i", left);
|
id(disp1).send_command_printf("climate_left.pic=%i", left);
|
||||||
id(disp1).send_command_printf("climate_middle.pic=%i", mid);
|
id(disp1).send_command_printf("climate_middle.pic=%i", mid);
|
||||||
id(disp1).send_command_printf("climate_right.pic=%i", right);
|
id(disp1).send_command_printf("climate_right.pic=%i", right);
|
||||||
|
// send target-temp
|
||||||
|
id(disp1).set_component_text_printf("target_temp", "%.1f°", value);
|
||||||
|
|
||||||
|
|
||||||
##### START - GLOBALS CONFIGURATION #####
|
##### START - GLOBALS CONFIGURATION #####
|
||||||
@@ -406,15 +409,15 @@ binary_sensor:
|
|||||||
- switch.toggle: sleep_modus
|
- switch.toggle: sleep_modus
|
||||||
|
|
||||||
##### Hotwater Charge #####
|
##### Hotwater Charge #####
|
||||||
- platform: nextion
|
# - platform: nextion
|
||||||
name: ${device_name} Hotwater Charge
|
# name: ${device_name} Hotwater Charge
|
||||||
page_id: 6
|
# page_id: 6
|
||||||
component_id: 20
|
# component_id: 20
|
||||||
on_click:
|
# on_click:
|
||||||
- homeassistant.service:
|
# - homeassistant.service:
|
||||||
service: switch.toggle
|
# service: switch.toggle
|
||||||
data:
|
# data:
|
||||||
entity_id: ${ha_hotwater_charge}
|
# entity_id: ${ha_hotwater_charge}
|
||||||
|
|
||||||
|
|
||||||
##### START - SENSOR CONFIGURATION #####
|
##### START - SENSOR CONFIGURATION #####
|
||||||
|
|||||||
Reference in New Issue
Block a user