Allumage avec leve et couche de soleil

Mini tuto en reprenant du départ.

Voici comment j’aurai fait.
Commençons par décortiquer ton souhait de départ.

Le matin allumage à 8h10 si le soleil est couché

Cela donne un trigger (Quand: il est 8h10) et une condition (Si: le soleil est couché) avec pour action allumage.

Eteindre quand le soleil se lève ou bien à 9h

Cela nous donne 2 triggers (Quand: le soleil se lève) et (Quand: il est 9h) avec pour action extinction.

Le soir allumage a partir de 17h si le soleil est couché

Cela donne un trigger (Quand: il est 17h) et une condition (Si: le soleil est couché) avec pour action allumage.

Ou quand le soleil se couche

Cela donne un trigger (Quand: le soleil se couche) avec pour action allumage. Sur ce souhait même si ça n’est pas dit explicitement dans l’énoncé de départ on rajoutera la condition (Si: il est moins de 18h50) pour éviter d’allumer au cas ou le soleil se couche après 18h50, puisque sinon notre action d’éteindre à 18h50 sera dejà passée.

Et éteindre a 18h50
Cela nous donne 1 trigger (Quand: il est 18h50) avec pour action extinction.

Chose que tu n’as pas précisé mais que l’on peut déduire de ton code, il faut que l’automatisation s’exécute du lundi au vendredi se qui va rajouter une condition générale pour l’exécution des actions.

Comment traduire tout ça dans une automatisation
Commençons par les 6 triggers répertoriés ci-dessus:

triggers:
  - trigger: time
    at: "08:10:00"
  - trigger: time
    at: "09:00:00"
  - trigger: time
    at: "17:00:00"
  - trigger: time
    at: "18:50:00"
  - trigger: sun
    event: sunrise
  - trigger: sun
    event: sunset

A ces triggers j’ajoute un trigger_id pour pouvoir identifier quel trigger a déclenché l’automatisation.
C’est là pour les trigger_id :

triggers:
  - trigger: time
    at: "08:10:00"
    id: "8:10"
  - trigger: time
    at: "09:00:00"
    id: eteindre
  - trigger: time
    at: "17:00:00"
    id: "17:00"
  - trigger: time
    at: "18:50:00"
    id: eteindre
  - trigger: sun
    event: sunrise
    id: eteindre
  - trigger: sun
    event: sunset
    id: soleil se couche

On remarque ici que j’ai 3 trigger avec le même trigger_id. J’ai mis le même trigger_id parce que ces 3 triggers vont exécuter la même action par la suite (à savoir éteindre la lumière) ce qui me fera moins de lignes à écrire.

Ensuite la condition générale (Du lundi au vendredi):

conditions:
  - condition: time
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri

Et enfin les actions avec leur propre conditions :
Commençons par celle qui va éteindre la lumière

actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - eteindre
        sequence:
          - action: switch.turn_off
            data: {}
            target:
              entity_id: switch.welcome_home

En condition je passe le trigger_id " eteindre " qui fait référence au triggers 9h00, le soleil se lève et 18h50 avec pour action éteindre la lumière. Ce sont les 3 triggers qui avaient le même trigger_id comme expliqué plus haut.

Ensuite l’action pour allumer à 8h10 si le soleil est couché

      - conditions:
          - condition: trigger
            id:
              - "8:10"
          - condition: sun
            before: sunrise
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home

En condition ici, le trigger_id " 8:10 " correspondant au trigger " at: " 08:10:00 " et la condition avant le levé du soleil

L’action pour allumer à 17h00 si le soleil est couché

      - conditions:
          - condition: trigger
            id:
              - "17:00"
          - condition: sun
            after: sunset
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home

En condition, trigger_id " 17:00 " et condition si le soleil est couché

L’action pour allumer quand le soleil se couche après 17h00 et avant 18h50

      - conditions:
          - condition: trigger
            id:
              - soleil se couche
          - condition: time
            after: "17:00:00"
            before: "18:50:00"
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home

En condition, trigger_id " soleil se couche " et le temps entre 17h00 et 18h50

Le résultat final

alias: Gestion de l'éclairage pour arrivée des parents
description: Allume et éteint la lumière selon l'horaire et la position du soleil
triggers:
  - trigger: time
    at: "08:10:00"
    id: "8:10"
  - trigger: time
    at: "09:00:00"
    id: eteindre
  - trigger: time
    at: "17:00:00"
    id: "17:00"
  - trigger: time
    at: "18:50:00"
    id: eteindre
  - trigger: sun
    event: sunrise
    id: eteindre
  - trigger: sun
    event: sunset
    id: soleil se couche
conditions:
  - condition: time
    weekday:
      - mon
      - tue
      - wed
      - thu
      - fri
actions:
  - choose:
      - conditions:
          - condition: trigger
            id:
              - "8:10"
          - condition: sun
            before: sunrise
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home
      - conditions:
          - condition: trigger
            id:
              - "17:00"
          - condition: sun
            after: sunset
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home
      - conditions:
          - condition: trigger
            id:
              - soleil se couche
          - condition: time
            after: "17:00:00"
            before: "18:50:00"
        sequence:
          - action: switch.turn_on
            data: {}
            target:
              entity_id: switch.welcome_home
      - conditions:
          - condition: trigger
            id:
              - eteindre
        sequence:
          - action: switch.turn_off
            data: {}
            target:
              entity_id: switch.welcome_home
mode: single

Je précise que c’est comme ça que le l’aurait construite mais je ne l’ai pas testée donc si ça se trouve ça va foirer aussi :joy:

1 « J'aime »

et ben un grand merci pour tout ca ?
je comprends un peu le raisonnement . je m’excuse; mais je n’ai aucune logique de programmation et c’est tres compliqué .
Bref je progresse un peu quand meme.
je vais tester cette automatisation des demain! et je vous tiens au courant

Merci encore

Si tu débute il est plus simple de morceler en plusieurs petites automations (c’est même indispensable certaines fois) et une fois que tu maîtrise le fonctionnement de base de l’automatisation passe au trigger id mais une simple pour commencer
La tu attaques directement un gros morceau je trouve pour débuter

Les news du jour !

Ce soir tout fonctionne , jai eu peur car le déclenchement était tard 18h03 :wink:
en revanche ce matin je n’ai pas vu . mais c’est ma faute . alors j ai modifié l 'heure a 7h45 pour être sur de mon coup demain.
Je vous tient au courant .

Merci encore

je suis daccord .
Mais j ai deja fait cela en plusieurs automatisation , 3 pour être précis (2 pour l allumage , et 1 pour extinction )
Je voulais optimiser mon HA et arrêter d’avoir plein d 'automatisations dans tous les sens.

Mais merci pour les conseils

Pas besoin d’être présent pour savoir si ça c’est allumé ou éteint.
Il suffit de regarder l’historique du switch.
Ici celui de mon couloir :

Il me semble même que ça te dit si ça a été fait par une automatisation quand c’est le cas.

Y’a aucune optimisations a faire moins d’automations :laughing:

1 « J'aime »

Ou l’historique de l’automatisation

oui effectivement l’historique de l automatisation permet de vérifier.

Mais j’aime voir en réel.
En tout cas pour ce matin . tout fonctionne . La veille l’heure d’allumage et levé du soleil étaient trop prochent (voir identique ) alors je n avais pas compris pourquoi allumage et extinction… .
Bref : Le matin fonctionne . le soir fonctionne.
Un grand merci … a moi de ne pas déglinguer l automatisation :rofl:

Merci pour l aide et les conseils. J’ai appris des nouveautés! je ne saurais pas m’en servir seul , mais en déclinant cette auto cela pourras me servir.
Encore MERCI :pray:

bonjour, c’est peut être hors sujet, mais comment obtiens tu cet écran avec les différents choix tracé sur la gauche et du yalm limité à la configuration de l’étape ?

Merci d’avance

Manu

Salut @Manu_Joly

Je pense que tu parle de la vue de l’historique de l’exécution de l’automatisation qui est accessible depuis la page de toutes les automatisations et en cliquant sur les 3 petits points en bout de la ligne de l’automatisation que l’on souhaite

C’est bien ca !
Merci !

1 « J'aime »

Pour le lever et coucher, tu peux utiliser ça par exemple pour le crépuscule :

triggers:
  - trigger: time
    at: sensor.sun_next_dusk

sensor.sun_next_dawn pour le lever