Lancer une automatisation dès son activation

Mon problème

Bonjour la communauté. Après avoir trouver de nombreuses solutions dans ce forum, je me trouve contraint de poster un nouveau sujet car je ne m’en sors pas.

J’ai une automatisation qui gère la position de mes stores en fonction de l’heure de la journée. Mon besoin est de faire en sorte que le matin les stores descendent complètement, quand le soleil est assez haut, ils remontent partiellement (afin de laisser passer l’air) et quand le soleil a complètement tourné, ils se relèvent complètement.

J’avais jusqu’alors 3 automatisations différentes et 1 bouton virtuel pour controler leur état qui se déclenchait à heure fixe. Le soucis est les entre-deux: si pour X raison j’avais désactivé l’automatisation (cas de pluie par exemple), je me lève et veux réactiver l’automatisation il faut que je définisse moi même la position du store en plus de réactiver les automatisations.

Souhaitant revoir ce dernier point, et tout regrouper dans 1 seule automatisation, j’en suis venu à quelque chose géré par timer. Je lance l’automatisation toutes les 30min et suivant l’heure courante, la position est définie. Cela fonctionne bien. MAIS lorsque j’active l’automatisation je veux que les stores se positionnent tout seul en place. Et je n’y arrive pas. J’ai essayé de mettre l’état de l’automatisation en trigger mais sans résultat.

Est-ce que vous avez une astuce ?

Amicalement
Romain

Voici le YAML

alias: Essai
description: ""
trigger:
  - platform: time_pattern
    minutes: /30
  - platform: state
    entity_id:
      - automation.essai
    from: "off"
    to: "on"
  - platform: sun
    event: sunrise
    offset: 0
condition:
  - condition: state
    entity_id: sun.sun
    state: above_horizon
action:
  - choose:
      - conditions:
          - condition: time
            before: "13:59:59"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 0
            target:
              entity_id: cover.stores
      - conditions:
          - condition: time
            after: "14:00:00"
            before: "15:29:59"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 50
            target:
              entity_id: cover.stores
      - conditions:
          - condition: time
            after: "15:30:00"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 100
            target:
              entity_id: cover.stores
mode: single

Salut!
Alors, excuse moi mais je voudrais savoir quand tu dis

Tu parles bien de l’activer et non de l’executer manuellement ? En effet l’activer fait qu’elle est en fonctionnement et se déclenchera lorsque son/ses trigger seront executer. Mais ca na l’execute pas.
En revanche si tu parles bien de l’executer manuellement, peut etre que « historique des executions » permettrais d’avoir quelques indices sur ce qui ne fonctionne pas

Bonjour
quand je l’active, elle attend la prochaine demi heure pour mettre les stores en place alors que j’aimerais que le simple fait de l’activer fasse qu’elle s’exécute immédiatement (puis ensuite toutes les 30min)

tu as un autre Trigger ?

Et pourquoi la désactives tu de temps en temps ? Si tu la laisse tout le temps activée, mais que tu l’execute a ta demande les volets descendront ?

Hello,
En fait ton trigger sur l’état de « automation.essai », ne marche pas comme tu le penses, car je suppose que le changement d’état n’est pas pris en compte… vu que l’automatisation est désactivée… donc ne le captera jamais.

C’est pour ça que tu constates que ça ne marche que 30 min après.

Il faudrait que tu revoies ta logique, en créant un interrupteur virtuel dans les entrées.
Et que tu bases sont automatisation sur ça… mais pas un trigger, dans une condition.
Du coup avoir ton automatisation qui tourne toute la journée toutes les 30 min, mais qui en fonction de l’interrupteur virtuel fait les actions ou pas…

Merci Alex.
Je souhaitais éviter d’en arriver à l’interrupteur virtuel sachant que je souhaite finalement juste désactiver l’automatisation.

Si pas d’autre alternative je regarderai de ce côté.

Comme dit @AlexHass il faut modifier ton automatisation.
Pas besoin de créé virtuel si tu prends celui de l’automatisation, mais voir pourquoi le 30 minutes, si ce n’est pour relancé ?

Une automatisation peut être appelé depuis autre , toi tu suis la condition soleil !

Comme AlexHass, je vois mal comment faire sans un booléen exterieur.

Par contre tu peux inverser la logique et au lieu de déactiver l’automatisme, activer un mode manuel:

  • tu utilise un booléen qui trace si l’automatisme est actif ou non
  • tu conserves ton automatisation qui va venir régler l’usage de tes stores en ajoutant l’état du booléen dans les conditions avant de faire les actions, mais qui sera toujours active.
  • tu ajoute une interface / automatisation qui va venir gérer l’état de ton booléen (tu peux aussi gérer deux booléens, un pour le mode auto, et un temporaire, voir ci dessous)

J’ai un truc un peu équivalent sur la gestion du chauffage:

  • je réalise une automatisation a intervalle régulier qui controle l’état et la consigne de mon chauffage de façon proche de la tienne (sauf que j’utilise un scheduler pour pouvoir avoir des heures différentes pour les jours de la semaine, le mercredi et les week-ends).
  • j’ai un booléen « mode manuel » qui désactive l’automatisme et laisse la valeur du chauffage sur l’état dans lequel il est (ce que tu fais toi en désactivant l’automatisation, je le fais avec un bouton dans le dashboard qui bascule le booléen) => je ne l’utilise que pour les vacances pour couper le chauffage plusieurs jours, mais sans désactiver l’automatisation, qui tourne donc mais est « débrayée » par le booléen.
  • j’ai un autre booléen (hyper pratique) « mode temporaire » qui passe en manuel aussi mais qui est automatiquement rebasculé au prochain changement du scheduler. Du coup on peut allumer (ou couper) le chauffage en désactivant le mode auto, et celui ci se réactive automatiquement au prochain changement de consigne (par exemple à 14h et 15h30 dans ton cas). => il me faut une automatisation supplémentaire pour réactiver le booléen à chaque changement d’état du scheduler.

Bien le bonjour
Si je dois faire une conclusion à ce thread, je dirais que mon besoin n’est pas faisable sans tricks.

Je suis donc reparti, comme suggéré par certains sur l’idée d’avoir un booléen à coté qui définie si l’automatisation (tournant en continue) aura la permission d’effectuer les actions. Et j’ai rajouté ce booléen en trigger pour que l’exécution se déroule dès que j’active le mode auto. J’ai posté le yaml ci dessous ainsi que l’affichage dans mon dashboard.

Je trouve malgré tout dommage que l’on soit obligé d’en arriver la, alors que le statut de l’automatisation existe, a une valeur qui change de off à on ou de on à off. J’ouvrirai peut être un cas aux devs de HA, car j’ai du mal à voir pourquoi, comme n’importe quel statut qui change, il ne pourrait pas être utilisé comme trigger.

En tout cas, merci à la communauté !

alias: Stores - Automatisation
description: automatisation des stores unique
trigger:
  - platform: sun
    event: sunrise
    offset: "00:30:00"
  - platform: time
    at: "14:00:00"
  - platform: time
    at: "15:30:00"
  - platform: state
    entity_id:
      - input_boolean.stores_automation
    from: "off"
    to: "on"
condition:
  - condition: state
    entity_id: input_boolean.stores_automation
    state: "on"
action:
  - choose:
      - conditions:
          - condition: time
            before: "13:59:59"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 0
            target:
              entity_id: cover.stores
      - conditions:
          - condition: time
            after: "14:00:00"
            before: "15:29:59"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 50
            target:
              entity_id: cover.stores
      - conditions:
          - condition: time
            after: "15:30:00"
        sequence:
          - service: cover.set_cover_position
            data:
              position: 100
            target:
              entity_id: cover.stores
mode: single

stores

C’est pourtant assez logique et les devs ne vont jamais changer ça car ça n’a pas vraiment de sens.

Un déclencheur c’est un petit bout de programme qui tourne en boucle et qui a tout moment essaye de détecter s’il doit déclencher l’action ou pas.
Si ton automatisation est désactivée le déclencheur ne tourne pas… et donc en toute logique ne peut pas détecter le changement d’état…

Bonne idée d’ajouter le passage du booléen à Auto dans les triggers…

Je vais te le piquer…

Avec plaisir. C’est l’intérêt de partager le YAML :joy:

1 « J'aime »