Dans cet article, je vais vous montrer un cas concret (simplifié) d'utilisation de la gestion des volets roulants que j'ai pu vous présenter ici : Gestion des volets avec Home Assistant.
Le seul prérequis est donc d'avoir lu complètement ce dernier.
Règles de gestion
- Si la maison est en mode "Nuit", mon volet doit se fermer
- Je veux pouvoir forcer le positionnement (mode) de tous mes volets
- Je veux pouvoir forcer le positionnement (mode) de ce volet uniquement
- Si on est absent de la maison et que la fenêtre est restée ouverte, le volet doit se fermer complètement
- Le mode "Petits trous" devra se faire précisément
- Par défaut, le volet doit être ouvert le jour et fermé la nuit
Mise en place de la gestion automatique
Sous Home Assistant, ce volet roulant correspond à l'entité : cover.shelly_2_5_rc_kitchen
.
Dans un premier temps, on ajoute toutes les entités dont on va avoir besoin :
# Entités obligatoires
input_datetime:
# Durée de la suspension (pour tous les volets)
covers_duration_suspension:
name: Covers - Duration (min) of roller shutter suspension
has_date: false
has_time: true
input_number:
# Position désirée
cover_kitchen_desired_position:
name: Cover - Kitchen - Desired position
min: "-1"
max: "100"
unit_of_measurement: "%"
# Temps avant la détection de suspension du volet
cover_kitchen_detection:
name: Cover - Kitchen - Time period (s) before suspension
min: "5"
max: "600"
step: "5"
unit_of_measurement: "s"
timer:
# Timer pour la suspension du volet
cover_kitchen:
name: Cover - Kitchen - Remaining suspension time
restore: true
# Entités - Règles de gestion
input_select:
# Mode de la maison - Règle de gestion n°1
period_of_day:
name: Period of day
options:
- Jour
- Nuit
- Nuit - chambres
icon: mdi:theme-light-dark
# Modes pour tous les volets - Règle de gestion n°2
covers_mode:
name: Covers - Mode
options:
- Automatique
- Manuel
- Forcer ouverture
- Forcer fermeture
- Forcer fermeture - chambres
- Petits trous
icon: mdi:window-shutter-open
# Mode pour le volet de la cuisine - Règle de gestion n°3
cover_kitchen_mode:
name: Cover - Kitchen - Mode
options:
- Automatique
- Manuel
- Forcer ouverture
- Forcer fermeture
- Petits trous
icon: mdi:window-shutter-open
template:
- binary_sensor:
# Savoir si au moins une personne est présente à la maison (voir mon article sur la gestion des présences) - Règle de gestion n°4
- name: Presence at home
state: "{{ is_state('input_boolean.xxx1_at_home', 'on') or is_state('input_boolean.xxx2_at_home', 'on') }}"
device_class: presence
# Savoir si on est en mode "Manuel"
- name: Cover - Kitchen - Check suspension
state: "{{ not is_state('input_select.cover_kitchen_mode', 'Manuel') and not is_state('input_select.covers_mode', 'Manuel') }}"
device_class: running
input_number:
# Position du mode "Petits trous" - Règle de gestion n°5
cover_kitchen_accurate_position:
name: Cover - Kitchen - Accurate position
min: "0"
max: "100"
step: "1"
unit_of_measurement: "%"
L'automatisation du volet roulant
L'automatisation est assez simple mais très verbeuse. Il s'agit juste d'une suite de conditions pour positionner le volet roulant qui reprend les différentes règles de gestion
automation:
- description: Cover - Kitchen
alias: Cover - Kitchen - Positioning
id: c598cfbd-e8ff-4f80-8d05-e4a04253e20c
mode: restart
trigger:
- platform: time_pattern
minutes: "/10"
- platform: event
event_type:
- timer.cancelled
- timer.finished
event_data:
entity_id: timer.cover_kitchen
condition:
- condition: state
entity_id: timer.cover_kitchen
state: "idle"
- condition: template
value_template: "{{ (as_timestamp(now()) - as_timestamp(states.cover.shelly_2_5_rc_kitchen.last_changed) | int(0)) > (states('input_number.cover_kitchen_detection') | int) }}"
action:
# Si on est en mode "Manuel", on arrête la gestion automatique
- condition: template
value_template: "{{ not is_state('input_select.covers_mode', 'Manuel') }}"
- condition: template
value_template: "{{ not is_state('input_select.cover_kitchen_mode', 'Manuel') }}"
# Règles de gestion
- choose:
# Si on est absent et que la fenêtre est ouverte, on ferme le volet
- conditions:
- condition: state
entity_id: binary_sensor.presence_at_home
state: "off"
- condition: state
entity_id: binary_sensor.window_kitchen
state: "on"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: 0
# Si on est en mode "Forcer ouverture", on ouvre le volet
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_select.covers_mode
state: "Forcer ouverture"
- condition: state
entity_id: input_select.cover_kitchen_mode
state: "Forcer ouverture"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: 100
# Si on est en mode "Forcer fermeture" ou la maison est en mode "Nuit", on ferme le volet
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_select.covers_mode
state: "Forcer fermeture"
- condition: state
entity_id: input_select.cover_kitchen_mode
state: "Forcer fermeture"
- condition: state
entity_id: input_select.period_of_day
state: "Nuit"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: 0
# Si on est en mode "Petits trous", on met le volet à la position "input_number.cover_kitchen_accurate_position"
- conditions:
- condition: or
conditions:
- condition: state
entity_id: input_select.covers_mode
state: "Petits trous"
- condition: state
entity_id: input_select.cover_kitchen_mode
state: "Petits trous"
sequence:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: "{{ states('input_number.cover_kitchen_accurate_position') }}"
# Par défaut, on ferme le volet la nuit et on l'ouvre le jour
default:
- if:
- condition: template
value_template: "{{ state_attr('sun.sun', 'elevation') < 0 }}"
then:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: 0
else:
- service: input_number.set_value
target:
entity_id: input_number.cover_kitchen_desired_position
data:
value: 100
Configuration des blueprints
- Cover - Immediate conditions
Les conditions pour lesquelles le volet doit se positionner immédiatement sont en cas d'absence ou lorsqu'il y a un changement dans les différents modes.
- Immediate conditions :
binary_sensor.presence_at_home
,input_select.period_of_day
,input_select.covers_mode
,input_select.cover_kitchen_mode
- Timer :
timer.cover_kitchen
- Desired roller shutter position :
input_number.cover_kitchen_desired_position
- Roller shutter positioning :
automation.cover_kitchen_positioning
- Cover - Move
Rien de particulier ici, on active juste le positionnement précis pour le mode "Petits trous".
- Roller shutter :
cover.shelly_2_5_rc_kitchen
- Timer :
timer.cover_kitchen
- Desired roller shutter position :
input_number.cover_kitchen_desired_position
- Time to complete a full opening or closing motion : input_number.cover_kitchen_detection
- Enable accurate positioning : Yes
- Accurate position : input_number.cover_kitchen_accurate_position
- Cover - Suspend
Il ne faut pas oublier de désactiver la suspension lorsque l'on est en mode "Manuel" !
- Roller shutter :
cover.shelly_2_5_rc_kitchen
- Timer :
timer.cover_kitchen
- Desired roller shutter position :
input_number.cover_kitchen_desired_position
- Duration of roller shutter suspension :
input_datetime.covers_duration_suspension
- Time to complete a full opening or closing motion :
input_number.cover_kitchen_detection
- Enable the verification of a condition before automatic positioning of the roller shutter : Yes
- Condition to be checked :
binary_sensor.cover_kitchen_check_suspension
Une petite dernière pour la route
En l'état, le positionnement du volet roulant va bien fonctionner, cependant, il manque une dernière automatisation pour remettre le volet en mode "Automatique" lorsque les modes de la maison changent.
automation:
- description: Cover - Kitchen - Back to automated mode
alias: covers_back_auto_mode
id: 7f2e0bf7-4649-4f05-833e-dfad5323447c
mode: restart
trigger:
- platform: state
entity_id:
- input_select.period_of_day
- input_select.home_mode
- input_select.covers_mode
action:
- service: input_select.select_option
target:
entity_id:
- input_select.cover_kitchen_mode
data:
option: Automatique
Conclusion
J'espère que ce cas d'utilisation vous permettra de mieux comprendre comment gérer vos volets roulants. N'hésitez pas à me poser vos questions grâce au formulaire de contact ou sur HACF.
Vous avez également accès à l'ensemble des automatisations que j'utilise pour gérer mes volets roulants : Automatisations - Volets roulants