Quelques soit votre chauffage, vos thermostats ou votre contrôleur domotique, il y a de forte chance que vous rencontrez des difficultés à organiser vos consignes de chauffage. J’ai enfin trouvé la solution pour mon chauffage et je veux la partager avec vous.
Entrées numériques – Consignes de chauffage
Il vous faut d’abord créer des entrées numériques virtuelles (input_number sur home assistant par exemple). Ces virtuelles vont représenter la consigne de vos pièces en temps normal. J’ai poussé le concept en créant un virtuel par type de pièce. J’ai donc un virtuel pour les « chambres adultes », « chambre enfants », « pièces de vie », « salle de bain »…
Scénarios
J’ai créé plusieurs scénarios (automatisations) suivant mes journées pour mettre à jours ces virtuelles. Par exemple un scenario se lance à 6:30 pour préparer le levé, il augmente la température des chambres, des salles de bains et des pièces à vivre pour obtenir le meilleurs confort au réveil. Un autre scénario se lance en semaine lorsque tous le monde a quitté la maison, et diminue les consignes de température. Et ainsi de suite pour le reste de la journée.
Les modes de chauffages
Jusque ici, c’est simple mais pourquoi ne pas mettre à jours directement les consignes des thermostats ? C’est la que les modes entre en jeux. Disons que vous voulez dire à votre maison vous êtes malade aujourd’hui ou exceptionnellement vous serez absent. Le faite de séparer les consignes en temps normal avec les consignes ponctuelles vous permet de passer de l’un à l’autre sans problème.
L’étape suivante serait donc de mettre à jours les thermostats. Pour cela à la fin de chaque automatisation je lance un script (ou change un virtuel qui lance une automatisation) qui va décider en fonction du mode la température à appliquer. Par exemple si le mode malade est actif, ignore le virtuel et mets tel température pour les pièces à vivres, chambres et couloirs. Le mode travail à la maison est activé, ignore le virtuel et mets tel température pour les pièces à vivre, le bureau et ainsi de suite. Ces mode sont d’autres virtuelles que vous pouvez automatiser. Par exemple à 21:00 vous pouvez couper le mode malade et repasser en mode normal. Ou alors à la fin d’événements, vous pouvez arrêter le mode absent et lancer le mode normal. Dans tous les cas le système pourra reprendre le mode normal à n’importe quel moment.
Voici mon code sur home assistant:
Automatisations:
- alias: "Comfort le matin"
trigger:
platform: time
at: '05:45:00'
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_common_rooms
value: 21.5
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bathrooms
value: 22
- service: input_number.set_value
data:
entity_id:
- input_number.target_preset_bedrooms
- input_number.target_preset_corridors
value: 20
- service: input_number.set_value
data:
entity_id: input_number.target_preset_kid_bedrooms
value: 21
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: "Eteindre le chauffage départ Kita/Travail"
trigger:
platform: state
entity_id: binary_sensor.presence_any
to: 'off'
condition:
condition: and
conditions:
- condition: time
after: '06:00'
before: '11:00'
weekday:
- mon
- tue
- wed
- thu
- fri
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_common_rooms
value: 19.5
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bathrooms
value: 19
- service: input_number.set_value
data:
entity_id:
- input_number.target_preset_bedrooms
- input_number.target_preset_corridors
- input_number.target_preset_kid_bedrooms
value: 18
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: "11:00 - Baisse chauffage à l'étage"
trigger:
platform: time
at: '11:00'
condition:
condition: or
conditions:
- condition: time
weekday:
- sat
- sun
- condition: state
entity_id: binary_sensor.presence_any
state: 'on'
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_kid_bedrooms
value: 20
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bedrooms
value: 18
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bathrooms
value: 20
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: "Monter le chauffage retour de la kita"
trigger:
platform: time
at: '15:00'
condition:
condition: time
weekday:
- mon
- tue
- wed
- thu
- fri
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_kid_bedrooms
value: 20
- service: input_number.set_value
data:
entity_id: input_number.target_preset_common_rooms
value: 21.5
- service: input_number.set_value
data:
entity_id: input_number.target_preset_corridors
value: 20
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: "Coucher des enfants"
trigger:
platform: time
at: '17:00'
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bathrooms
value: 22
- service: input_number.set_value
data:
entity_id: input_number.target_preset_kid_bedrooms
value: 19
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: "Coucher du dernier"
trigger:
platform: time
at: '01:00'
action:
- service: input_number.set_value
data:
entity_id: input_number.target_preset_bathrooms
value: 19
- service: input_number.set_value
data:
entity_id: input_number.target_preset_common_rooms
value: 19.5
- service: input_number.set_value
data:
entity_id: input_number.target_preset_corridors
value: 19
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: Annuler mode chauffage après une journée
trigger:
platform: time
at: '17:00'
condition:
condition: or
conditions:
- condition: state
entity_id: input_select.heating_mode
state: 'Malade'
- condition: state
entity_id: input_select.heating_mode
state: 'Home Office'
action:
- service: input_select.select_option
data:
entity_id: input_select.heating_mode
option: Normal
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: Changer le mode chauffage lorsque mode vacance activé
trigger:
platform: state
entity_id: input_boolean.vacation_mode
to: 'on'
action:
- service: input_select.select_option
data:
entity_id: input_select.heating_mode
option: 'En vacance'
- service: script.turn_on
data:
entity_id: script.update_thermostats
- alias: Changer le mode de chauffage lorsque le mode vacance est terminé
trigger:
platform: state
entity_id: input_boolean.vacation_mode
to: 'off'
action:
- service: input_select.select_option
data:
entity_id: input_select.heating_mode
option: Normal
- service: script.turn_on
data:
entity_id: script.update_thermostats
Script:
update_thermostats:
alias: Mettre à jours les thermostats
sequence:
- service: climate.set_temperature
data_template:
entity_id:
- climate.chambre_rdc
- climate.chambre_florian
temperature: >
{% if is_state('input_select.heating_mode', 'Normal') %}
{{ states('input_number.target_preset_kid_bedrooms')}}
{% elif is_state('input_select.heating_mode', 'Malade') %}
20
{% elif is_state('input_select.heating_mode', 'Home Office') %}
{{ states('input_number.target_preset_kid_bedrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% endif %}
- service: climate.set_temperature
data_template:
entity_id: climate.chambre_1er
temperature: >
{% if is_state('input_select.heating_mode', 'Normal') %}
{{ states('input_number.target_preset_bedrooms') }}
{% elif is_state('input_select.heating_mode', 'Malade') %}
20
{% elif is_state('input_select.heating_mode', 'Home Office') %}
{{ states('input_number.target_preset_bedrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% endif %}
- service: climate.set_temperature
data_template:
entity_id:
- climate.salon
- climate.cuisine
temperature: >
{% if is_state('input_select.heating_mode', 'Normal') %}
{{ states('input_number.target_preset_common_rooms') }}
{% elif is_state('input_select.heating_mode', 'Malade') %}
21.5
{% elif is_state('input_select.heating_mode', 'Home Office') %}
21.5
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% endif %}
- service: climate.set_temperature
data_template:
entity_id: climate.salle_de_bain
temperature: >
{% if is_state('input_select.heating_mode', 'Normal') %}
{{ states('input_number.target_preset_bathrooms') }}
{% elif is_state('input_select.heating_mode', 'Malade') %}
22
{% elif is_state('input_select.heating_mode', 'Home Office') %}
{{ states('input_number.target_preset_bathrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% endif %}
- service: climate.set_temperature
data_template:
entity_id: climate.buanderie
temperature: >
{% if is_state('input_select.guest_mode', 'Cave') or is_state('input_select.guest_mode', 'Cave & Toit') %}
{{ states('input_number.target_preset_bathrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% else %}
19
{% endif %}
- service: climate.set_temperature
data_template:
entity_id: climate.escalier
temperature: "{{ states('input_number.target_preset_corridors') }}"
- service: climate.set_temperature
data_template:
entity_id: climate.chambre_cave
temperature: >
{% if is_state('input_select.guest_mode', 'Cave') or is_state('input_select.guest_mode', 'Cave & Toit') %}
{{ states('input_number.target_preset_bedrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% else %}
18
{% endif %}
- service: climate.set_temperature
data_template:
entity_id: climate.chambre_toit
temperature: >
{% if is_state('input_select.guest_mode', 'Toit') or is_state('input_select.guest_mode', 'Cave & Toit') %}
{{ states('input_number.target_preset_bedrooms') }}
{% elif is_state('input_select.heating_mode', 'En vacance') %}
17
{% else %}
18
{% endif %}
Je compte bien améliorer ce système notamment en utilisant le « machine learning ». De cette façon j’optimiserais la reprise de chauffage. Imaginons j’ai un virtuel représentant une heure de la journée (heure de retour au domicile) qui s’actualise en fonction de son historique. Mon système pourra le matin vérifier à quelle heure je rentre le jeudi et programmer une mis à jours de ma consigne virtuelle à temps. Ou alors il détecte le faite que je quitte mon travail, sachant mon temps de transport il optimise la mise en route du chauffage. Une autre optimisation serait lorsque ma maison sait que je ne suis pas partis au travail, elle me demande si je suis malade ou je compte travailler à la maison et mets à jour le mode de chauffage en fonction de ma réponse.
Bref le système est universel et extensible permettant d’être au plus près des besoins de chauffage de votre domicile. N’hésitez pas à partager vos avis et vos résultats si vous avez essayé de le mettre en place.