cette version est pour une maison bien isolée, à étage ou toutes les pièces sont occupées.
petit rappel j’utilise la méthode des includes.
partie 1 climate.
créer un fichier climat.yaml et l’include dans configuration.yaml. vous avez ainsi vos thermostats.
###############
### cuisine ###
###############
- platform: generic_thermostat
name: Thermostat Cuisine
heater: switch.ch_cuisine
target_sensor: sensor.temperature_cuisine
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
#### salon ####
###############
- platform: generic_thermostat
name: Thermostat salon
heater: switch.ch_salle
target_sensor: sensor.temperature_salon
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
## CHambre 1 ##
###############
- platform: generic_thermostat
name: Thermostat chambre1
heater: switch.ch_chambre_1
target_sensor: sensor.temperature_chambre_1
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
## CHambre 2 ##
###############
- platform: generic_thermostat
name: Thermostat chambre2
heater: switch.ch_chambre_2
target_sensor: sensor.temperature_chambre_2
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
## CHambre 3 ##
###############
- platform: generic_thermostat
name: Thermostat chambre3
heater: switch.ch_chambre_3
target_sensor: sensor.temperature_chambre_3
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
## CHambre 4 ##
###############
- platform: generic_thermostat
name: Thermostat chambre4
heater: switch.ch_ch4
target_sensor: sensor.temperature_chambre_4
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
###############
##### SDB #####
###############
- platform: generic_thermostat
name: Thermostat salle de bain
heater: switch.ch_sdb
target_sensor: sensor.temperature_salle_de_bain
min_temp: 15
max_temp: 21
ac_mode: false
cold_tolerance: 0.5
hot_tolerance: 0.1
keep_alive:
minutes: 3
min_cycle_duration:
seconds: 60
away_temp: 15
precision: 0.1
partie 2 consigne marche arrêt et forcer.
créer les fichiers input_number.yaml, input_boolean.yaml, input_select.yaml et leurs includes dans configuration.yaml.
-
2/1 input_number.yaml
############################# ###### consigne CH ############ ############################# consigne_confort: name: confort initial: 21 min: 20 max: 24 step: 0.1 unit_of_measurement: °C consigne_normal: name: normal initial: 20 min: 19 max: 21 step: 0.1 unit_of_measurement: °C consigne_eco: name: Eco initial: 19 min: 16 max: 20 step: 0.1 unit_of_measurement: °C
-
2/2 input_boolean.yaml
############################# ######## chauffage ########## ############################# thermostats_on_off: name: Chauffage On / Off icon: mdi:thermostat-box thermostats_horaire: name: horaire on/off icon: mdi:thermostat-box
-
2/3 input_select.yaml
############################# ######## CH select ########## ############################# chauffage: name: Etats du Chauffage icon: mdi:home-minus options: - confort - normal - eco
partie 3 horaires. les on/off (horaire et chauffage ont été créer en * 2/2)
créer input_datetime.yaml et son include dans configuration.yaml
#############################
######## heures CH ##########
#############################
sejour_start_1:
has_date: false
has_time: true
sejour_stop_1:
has_date: false
has_time: true
sejour_start_2:
has_date: false
has_time: true
sejour_stop_2:
has_date: false
has_time: true
sejour_start_3:
has_date: false
has_time: true
sejour_stop_3:
has_date: false
has_time: true
la mise en forme:
bloc 1
type: entities
entities:
- entity: climate.thermostat_cuisine
- entity: climate.thermostat_salon
- type: section
- entity: climate.thermostat_chambre1
- entity: climate.thermostat_chambre2
- entity: climate.thermostat_chambre3
- entity: climate.thermostat_salle_de_bain
- type: section
- entity: climate.thermostat_chambre4
bloc 2
type: entities
entities:
- entity: input_boolean.thermostats_on_off
- entity: input_select.chauffage
- entity: input_number.consigne_confort
- entity: input_number.consigne_eco
- entity: input_number.consigne_normal
state_color: true
show_header_toggle: false
bloc 3
type: entities
entities:
- entity: input_boolean.thermostats_horaire
- type: section
- entity: input_datetime.sejour_start_1
name: départ
- entity: input_datetime.sejour_stop_1
name: fin
- type: section
- entity: input_datetime.sejour_start_2
name: départ
- entity: input_datetime.sejour_stop_2
name: fin
- type: section
- entity: input_datetime.sejour_start_3
name: départ
- entity: input_datetime.sejour_stop_3
name: fin
- type: section
state_color: true
j’ai utilisé multiple entiy row et des sensor tranche 1,2,3 pour ma carte du début voici le code
cards: null
type: entities
entities:
- entity: input_boolean.thermostats_horaire
- type: section
- entity: sensor.tranche_1
type: 'custom:multiple-entity-row'
state: true
show_state: false
entities:
- entity: input_datetime.sejour_start_1
name: départ
- entity: input_datetime.sejour_stop_1
name: fin
- type: section
- entity: sensor.tranche_2
state: true
show_state: false
entities:
- entity: input_datetime.sejour_start_2
name: départ
- entity: input_datetime.sejour_stop_2
name: fin
type: 'custom:multiple-entity-row'
- type: section
- entity: sensor.tranche_3
state: true
show_state: false
entities:
- entity: input_datetime.sejour_start_3
name: départ
- entity: input_datetime.sejour_stop_3
name: fin
type: 'custom:multiple-entity-row'
- type: section
state_color: true
4 les automations: a adapter à vos besoins
attention suite au rajout de température en baisse, remplacer turn on/off automation id par le numero de l’id correspondant (dans automation.yaml)
alias: 'CH changement consigne '
description: ''
trigger:
- platform: state
entity_id: input_select.chauffage
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: input_select.chauffage
state: confort
sequence:
- service: climate.set_temperature
data:
entity_id: all
temperature: '{{ states(''input_number.consigne_confort'') }}'
- conditions:
- condition: state
entity_id: input_select.chauffage
state: normal
sequence:
- service: climate.set_temperature
data:
entity_id: all
temperature: '{{ states(''input_number.consigne_normal'') }}'
- conditions:
- condition: state
entity_id: input_select.chauffage
state: eco
sequence:
- service: climate.set_temperature
data:
entity_id: all
temperature: '{{ states(''input_number.consigne_eco'') }}'
default: []
mode: single
alias: 'CH on/off '
description: ''
trigger:
- platform: state
entity_id: input_boolean.thermostats_on_off
condition: []
action:
- choose:
- conditions:
- condition: state
entity_id: input_boolean.thermostats_on_off
state: 'on'
sequence:
- service: climate.turn_on
data:
entity_id: all
- conditions:
- condition: state
entity_id: input_boolean.thermostats_on_off
state: 'off'
sequence:
- service: climate.turn_off
data:
entity_id: all
default: []
mode: single
alias: 'CH on/off horaire 1 et 2 '
description: ''
trigger:
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_start_1')[0:5])
or (states('sensor.time') == states('input_datetime.sejour_start_2')[0:5])
}}
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_stop_1')[0:5])
or (states('sensor.time') == states('input_datetime.sejour_stop_2')[0:5])
}}
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_start_1')[0:5]) or
(states('sensor.time') ==
states('input_datetime.sejour_start_2')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: normal
entity_id: input_select.chauffage
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_stop_2')[0:5]) or
(states('sensor.time') ==
states('input_datetime.sejour_stop_1')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: ecalias: 'CH on/off horaire 1 et 2 '
description: ''
trigger:
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_start_1')[0:5])
or (states('sensor.time') == states('input_datetime.sejour_start_2')[0:5])
}}
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_stop_1')[0:5])
or (states('sensor.time') == states('input_datetime.sejour_stop_2')[0:5])
}}
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_start_1')[0:5]) or
(states('sensor.time') ==
states('input_datetime.sejour_start_2')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: normal
entity_id: input_select.chauffage
- service: automation.turn_off
data:
entity_id: CH ext en baisse # id de automation.yaml ex: 1609847554698
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_stop_2')[0:5]) or
(states('sensor.time') ==
states('input_datetime.sejour_stop_1')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: eco
entity_id: input_select.chauffage
- service: automation.turn_on
data:
entity_id: CH ext en baisse # id de automation.yaml ex: 1609847554698
default: []
mode: single
alias: CH on/off horaire 3
description: ''
trigger:
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_start_3')[0:5])
}}
- platform: template
value_template: >-
{{ (states('sensor.time') == states('input_datetime.sejour_stop_3')[0:5])
}}
condition: []
action:
- choose:
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_start_3')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: confort
entity_id: input_select.chauffage
- service: automation.turn_off
data:
service: CH ext en baisse # id de automation.yaml ex: 1609847554698
- conditions:
- condition: template
value_template: >-
{{ (states('sensor.time') ==
states('input_datetime.sejour_stop_3')[0:5]) }}
sequence:
- service: input_select.select_option
data:
option: eco
entity_id: input_select.chauffage
- service: automation.turn_on
data:
service: CH ext en baisse # id de automation.yaml ex: 1609847554698
default: []
mode: single
addons:
sensor.yaml pour le visuel des tranches horaires
#############################
######## tranches ##########
#############################
- platform: template
sensors:
tranche_1:
friendly_name: tranche 1
value_template: >-
{{ (states.sensor.time.state >= states.input_datetime.sejour_start_1.state) and (states.sensor.time.state <= states.input_datetime.sejour_stop_1.state)}}
icon_template: >-
{% if is_state('sensor.tranche_1', 'True') %}
mdi:lightning-bolt: mdi:radiator
{% else %}
mdi:sleep
{% endif %}
- platform: template
sensors:
tranche_2:
friendly_name: tranche 2
value_template: >-
{{ (states.sensor.time.state >= states.input_datetime.sejour_start_2.state) and (states.sensor.time.state <= states.input_datetime.sejour_stop_2.state)}}
icon_template: >-
{% if is_state('sensor.tranche_2', 'True') %}
mdi:lightning-bolt: mdi:radiator
{% else %}
mdi:sleep
{% endif %}
- platform: template
sensors:
tranche_3:
friendly_name: tranche 3
value_template: >-
{{ (states.sensor.time.state >= states.input_datetime.sejour_start_3.state) and (states.sensor.time.state <= states.input_datetime.sejour_stop_3.state)}}
icon_template: >-
{% if is_state('sensor.tranche_3', 'True') %}
mdi:lightning-bolt: mdi:radiator
{% else %}
mdi:sleep
{% endif %}
petit rajout:
en cas de baisse rapide de température extérieur: 3c° en 1h augmentation temporaire du chauffage si pas en normal ou confort.
binary_sensor.yaml
- platform: trend
sensors:
temp_en baisse:
entity_id: sensor.temperature_ext
sample_duration: 7200
max_samples: 120
min_gradient: -0.0008
device_class: cold
temp_en hausse:
entity_id: sensor.temperature_ext
sample_duration: 7200
max_samples: 120
min_gradient: 0.0008
device_class: heat
automation:
alias: CH ext en baisse
description: ''
trigger:
- platform: state
entity_id: binary_sensor.temp_en_baisse
condition:
- condition: state
entity_id: input_select.chauffage
state: eco
action:
- choose:
- conditions:
- condition: state
entity_id: binary_sensor.temp_en_baisse
state: 'off'
sequence:
- service: input_select.select_option
entity_id: input_select.chauffage
data:
option: eco
- conditions:
- condition: state
entity_id: binary_sensor.temp_en_baisse
state: 'on'
sequence:
- service: input_select.select_option
entity_id: input_select.chauffage
data:
option: confort
default: []
mode: single