Je pense avoir compris du coup voici ma réponse :
Point 1 : Explication
Pour la petite explication, tous les appareils contiennent des entités et c’est HA qui gère lui-même le service appelé en fonction de l’action que tu choisis.
Pourquoi cette explication, pour expliquer que comme tu n’as pas d’appareil, il te faut passer par les services.
Tu cherches à piloter des volets, donc il faut aller faire un tour du propriétaire des services du domaine concerné : cover
dans la documentation.
Au vue de ta demande, je pense que les services cover.open_cover
, cover.close_cover
sont ceux que tu cherches car ils correspondent aux actions d’ouverture et de fermeture (complète pour toutes les deux) du ou des volets concernés.
Du coup, pour commencer simplement, tu peux utiliser directement ces actions dans 2 automatisations :
- Quand le soleil se lève, on ouvre les volets
alias: Volets - Ouverture au lever du soleil
description: Ouverture des volets au lever du soleil
trigger:
- platform: sun
event: sunrise
condition: []
action:
- service: cover.open_cover # Action d'ouverture
target:
entity_id:
- cover.hall_window
- cover.kitchen_window
- cover.living_room_window
- cover.pergola_roof
mode: single
- Quand le soleil se couche, on ferme les volets
alias: Volets - Fermeture au coucher du soleil
description: Fermeture des volets au coucher du soleil
trigger:
- platform: sun
event: sunrise
condition: []
action:
- service: cover.close_cover # Action de fermeture
target:
entity_id:
- cover.hall_window
- cover.kitchen_window
- cover.living_room_window
- cover.pergola_roof
mode: single
Point 2 : Activer/désactiver les automatisations
2.a Conditionner l’automatisation
La méthode qui revient le plus souvent pour activer/désactiver l’automatisation est de passer par une entité booléenne (input_boolean)
qui conditionne l’automatisation.
Pour la création de l’entité de gestion de l’automatisation d’ouverture au lever de soleil, direction Configuration → Entrées → bouton AJOUTER UNE ENTRÉE → Interrupteur :
Nom: Volets - Lever de soleil
Icône: mdi:weather-sunset-up
et une deuxième pour l’automatisation du coucher de soleil :
Nom: Volets - Coucher de soleil
Icône: mdi:weather-sunset-down
Une fois ces deux entités créées, on peut les utiliser comme condition pour le déclenchement des actions de l’automatisation.
On reprend les deux même automatisations et on ajoute une condition d’état sur les entités booléennes (input_boolean) :
- Quand le soleil se lève, on ouvre les volets
alias: Volets - Ouverture au lever du soleil
description: Ouverture des volets au lever du soleil
trigger:
- platform: sun
event: sunrise
condition:
- condition: state
entity_id: input_boolean.volets_lever_de_soleil # Conditionne l'exécution des actions
state: 'on'
action:
- service: cover.open_cover
target:
entity_id:
- cover.hall_window
- cover.kitchen_window
- cover.living_room_window
- cover.pergola_roof
mode: single
- Quand le soleil se couche, on ferme les volets
alias: Volets - Fermeture au coucher du soleil
description: Fermeture des volets au coucher du soleil
trigger:
- platform: sun
event: sunrise
condition:
- condition: state
entity_id: input_boolean.volets_coucher_de_soleil # Conditionne l'exécution des actions
state: 'on'
action:
- service: cover.close_cover
target:
entity_id:
- cover.hall_window
- cover.kitchen_window
- cover.living_room_window
- cover.pergola_roof
mode: single
Maintenant, les actions d’ouverture et de fermeture s’exécuteront seulement si les entités booléennes correspondantes sont à Vrai.
2.b Automatiser l’activation/désactivation
Un peu plus haut, j’ai mis en gras ceci :
Une fois ces deux entités créées, on peut les utiliser comme condition pour le déclenchement des actions de l’automatisation.
Je souhaite simplement expliquer ici que l’automatisation reste active avec cette méthode et c’est seulement les actions qui sont conditionnées. Si l’entité input_boolean.volets_lever_de_soleil
est à faux, les volets ne s’ouvriront pas le matin au lever du soleil mais l’automatisation se sera tout de même déclenchée.
Il est important de comprendre que mettre des conditions ne désactive pas l’automatisation mais ses actions, ce qui induit donc des déclenchements d’automatisation non désirés.
Il est nettement plus facile de fonctionner avec des booléens (et c’est pourquoi j’explique la méthode) mais il est plus fonctionnel de travailler directement sur l’automatisation elle-même afin de soulager le serveur de la surveillance de déclencheur non désiré…(je me relirais car je ne sais pas si la phrase est clair ).
Toujours avec des booléens
Si on veut garder le principe d’une entité qui active/désactive l’automatisation, il faut passer par une automatisation tierce qui active/désactive l’automatisation cible.
Dans notre cas des 2 automatisations de lever et coucher de soleil cela donnera (j’ai regroupé le deux automatisations pour montrer qu’il est possible d’avoir une seul automatisation qui permette de gérer toute les autres) :
alias: Automatisations - Activation/Désactivation
description: Gère l'activation et la désactivation de toutes les automatisations concernées
trigger:
- platform: state
entity_id: input_boolean.volets_lever_de_soleil
- platform: state
entity_id: input_boolean.volets_coucher_de_soleil
condition: []
action:
- choose:
- conditions:
## Sur changement d'état de input_boolean.volets_lever_de_soleil
- condition: template
value_template: '{{trigger.entity_id.split(''.'')[1] == ''volets_lever_de_soleil'' }}'
sequence:
- choose:
- conditions:
### Activation de l'automatisation
- condition: template
value_template: '{{trigger.to_state.state == ''on'' }}'
sequence:
- service: automation.turn_on
target:
entity_id: automation.volets_ouverture_au_lever_du_soleil
- conditions:
### Désactivation de l'automatisation
- condition: template
value_template: '{{trigger.to_state.state == ''off'' }}'
sequence:
- service: automation.turn_off
target:
entity_id: automation.volets_ouverture_au_lever_du_soleil
default: []
- conditions:
## Sur changement d'état de input_boolean.volets_coucher_de_soleil
- condition: template
value_template: '{{trigger.entity_id.split(''.'')[1] == ''volets_coucher_de_soleil'' }}'
sequence:
- choose:
- conditions:
### Activation de l'automatisation
- condition: template
value_template: '{{trigger.to_state.state == ''on'' }}'
sequence:
- service: automation.turn_on
target:
entity_id: automation.volets_fermeture_au_coucher_du_soleil
- conditions:
### Désactivation de l'automatisation
- condition: template
value_template: '{{trigger.to_state.state == ''off'' }}'
sequence:
- service: automation.turn_off
target:
entity_id: automation.volets_fermeture_au_coucher_du_soleil
default: []
# - conditions:
# ## Sur changement d'état de input_boolean.XXXXXXXXXXX
# - condition: template
# value_template: '{{trigger.entity_id.split(''.'')[1] == ''XXXXXXXXXXX'' }}'
# sequence:
# - choose:
# - conditions:
# ### Activation de l'automatisation
# - condition: template
# value_template: '{{trigger.to_state.state == ''on'' }}'
# sequence:
# - service: automation.turn_on
# target:
# entity_id: automation.YYYYYYYYYYYYYYYYYY
# - conditions:
# ### Désactivation de l'automatisation
# - condition: template
# value_template: '{{trigger.to_state.state == ''off'' }}'
# sequence:
# - service: automation.turn_off
# target:
# entity_id: automation.YYYYYYYYYYYYYYYYYY
# default: []
default: []
mode: single
L’automatisation, elle-même
Il ne faut pas oublier que l’automatisation est elle-même une entité.
Je préfère, dès que cela est possible utiliser directement les services automation.turn_[on,off]
comme action dans les boutons Lovelace sans passer par un booléen et une autre automatisation.
Ou simplement afficher l’entité automation.nom_de_l_automatisation
dans une carte entités par exemple afin d’avoir un bouton d’activation/désactivation
Au final, chacun fait comme il le sent, je m’efforce juste a essayer d’être le plus explicatif possible
Point 3
Tout est là : [CARTE] Réveil (ou activation d'automatisation) - #14 par Clemalex (je n’ai pas mis le code de gestion qui est derrière cette carte sur le forum anglais )
S’il y a un point que tu souhaites approfondir, ou si je m’égards et réponds à côté, n’hésite pas