Lumière aléatoire - simulation présence

Comme quoi chatgpt est un outils d’aide, mais cela ne remplace pas (encore) l’expertise humaine.
Oui, c’est bien la condition du while à changer.
Il faut :

  • après le coucher du soleil ou une certaine heure (première partie de la nuit)
    OU
  • avant le levé du soleil et avant le coucher du soleil (deuxième partie de la nuit)

Sauf erreur (je n’ai pas testé), cela donnerait :

alias: alarme - simulation présence cuisine
description: ""
trigger:
  - platform: sun
    event: sunset
    offset: 0
    enabled: false
  - platform: time
    at: "22:15:00"
action:
  - repeat:
      while:
        - condition:
            condition: or
            conditions:
              - condition: sun
                after: sunset
              - condition: sun
                before: sunrise
                before: sunset
      sequence:
        - service: light.turn_on
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
        - service: light.turn_off
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"

Bonjour
Y-aurait pas un before de trop???
Slts

un deux trop non dans l’automation ?

en tout cas il y a une erreur

Message malformed: Unexpected value for condition: ‹ {‹ condition ›: ‹ or ›, ‹ conditions ›: [{‹ condition ›: ‹ sun ›, ‹ after ›: ‹ sunset ›}, {‹ condition ›: ‹ sun ›, ‹ before ›: ‹ sunrise ›}]} ›. Expected and, device, not, numeric_state, or, state, sun, template, time, trigger, zone @ data[‹ action ›][0][‹ repeat ›][‹ while ›][0]

je me reponds a moi meme

après correction ca donne ca

alias: alarme - simulation présence cuisine
description: ""
trigger:
  - platform: time
    at: "22:15:00"
condition: []
action:
  - repeat:
      while:
        - condition: sun
          after: sunset
        - condition: or
          conditions:
            - condition: sun
              before: sunrise
      sequence:
        - service: light.turn_on
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
        - service: light.turn_off
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"

Est ce que cela pourrait fonctionner ?

Le problème comme je te disais c’est quand est pris la condition du lever du soleil ?
Si tu démarres le soir avec la condition du coucher du soleil et que tu inities celle du lever du soleil ( cela sera le jour même en date) donc sera toujours pas bon car date du lever du soleil il faut le lendemain !
Il est vrai que tu ne peux pas choisir le lever soleil du lendemain directement avec le « Sun » ! sauf si tu décales l’heure ? ( mais de combien suivant date ? ).Regardes du côté des sensors « next rising » que tu compares avec « Date&time » si besoin !
PS: chiant sur téléphone !

Oups vraiment désolé pour la syntaxe, j’ai fait une erreur lors de la vérif., et ma réponse était fausse.

Reprenons. On veut que :

L’automatisation se déclenche à 22h15 tous les soirs (quelque soit le jour, le soleil est couché, même le 21 juin ou il se couche vers 21h30).

Une boucle se répète tant que l’on est :

  • après le coucher du soleil (22h15 à minuit le jour même)
  • OU avant le lever du soleil (minuit au lever du soleil le lendemain)

Cela donnerait :

alias: alarme - simulation présence cuisine
description: ""
trigger:
  - platform: time
    at: "22:15:00"
action:
  - repeat:
      while:
        - condition: or
          conditions:
            - condition: sun
              after: sunset
            - condition: sun
              before: sunrise
      sequence:
        - service: light.turn_on
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
        - service: light.turn_off
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
mode: single

Oui pas facile !
L « or » fait surement l’affaire ! test si l’une des conditions est vraie
Il est vrai que pas facile à simuler ! A tester

1 « J'aime »

Bonjour
On y presque, finalement c’etait pas si simple. Il me reste un souci, si la dernière itération pour allumer la lumière se situe avant le lever du soleil alors la lumière ne s’éteint pas
J’envisage de faire une seconde automation qui désactive la lumière après le lever du soleil. Qu’en pensez-vous ?

Slt…
Tu dois pouvoir affiner ton automation.
Soit tu ajoutes une action en parallèle qui fait ref au lever soleil avec l’action adéquat !
Soit tu modifies le déclencheur, tu ajoutes celui du lever Soleil et dans chaque déclencheur tu ajoute un « ID » de déclenchement qui servira aux « Choose between 2 actions », avec la 1ere ton code d’ici et la 2eme l’extinction et l’arrêt s’il faut de l’atomation !

Je me disais également, puisque l’on reste dans la boucle jusqu’au lever du soleil, si j’ajoute des actions après elles seront exécutées après ?

alias: alarme - simulation présence cuisine
description: ""
trigger:
  - platform: time
    at: "22:15:00"
condition:
  - condition: state
    entity_id: input_boolean.alarme
    state: "on"
action:
  - repeat:
      while:
        - condition: or
          conditions:
            - condition: sun
              after: sunset
            - condition: sun
              before: sunrise
      sequence:
        - service: light.turn_on
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
        - service: light.turn_off
          entity_id: light.lampe_hue_white_cuisine
        - delay:
            minutes: "{{ range(10, 25) | random }}"
  - delay:
      hours: 0
      minutes: 15
      seconds: 0
      milliseconds: 0
  - service: light.turn_off
    data: {}
    target:
      entity_id: light.hue_play
mode: single

La logique OUI

Mais normalement la séquence se terminant sur un OFF, tu n’as pas besoin de confirmer le OFF !
Car le test de l’état du Soleil est fait en début de séquence !

Moi je te donnais l’exemple si tu voulais clore l’automatisation dés le Lever du Soleil !

1 « J'aime »

Comme le dit @Doubledom, on sortira de la boucle forcément après le lever du soleil. Le dernier ordre exécuté sera un ordre d’éteindre la lumière, donc pas la peine de rajouter un autre ordre. La lumière sera forcément éteinte.

Par contre, la lumière peut rester allumer jusqu’à 25 minute après le levé du soleil (cas extrême ou la boucle démarre 1 seconde avant le levé du soleil et la fonction random retourne 25). Mais cela n’est pas gênant.

Pour éviter cela on peut rajouter un offset négatif sur la sortie de boucle au levé du soleil avec before_offset. Dans le code ci-dessous, on sortira de la boucle si on est 25mn avant le levé du soleil, et donc la lampe sera forcément arrêtée au moment ou le soleil se lève. Mais tu peux mettre plus ou moins.

  - repeat:
      while:
        - condition: or
          conditions:
            - condition: sun
              after: sunset
            - condition: sun
              before: sunrise
              before_offset: "-00:25:00"

Merci, je tente ca cette nuit :slight_smile: