Automatisations VR avec un RFLink

Je pense avoir compris du coup voici ma réponse :upside_down_face: :

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 :

  1. 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
  1. 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

animate

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) :

  1. 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
  1. 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 :sweat_smile:).

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 :wink:

Point 3

Tout est là : [CARTE] Réveil (ou activation d'automatisation) - #14 par Clemalex :innocent: (je n’ai pas mis le code de gestion qui est derrière cette carte sur le forum anglais :yum:)



S’il y a un point que tu souhaites approfondir, ou si je m’égards et réponds à côté, n’hésite pas :+1: