Réveil avec simulation Lever de soleil, et binary-sensor

Bonjour,

Je me lance à faire quelque chose d’un peu plus compliqué que Motion pour allumer les lampes.
Venant d’un autre logiciel domotique, j’ai des réflexes, et cela rend l’approche de HA un peu complexe.

Mon besoin

Mon besoin initial est de simuler un lever de soleil pour me réveiller en douceur.

J’ai trouvé un blueprint qui pourrait faire l’affaire : Wake-up light alarm with sunrise effect

1èr point:
Est-ce que ce blueprint est bien fonctionnel ?
Comment faites-vous sinon ?

2ème point :
Ce blueprint propose une option : Savoir si je souhaite être réveillé.
Ce qui est une bonne chose :slight_smile:

J’ai alors à ma disposition quelques entités :
image

  • « Jours fériés » : calendar.france
  • « Mes congés » : calendar.mes_conges
  • « Workday sensor » : binary_sensor.workday_sensor
    le tracker : device_tracker.smart_tracker_0ee8ee_nut_tracker

Bon, le blueprint ne prend qu’une entité, pas plusieurs.
Je me suis dit qu’il fallait alors une entité qui fusionnerait mes autres entités, avec des conditions.

Je ne souhaite pas modifier les fichiers yaml manuellement, et plutôt créer des entrées (ou autre) via l’interface graphique.
J’ai donc créé une entrée de type « Template » puis « capteur binaire »
et dans template, j’ai mis un peu de tout car je ne comprend pas le fonctionnement.
Voici mon gloubi-boulga en attendant :

- platform: template
    sensors:
      reveil_wakeup:
        friendly_name: "Réveil"
        value_template: >-
          {{ is_state('device_tracker.smart_tracker_0ee8ee_nut_tracker', 'Maison')}}

Et là, ben ça ne marche pas.

Comment paramétrer HA pour faire ce sensor, si je suis sur la bonne pistez avec ce blueprint ?

Merci pour vos lumières

Ma configuration


System Information

version core-2024.6.4
installation_type Home Assistant Container
dev false
hassio false
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.1.0-9-amd64
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.34.0
Stage running
Available Repositories 1385
Downloaded Repositories 7
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Dashboards
dashboards 3
resources 4
views 11
mode storage
Recorder
oldest_recorder_run 16 juin 2024 à 05:26
current_recorder_run 22 juin 2024 à 07:40
estimated_db_size 503.55 MiB
database_engine sqlite
database_version 3.44.2
___

Salut

Le mieux c’est de tester même sans toutes les options ça doit bien faire un truc le matin

Le blueprint semble prendre 1 truc, dont l’état ‹ home › ou ‹ on › est considéré comme une activation du réveil. Donc la question c’est que retourne ton {{ is_state('device_tracker.smart_tracker_0ee8ee_nut_tracker', 'Maison')}} ?
Perso moi je vois MAISON d’un coté et Maison de l’autre, c’est pas exactement pareil quand on compare :wink:
Par ailleurs, c’est mieux de prendre un binairy_sensor qui fait que ON ou OFF (ou équivalent 0/1 etc) plutot qu’un sensor qui accepte n’importe quel chaine/nombre. Et puis autant en profiter pour prendre le nouveau format de template :wink:

Bonjour,
Merci de me répondre :slight_smile:

Oui, je le tenterai sans option pour voir si j’en suis satisfait. C’est une bonne idée.

Tu me dis :

Donc la question c’est que retourne ton {{ is_state('device_tracker.smart_tracker_0ee8ee_nut_tracker', 'Maison')}} ?

C’est une bonne question.
Je n’ai pas trouvé une manière simple d’avoir l’info, style en mode debug.
Si je le mets dans un sensor binaire, j’ai tout le temps « Désactivé ».
J’ai beau y mettre n’importe quoi pour le faire réagir, il semble que « Désactivé » soit sa valeur préférée :frowning:

enfin tu dis :

Perso moi je vois MAISON d’un coté et Maison de l’autre,

Alors moi je vois ‹ Maison › partout. j’ai même copier/coller la valeur dans mon sensor.
A noté que ce sensor, je n’ai même pas essayé de le mettre dans le blueprint, car je tourne en rond depuis longtemps, je préfère comprendre cette notion avant de complexifier encore plus tout ça.
Peux-tu me dire où j’ai mal mis la valeur ?

Rho… Tu as les outils dev pour vérifier l’état actuel et même tester ton code !


Mince j’ai vu des majuscules ! Il faut que je me mette à boire pour compenser :crazy_face:

1 « J'aime »
template:
  - binary_sensor:
    - name: "Jour grasse matinée"
      state: >-
        {{ ( is_state('binary_sensor.jour_conges','on') or is_state('input_boolean.grasse_matinee','on') ) 
        and is_state('calendar.maison_vide','off')  | bool -}}

Merci pour l’onglet Développement.
Alors, voilà le valeur du tracker : home

et quant à l’onglet Model, il est pratique aussi :

Je vais tenter de me débrouiller un peu, fouiller gràce à cela.
Et je reviendrai si je n’arrive toujours pas.

Merci beaucoup :slight_smile:

1 « J'aime »

bonjour,

j’en profite pour présenter mon réveil simulateur d’aube que j’avais fait a partir d’un bandeau de leds, dans une petite boite en bois en forme de cœur,
voilà le code
avec démarrage en rouge 20%, montée vers le jaune, puis blanc 100%
tout cela en 25mn, en comptant qu’il démarre normalement 20mn avant l’heure du lever



globals:
  - id: niv_bright
    type: float
    restore_value: no
    initial_value: '10'
  - id: niv_red
    type: float
    restore_value: no
    initial_value: '0'
  - id: niv_green
    type: float
    restore_value: no
    initial_value: '0'
  - id: niv_blue
    type: float
    restore_value: no
    initial_value: '0'


#################################
##### SCRIPTS
#################################
script:
  - id: reveil_progressif
    mode: restart
    then:
      - light.turn_on:
          id: bandeau_alerte_chambre1
          brightness: !lambda 'return id(niv_bright) / 100;'
          red: 100%
          green: 0%
          blue: 0%
      - repeat:
          count: 1500
          then:
           - light.turn_on:
                id: bandeau_alerte_chambre1
                brightness: !lambda 'return id(niv_bright) / 100;'
                red: 100%
                green: !lambda 'return id(niv_green) / 100;'
                blue: !lambda 'return id(niv_blue) / 100;'
           - lambda: 'id(niv_bright) = id(niv_bright) + 0.06;'
           - lambda: 'id(niv_green) = id(niv_green) + 0.0833;'
           - if:
                condition:
                 - lambda: 'return ( id(niv_green) ) > 100;'
                then:
                 - lambda: 'id(niv_blue) = id(niv_blue) + 0.333;'
                 - lambda: 'id(niv_green) = 100;'
           - delay: 1s


  - id: reset_variables
    mode: single
    then:
      - lambda: 'id(niv_bright) = 10;'
      - lambda: 'id(niv_red) = 0;'
      - lambda: 'id(niv_green) = 0;'
      - lambda: 'id(niv_blue) = 0;'





i2c:
  sda: D2    #GPIO5
  scl: D1    #GPIO4



output:      
  - platform: esp8266_pwm
    pin: D8
    id: rtttl_out

rtttl:
  output: rtttl_out
  on_finished_playback:
    - logger.log: 'Fin de lecture ...'



spi:
  mosi_pin: D6
  clk_pin: D5

light:
  - platform: spi_led_strip
    num_leds: 20
    color_correct: [100%, 100%, 100%]
#    id: rgb_led
#    name: "RGB LED Strip"
    data_rate: 1MHz
#light:
#  - platform: fastled_spi
#    chipset: APA102
#    data_pin: D6
#    clock_pin: D5
#    num_leds: 20
#    rgb_order: BGR
    name: "Bandeau alerte chambre1"
    id: bandeau_alerte_chambre1
#    default_transition_length: 30s
    on_turn_off:
     - logger.log: "*** Light Turned Off ! STOP SCRIPT !"
     - script.stop: reveil_progressif
    effects:
      - addressable_scan:
      - addressable_scan:
          name: Scan Effect With Custom Values
          move_interval: 100ms
          scan_width: 1
      - pulse:
      - pulse:
          name: "Pulsation rapide"
          transition_length: 0.5s
          update_interval: 0.5s
      - pulse:
          name: "Pulsation lente"
          transition_length: 2s      # defaults to 1s
          update_interval: 2s



switch:
  - platform: template
    name: "Lumière réveil ch1"
    id: lumiere_reveil_ch1

    turn_on_action:
      then:
        - script.execute: reset_variables
        - script.execute: reveil_progressif
#    turn_off_action:
#      then:
#        - script.stop: reveil_progressif
#        - script.execute: reset_variables
#        - light.turn_off:
#            id: bandeau_alerte_chambre1


  - platform: template
    name: "arrêt réveil ch1"
    id: arret_reveil_ch1
    turn_on_action:
      then:
        - script.stop: reveil_progressif
        - script.execute: reset_variables
        - light.turn_off:
            id: bandeau_alerte_chambre1

et pour l’automatisation qui déclenche le réveil :

{{ now() >= today_at(states('input_datetime.reveil_2')) - timedelta(minutes = 20) }}
2 « J'aime »

Bonjour,
J’ai testé plusieurs configurations, et l’onglet Développement est très utile.

Voici où j’en suis :
J’ai vérifié la valeur de ma condition

J’utilise maintenant la position du smartphone pour la position, puisque la NUT pose des soucis.

Par contre, j’ai créé une entrée

Et dedans, j’ai mis le contenu suivant :

template:
  - binary_sensor:
    - name: "Jour grasse matinée"
      state: >-
         {{ is_state('calendar.france','off')
            and is_state('calendar.mes_conges','off')
            and is_state('binary_sensor.workday_sensor','on')
            and is_state('device_tracker.sm_a25','home') | bool-}}

Mais je ne comprends pas pourquoi, HA me donne toujours la valeur « Désactivé »

Enfin, si je demande la valeur de ce binary sensor :

J’ai l’impression que mon sensor ne sait pas utiliser ma valeur booléenne et met un peu ce qu’il veut c’est-à-dire « off »

Je tourne en rond, malgré les recherches sur le forum et les tests

Merci pour votre aide

Tu te mélanges les pinceaux …
Ton sensor s’appelle binary_sensor.jour_grasse_matinee, pas binary_sensor.test
image

Je te remercie pour ta réactivité.

Alors, je change mon template :

template:
  - binary_sensor:
    - name: testa
      state: >-
         {{ is_state('calendar.france','off')
            and is_state('calendar.mes_conges','off')
            and is_state('binary_sensor.workday_sensor','on')
            and is_state('device_tracker.sm_a25','home') | bool-}}

Je regarde les états dispo en cherchant « test ».
Je vois « test » mais pas « testa »

Je regarde les modeles :

C’est sans doute tout bête, mais pourquoi il me montre binary_sensor.test et pas binary_sensor.testa ?

S’il n’est pas visible, c’est qu’il n’est pas crée
S’il n’est pas crée, tu as 2 choix : un oubli de redémarrage, ou une erreur de config
Commence par vérifier que la config est OK


Et si oui, direction les logs de ha

Oui, j’avais vérifié cet onglet au cas où.

Et j’ai redémarré aussi.

Quant aux logs, je n’ai pas encore regardé cela.
Après le redémarrage et avoir revalidé mon sensor :

2024-07-05 20:02:51.223 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration adaptive_lighting which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-07-05 20:02:51.224 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-07-05 20:02:51.225 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration battery_notes which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

C’est un bon reflexe à prendre, pour voir ce que fait HA, il n’y a pas mieux

C’est quoi pour toi une revalidation ?

3 warning, donc pas à prendre en compte

Et si tu ne trouves rien dans les logs, il reste aussi le cas ou ta config n’est pas incluse (erreur de syntaxe avec les !include par exemple)

J’ai chargé ta config

Avec une meilleure indentation, ça donne ça

template:
  - binary_sensor:
      - name: testa
        state: >-
          {{ is_state('calendar.france','off')
          and is_state('calendar.mes_conges','off')
          and is_state('binary_sensor.workday_sensor','on')
          and is_state('device_tracker.sm_a25','home') | bool-}}

Je suis retourné dans l’écran de paramétrage de mon entrée.
(voici la capture entière de l’écran pour savoir si déjà, on est ok pour où je saisis)
Paramètre → Appareil et service → Entrées

j’ai créé une entrée

puis type binaire

Et je saisis dans la partie template.
Et c’est peut-être là que je fais une erreur.

Ce n’est pas dans les fichiers yaml que je saisis, et sûrement que le contenu doit être fait autrement.

Je teste autrement, mais même résultat :

En fait, je vois qu’il me manque les termes pour faire des recherches.
Je tombe sur des exemples, mais qui modifie les fichiers Yaml.

De recherche en recherche, je suis tombé sur cette vidéo :

Je pars sur :

Et je vois demain si la lumière s’allume :slight_smile:
En tout cas, j’ai testé avec {{ true}} et {{ false}}et j’ai vu l’état changé.

1 « J'aime »

Bonjour,
J’utilise ce blueprint « wake-up light with sunrise effect » mais depuis la lampe associée s’allume de façon quasi aléatoire et le journal indique « SHELLY-E27 a été allumé déclenché par l’automatisation wake-up light déclenché par l’heure pattern ».
Je ne comprends pas cette « heure pattern » car ce n’est pas régulier.

alias: Wake-up light alarm with sunrise effect
description: ""
use_blueprint:
  path: sbyx/wake-up-light-alarm-with-sunrise-effect.yaml
  input:
    light_entity: light.shelly_e27
    timestamp_sensor: sensor.s20_next_alarm
    end_brightness: 100
    min_mired: 153
    start_brightness: 2
    post_sunrise_actions: []
    manual_time: "06:30:00"

Je précise que lorsqu’elle s’allume, elle utilise les paramètres comme si je l’avais allumé manuellement. Il n’y a pas de cycle"sunrise effect"
Merci de votre aide