Introduction.
Je vous propose de mettre en place une automatisation pour que vos volets roulants se ferment l’été lorsque le soleil passe devant votre ouverture et s’ouvrent l’hiver afin de limiter les montés / descente de température dans la maison. L’idée est donc de limiter l’impact du soleil à monter la température de la maison l’été et à se servir du soleil pour grappiller quelques degrés l’hiver.
Je vais essayer de vous parler des différentes manières de structurer votre configuration.yaml
.
Mise à jour : 17/11/2020 – Temps de lecture / réalisation : < 3
/ 15 min – Difficulté : Faible / Moyenne.
Prérequis, matériels nécessaires & utilisés :
- Version de HA : V117.1
- File Editor d’installé.
- Avoir ses volets roulants connectés à HA
- Avoir définit la position de sa maison dans HA
Créer les entités dont nous aurons besoin
Le soleil
Bonne nouvelle, cette entité est de base dans HA, donc pas besoin de faire quoi que ce soit.
Attention cependant elle est basé sur la position de votre maison entrée sur HA
Pour définir la position de votre maison, allez dans Configuration
puis l’onglet Général
Vous pouvez aller vérifier dans outils de développement
puis l’onglet ÉTATS
et dans Entité
tapez sun.sun
.
Nous voyons deux valeurs qui vont nous intéresser :
- L’elevation qui correspond à la hauteur du soleil dans le ciel (axe vertical)
- L’azimuth qui correspond à la position (d’est en ouest) du soleil dans le ciel (axe horizontal)
Sensor elevation et azimuth
Pour utiliser et suivre les attributs de notre entité sun
qui sont l’elevation
et l'azimuth
je vous propose de créer ces valeurs dans un template sensor. Pour ce faire, dans le fichier configuration.yaml
dans la partie sensor
nous allons ajouter :
sensor:
- platform: template
sensors:
sunelevation:
friendly_name: "elevation soleil"
value_template: "{{ state_attr('sun.sun', 'elevation') }}"
#on indique que la valeur de cette entité sera égale à la valeur de l'attribut elevation de l'entité sun.sun
sunazimuth:
friendly_name: "azimut soleil"
value_template: "{{ state_attr('sun.sun', 'azimuth') }}"
#on indique que la valeur de cette entité sera égale à la valeur de l'attribut azimuth de l'entité sun.sun
Ce qui va nous créer :
Nous devons maintenant à quel azmiuth le soleil passe devant l’ouverture sur lequel nous avons notre volet roulant, pour ce faire je vous propose ce site.
Il vous permet de connaitre la position du soleil à une date, heure et lieu précis.
Prenons l’exemple des fenêtres sud du palais de l’Élysée:
Nous pouvons en déduire que le soleil donnera à partir de l’azimuth 140:
Et qu’il ne tapera plus contre la fenêtre à partir de l’azimuth 140:
Binary_sensor thereshold
Maintenant que nous connaissons à quel azimuth le soleil tape sur notre fenètre nous allons créer une entité qui sera à on
quand le soleil sera susceptible de taper contre notre fenêtre et à off
quand ca ne sera plus le cas.
Pour ce faire, dans le fichier configuration.yaml
dans la partie binary_sensor
nous allons ajouter :
binary_sensor:
- platform: threshold
name: "soleil volet salon sud"
upper: 270
lower: 140
entity_id: sensor.sunazimuth
#on a donc créé une entité qui sera active si la valeur de sensor.sunazimuth est supérieure à 140 et inférieure à 270
Ce qui va nous créer :
(Optionnel) Input_select mode volet roulant
Cette partie n’est pas obligatoire, elle vous permet simplement de définir plusieurs modes de fonctionnement pour votre volet roulant.
Pour ce faire, dans le fichier configuration.yaml
dans la partie input_select
nous allons ajouter :
input_select:
modevoletsalons:
name: mode volet salon sud
options:
- Auto chauf
- Auto froid
- Manuel
Ce qui va nous créer :
Automatisations
Maintenant que nous avons tous ce dont nous avons besoin, passons aux automatisations :
Pour l’été quand on veut limiter la monté en température
Dans l’été pour que le volet descende seul quand le soleil va passer devant votre fenêtre nous allons procéder de la manière suivante :
Dans le fichier automation.yaml
nous allons ajouter :
# //////////////////////////////// mode froid ////////////////////////////
# ///////// froid volet salon sud /////////
- id: '1576153777211'
alias: froid volet salon sud fermeture
description: froid volet salon sud fermeture
trigger:
- entity_id: binary_sensor.soleil_azimuth_volet_salon_sud
from: 'off'
platform: state
to: 'on'
#cette automatisation va se déclencher si notre binary_sensor créé précédemment passe de l'état off à on
condition:
- condition: state
entity_id: input_select.modevoletsalons
state: Auto froid
#à condition que notre input_select soit sur Auto froid
- condition: template
value_template: '{{ state_attr("cover.volet_salon_sud", "current_position") > 60 }}'
#et à condition que mon volet soit ouvert à plus de 60
action:
- data:
entity_id: cover.volet_salon_sud
position: 45
service: cover.set_cover_position
#dans ce cas mon volet se met en position 45
Toujours dans l’été pour que le volet remonte seul quand le soleil ne passe plus devant votre fenêtre nous allons procéder de la manière suivante :
Dans le fichier automation.yaml
nous allons ajouter :
- id: '1576153777212'
alias: froid volet salon sud ouverture
description: froid volet salon sud ouverture
trigger:
- entity_id: binary_sensor.soleil_azimuth_volet_salon_sud
from: 'on'
platform: state
to: 'off'
#cette automatisation va se déclencher si notre binary_sensor créé précédemment passe de l'état on à off
condition:
- condition: state
entity_id: input_select.modevoletsalons
state: Auto froid
#à condition que notre input_select soit sur Auto froid
- condition: numeric_state
entity_id: sensor.sunelevation
above: -2
#et à condition que l'élévation soit au dessus de -2 (qu'il ne fasse pas nuit)
- condition: template
value_template: '{{ state_attr("cover.volet_salon_sud", "current_position") == 45 }}'
#et à condition que mon volet soit à la position 45 (que je n'y ai pas touché)
action:
- data:
entity_id: cover.volet_salon_sud
position: 100
service: cover.set_cover_position
#dans ce cas mon volet se met en position 100 (complètement ouvert)
Pour l’hiver quand on veut utiliser gratuitement la chaleur du soleil
Dans l’hiver pour que le volet monte seul quand le soleil va passer devant votre fenêtre nous allons procéder de la manière suivante :
Dans le fichier automation.yaml
nous allons ajouter :
# //////////////////////////////// mode chauf ////////////////////////////
# ///////// chauf volet salon sud /////////
- id: '1576153778211'
alias: chauf volet salon sud ouverture
description: chauf volet salon sud ouverture
trigger:
- entity_id: binary_sensor.soleil_azimuth_volet_salon_sud
from: 'off'
platform: state
to: 'on'
#cette automatisation va se déclencher si notre binary_sensor créé précédemment passe de l'état off à on
condition:
- condition: state
entity_id: input_select.modevoletsalons
state: Auto chauf
#à condition que notre input_select soit sur Auto chauf
- condition: template
value_template: '{{ state_attr("cover.volet_salon_sud", "current_position") < 90 }}'
#et à condition que mon volet soit ouvert à moins de 90
action:
- data:
entity_id: cover.volet_salon_sud
position: 100
service: cover.set_cover_position
#dans ce cas mon volet se met en position 100 (complètement ouvert)
Toujours dans l’hiver pour que le volet se referme seul (notamment si vous avez des volets isolés) quand le soleil ne passe plus devant votre fenêtre nous allons procéder de la manière suivante :
Dans le fichier automation.yaml
nous allons ajouter :
- id: '1576153778212'
alias: chauf volet salon sud fermeture
description: chauf volet salon sud fermeture
trigger:
- entity_id: binary_sensor.soleil_azimuth_volet_salon_sud
from: 'on'
platform: state
to: 'off'
#cette automatisation va se déclencher si notre binary_sensor créé précédemment passe de l'état on à off
condition:
- condition: state
entity_id: input_select.modevoletsalons
state: Auto chauf
#à condition que notre input_select soit sur Auto chauf
- condition: template
value_template:'{{ state_attr("cover.volet_salon_sud", "current_position") == 60 }}'
#et à condition que mon volet soit à la position 100 (que je n'y ai pas touché)
action:
- data:
entity_id: cover.volet_salon_sud
position: 0
service: cover.set_cover_position
#dans ce cas mon volet se met en position 0 (complètement fermé)
Pour aller plus loin
Les automatisations ci-dessus sont a titre d’exemple, il faut les adapter en fonction des expositions et des besoins de chacun.
Par exemple pour l’hiver vous pouvez créer une autre automatisation car le soleil se couche plus tôt. Vous pouvez donc baser l’automatisation de fermeture l’hiver sur l’élévation et non plus sur l’azimut.
Il est également possible d’utiliser des valeurs de température en condition supplémentaire pour les ouvertures ou fermetures. Personnellement je m’en sert pour changer le mode du volet roulant.
Pour l’hiver afin de ne pas lever le volet roulant pour rien (il ne fait pas beau tous les jours), j’ai ajouté la condition suivante :
- condition: template
value_template: "{{((((states('sensor.air_control_luminosite')|float * 0.0000185) * 2) + (( 100 - states('sensor.portes_les_valence_cloud_cover')|float) * 0.01)) * 0.33333) > 0.65 }}"
Cette condition utilise la valeur de mon capteur de luminosité extérieur et la couverture nuageuse remontée par météo france. Si le capteur de luminosité considère qu’il fait beau (pris en compte à 66% dans mon calcul) et que la couverture nuageuse annoncée par météo france (pris en compte à 33% dans le calcul) et que la probabilité totale est supérieure à 65% alors j’ouvre les volets.