Demande de conseil automation et coucher de soleil

J’essaie de crée une automatisation du type suivant :

Si coucher de soleil < 21:00 fermer les volets
Sinon à 21:00 fermer les volets.

Je viens de Jeedom et j’avais ça qui fonctionnait très bien :

J’ai bien vu ce sujet semblable à mon cas mais je ne vois pas comment créer cette fameuse condition entre l’heure et le couche de soleil :

https://forum.hacf.fr/t/nouveau-venu-de-jeedom-besoin-daide-sur-les-automatisations/30600/5

Pour le moment j’ai ça :

alias: Nouvelle automatisation volets
description: ""
trigger:
  - platform: time
    at: "21:00:00"
  - platform: sun
    event: sunset
    offset: 0
condition:
  - condition: time
    before: "21:00:00"
action:
  - type: turn_on
    device_id: af3640f751629f2ff1124c221581d822
    entity_id: a5078656ea6700df3a5bf95dce8e29ef
    domain: light
mode: single

Le problème est que si le soleil se couche avant 21h le scénario se déclenche 2x.

Je suis preneur de votre expérience sous HA pour mettre en place ce scénario.

Merci pour votre aide.

Ma configuration :

  • Core 2024.4.1
  • Supervisor 2024.03.1
  • Operating System 12.1
  • Interface utilisateur 20240404.1

Texte à remplacer par votre configuration

Comment récupérer ma configuration :
Dans votre HA, Menu latéral Paramètres > Système > Corrections puis les trois petits points en haut a droite > Informations Système puis une fois en bas Copier


Hello,

En fait, ce qu’il faut comprendre, c’est que quand tu définis plusieurs triggers, c’est un « OU » entre ces triggers.

Donc dans don cas :

Triggers :
  - coucher du soleil
  - 21h
Action :
  - fermer le volet

S’il est moins de 21h et que le soleil se couche => ferme les volets
Sinon à 21h ferme les volets :slight_smile:

Ta condition n’est pas nécessaire, elle est même contre-productive, puisqu’elle exige qu’il soit moins de 21h, donc ton trigger à 21h ne s’exécutera jamais

Et ce n’est pas grave de demander à fermer des volets s’ils sont déjà fermés :slight_smile:

Merci pour la réponse apportée.

J’avais cru comprendre pour le OU mais en faisant des tests si je mets par exemple en trigger :

  • Lorsque l’heure est égale à 21h.
  • Lorsque l’heure est égalé à 20h.

J’ai bien 2 déclenchements au final.

Si j’utilise l’entité sun j’ai :

next_dusk: 2024-04-08T19:03:41.016679+00:00

il me semble qu’en UTC +2 on est déjà au delà des 21h et les jours continuent de s’allonger.

Oui pas très grave que les volets se ferment 2x si ce n’est une consommation de piles supérieur pour ceux qui sont pilotés par des télécommandes mais idéalement j’aimerais trouver la bonne façon de procéder.

Oui, tu as deux déclenchements, mais pas deux exécutions :slight_smile:

Tes volets ne se fermeront pas deux fois, la première des deux exécutions aura fait le job.

Sinon, tu peux rajouter une condition sur l’état de tes volets pour passer à la suite :

  • tes 2 triggers
  • condition : Si les volets sont ouverts
  • action : fermer les volets

Mais c’est vraiment pour te faire plaisir :wink:

Oui, mais là tu triches un peu, et tu ne prends pas en compte le cas où pour une bonne raison (soirée dans le jardin par exemple) tu aurais ouvert tes volets en manuel après 21h et ils risquent donc de se re-fermer au coucher du soleil…

Même si je suis bien d’accord, dans ce cas que tu décris ce n’est pas vraiment grave, tu commandes 2x la fermeture si le coucher du soleil est après 21h (et 2x si c’est avant aussi car tu la re-déclenche à 21h…).
Pour que l’automatisation ne s’execute qu’une fois: Il te faut faire les deux: trigger et conditions.

  • dans les trigger c’est un OU, donc l’automatisation sera lancée par n’importe lequel de tes triggers
  • dans les conditions c’est un ET, donc il faudra que toutes les conditions soient vérifiées pour que l’automatisation continue.

Donc il faut faire:

Triggers :
  - coucher du soleil
  - 21h
Conditions:
  - avant 21h01
  - avant coucher du soleil +1min
Action :
  - fermer le volet

Ainsi l’automatisation ne s’execute qu’une fois:

  • au coucher du soleil si celui ci a lieu avant 21h (la condition sur le coucher du soleil empêchant la répétition à 21h)
  • à 21h si le coucher du soleil a lieu après (la condition sur l’heure empêchant la répétition au coucher du soleil)
1 « J'aime »

Merci ça aurait été la solution mais je n’ai pas de retour d’état pour mes volets.

Sinon il faudrait que je mette à jour une variable en effet et que je l’intègre aussi dans le scénario d’ouverture.

Mais ca complique un peu les choses.

Beaucoup plus simple que ce que je viens de trouver en cherchant je vais tester ça, nickel.

Sinon au cas ou j’avais fait ça :

alias: Nouvelle automatisation volets
description: ""
trigger:
  - platform: time
    at: "18:00:00"
condition: []
action:
  - if:
      - condition: time
        before: sensor.sun_next_dusk
    then:
      - wait_for_trigger:
          - platform: state
            entity_id:
              - sensor.sun_next_dusk
      - type: turn_on
        device_id: 1005e8fe16c15e3bda41f1583b595977
        entity_id: 49808d29b631688adeffb1bacbabb413
        domain: switch
    else:
      - wait_for_trigger:
          - platform: time
            at: "21:00:00"
      - type: turn_on
        device_id: 1005e8fe16c15e3bda41f1583b595977
        entity_id: 49808d29b631688adeffb1bacbabb413
        domain: switch
mode: single

Sinon, la solution pour faire 100% ce que tu veux, c’est 2 automatisations distinctes :

La première :

  • trigger : coucher du soleil
  • condition : si on est avant 20h59m59s
  • action : fermer le volet

La seconde :

  • trigger : 21h
  • condition : si <= couché du soleil
  • action : fermer le voler

Je n’ai pas d’autres tours dans ma manche là :wink:

1 « J'aime »

ça doit pouvoir se combiner en une seule automatisation avec les trigger id (Automation Trigger - Home Assistant) mais à mon avis, tu va perdre en lisibilité

Trigger :

  • couché du soleil (ID dodo_soleil)
  • 21h (ID dodo_21)

Condition :

  • Si ID = dodo_soleil ET heure < 20h59m59s
  • Si ID = dodo_21 ET heure <= couché soleil

Action :

  • fermer volet
1 « J'aime »

Ah oui c’est top ça j’vais tenté les ID mais pas combiné avec des conditions.

C’est ma solution je pense bon je vais tester tout ça je vous fait un retour ASAP.

Merci encore !

1 « J'aime »

Je teste ta solution nettement plus simple dès ce soir :

Ca donne ça :

alias: Volets_ALL_Fermeture
description: ""
trigger:
  - platform: time
    at: "21:00:00"
  - platform: sun
    event: sunset
    offset: 0
condition:
  - condition: numeric_state
    entity_id: sensor.time
    below: sensor.sun_next_setting
  - condition: time
    before: "21:01:00"
action:
  - type: turn_on
    device_id: 1005e8fe16c15e3bda41f1583b595977
    entity_id: 49808d29b631688adeffb1bacbabb413
    domain: switch
mode: single

Sauf erreur de ma part, il va te manquer les trigger ID

Et comme pour les conditions, c’est un ET, si le coucher de soleil est avant l’heure actuelle, ça va déconner…

Je regarde ce que je peux te préparer :slight_smile:

description: ""
mode: single
trigger:
  - platform: sun
    event: sunset
    offset: 0
    id: dodo_soleil
  - platform: time
    at: "21:00:00"
    id: dodo_21
condition:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: trigger
            id:
              - dodo_21
          - condition: numeric_state
            entity_id: sensor.time
            below: sensor.sun_next_setting
      - condition: and
        conditions:
          - condition: trigger
            id:
              - dodo_soleil
          - condition: time
            before: "20:59:59"
action: []
1 « J'aime »

Tu n’as pas forcément besoin des trigger id dans ce cas (même si c’est aussi une solution qui marche) car dans les conditions tu fais un ET des deux conditions.

Donc la proposition:

Triggers :
  - coucher du soleil
  - 21h
Conditions:
  - avant 21h01
  - avant coucher du soleil +1min
Action :
  - fermer le volet

ça suffit car la condition :

Conditions:
  - avant 21h01
  - avant coucher du soleil +1min

ne sera vraie qu’au premier des deux triggers: 21h ou coucher du soleil.

J’ai perso le même principe pour le lever du soleil (limite à 7h du mat pour ne pas réveiller tout le monde au lever du soleil…) et ça marche…

2 « J'aime »

Bon nouveau test ce soir mais la 2ème condition est en false :

La première :

Exécuté : 9 avril 2024 à 21:00:00
Résultat :

after:
__type: <class ‹ datetime.time ›>
isoformat: ‹ 00:00:00 ›
now_time:
__type: <class ‹ datetime.time ›>
isoformat: ‹ 21:00:00.299356 ›
before:
__type: <class ‹ datetime.time ›>
isoformat: ‹ 21:01:00 ›
result: true

La 2ème :

Exécuté : 9 avril 2024 à 21:00:00
Résultat :

wanted_time_before: ‹ 2024-04-09T18:31:53.677959+00:00 ›
result: false

Du coup pas de déclenchement de la fermeture.

Je vais essayer avec les ID.

c’est ça qui doit coincer car le « next setting » est toujours après le coucher du soleil en cours…

Donc a moins de mémoriser l’heure de coucher du soleil du jour tous les jours, ma solution est bancale, celle de Titoumimi marche mieux…

Oui en effet j’ai fait la modification en utilisant sun.sunset partout et je vais refaire un test.

En tout cas le scénario de ce soir avec les ID à bien fonctionné, un grand merci à vous pour votre aide.

Je comprends mieux les subtilités entre HA et Jeedom à ce niveau.

Pour information :

alias: Fermeture Auto Volets ID
description: ""
trigger:
  - platform: sun
    event: sunset
    offset: 0
    id: dodo_soleil
  - platform: time
    at: "21:00:00"
    id: dodo_21h
condition:
  - condition: or
    conditions:
      - condition: and
        conditions:
          - condition: trigger
            id:
              - dodo_21h
          - condition: sun
            after: sunset
      - condition: and
        conditions:
          - condition: trigger
            id:
              - dodo_soleil
          - condition: time
            before: "20:59:59"
action:
  - type: turn_on
    device_id: 1005e8fe16c15e3bda41f1583b595977
    entity_id: 49808d29b631688adeffb1bacbabb413
    domain: switch
mode: single`



Exécuté : 10 avril 2024 à 20:33:23
Résultat :

result: true

## conditions/0

Exécuté : 10 avril 2024 à 20:33:23
Résultat :

result: false

## conditions/0/conditions/0

Exécuté : 10 avril 2024 à 20:33:23
Résultat :

result: false

## conditions/1

Exécuté : 10 avril 2024 à 20:33:23
Résultat :

result: true

## conditions/1/conditions/0

Exécuté : 10 avril 2024 à 20:33:23
Résultat :

result: true

## conditions/1/conditions/1

Exécuté : 10 avril 2024 à 20:33:23
Résultat :

after: __type: <class 'datetime.time'> isoformat: '00:00:00' now_time: __type: <class 'datetime.time'> isoformat: '20:33:23.144061' before: __type: <class 'datetime.time'> isoformat: '20:59:59' result: true
1 « J'aime »