Un réveil sur Home assistant

Et quand tu changes la valeur d’un input_select, l’ input_datetime se met à jour ?

Oui modifiant directement sur la carte l’heure et les minutes du réveil, l’état de mon input datetime se met bien à jour.

Que veux tu dire par ça alors ?

La mise a jour de cette automatisation se fait des input_select vers input_datetime. Pour l’autre sens il faut une autre automatisation…

Bah en faite, sur la capture d’écran ci-dessous, il y a un paramètre intitulé « last trigerred » qui veut dire dernier déclenchement. Je me fie à ça pour constater que l’automatisation wake_1_update_time ne se déclenche pas quand je modifie l’heure et les minutes du réveil. C’est normal ?

Ok pour ça :+1:

Non (et c’est l’automatisation la plus simple dans le cas du reveil :sweat_smile:

Les input_select sont bien nommés ainsi :
input_select.wakehour_1
input_select.wakeminutes_1
?

Utilise pour la mise au point une carte comme celle-ci :

type: entities
entities:
  - entity: input_select.wakehour_1
  - entity: input_select.wakeminutes_1
  - entity: automation.wake_1_update_time
    secondary_info: last-triggered

Merci pour ça c’est pas bête ! Du coup effectivement, depuis la carte de mise au point l’automatisation update est déclenchée lorsque je modifie les input selects :

Dans mon fichiers input_select.yaml et dans l’automation update oui ils sont bien nommées ainsi. Par contre je ne les vois pas apparaître dans la carte du réveil. C’est normal ?

Oui…
L’automatisation (qui marche du coup) sert a mettre à jour l’input_datetime utilisé par la carte.

Mais vu la carte que tu utilises, les input_select ne sont pas nécessaire car cette carte gère très bien nativement le changement horaire (grâce aux flèche)…

Du coup, il reste juste le problème de non déclenchement de l’automatisation de réveil ? (vérifie comme la première dans une carte entités, et utilise seulement la carte pas led input_select)

Non… Car définir l’heure et les minutes du réveil sur la carte de réveil ne déclenche pas l’automatisation update. Seule la carte de mise au point permet cela…

C’est normal ça…On va reprendre depuis le depuis avec ce que tu as en place :

Ce que tu as :

  1. 1x input_datetime représentant l’heure de déclenchement de l’alarme (input_datetime.wake_time_1)

  2. 1x input_select représentant les heures de l'input_datetime (input_select.wakehour_1)

  3. 1x input_select représentant les minutes de l’input_datetime (input_select.wakeminutes_1)

  4. 7x input_boolean représentants les jours de la semaine pour le déclenchement de l’alarme (input_boolean.wakeweekday_ [sun,mon,tue,wed,thu,fri,sat] _1)

  5. 1x input_boolean représentant l’activation de l’alarme (input_boolean.wakestatus_1)

  6. 1x automatisation de mise à jour de l’input_datetime (automation.wake_1_update_time)

  7. 1x automatisation déclenchée lorsque l’heure locale est égale à la valeur de l’input_datetime (automation.wake_1_detect_time)

  8. 1x automatisation qui est déclenchée par automation.wake_1_detect_time (automation.wake_1_alarm_activated)

des scripts pour faire tourner en boucle l’alarme ? Si oui partage les (peut être réalisé directement dans un seul script avec une boucle until par exemple)

Fini pour le résumé des entités…

Maintenant concernant :

C’est normal car tu as seulement une automatisation (automation.wake_1_update_time) qui met à jour dans le sens [ input_select → input_datetime ]. Il te faudrait l’équivalent dans l’autre sens : [ input_datetime → input_select ].
On peut y arriver en ajoutant quelques lignes à automation.wake_1_update_time :

automation:
- id: 'wake_1_update_time'
  #nouvelle par rapport au post 1
  # Automatisation qui met à jour le input_datetime 'wake_time_1' représentant l'heure du reveil
  # en fonction des input_select représentants les heures et les minutes
  alias: wake_1_update_time
  trigger:
    - platform: state
      entity_id: input_select.wakehour_1
    - platform: state
      entity_id: input_select.wakeminutes_1
    - platform: state
      entity_id: input_datetime.wake_time_1
  action:
  - choose:
      # Si le déclencheur est l'input_datetime
      - conditions:
          - condition: template
            value_template: "{{ trigger.entity_id.split('.')[0] == 'input_datetime' }}"
        sequence:
          - service: input_select.select_option
            entity_id: input_select.wakehour_1
            data:
              option: "{{trigger.to_state.state.split(':')[0]}}"
          - service: input_select.select_option
            entity_id: input_select.wakeminutes_1
            data:
              option: "{{trigger.to_state.state.split(':')[1]}}"
      # Si le déclencheur est l'un des input_select
      - conditions:
          - condition: template
            value_template: "{{ trigger.entity_id.split('.')[0] == 'input_select' }}"
        sequence:
          - service: input_datetime.set_datetime
            entity_id: input_datetime.wake_time_1
            data_template:
              time: '{{states("input_select.wakehour_1")}}:{{states("input_select.wakeminutes_1")}}:00'

Mais comme tu utilises la carte que j’ai faite, tu n’as pas besoin des input_selects (qui ne sont la que pour régler l’alarme) car la carte permet l’édition de l’heure facilement (contrairement à la carte de base de HA).

Du coup, qu’est-ce qui ne fonctionne pas ?

Bonjour, super boulot. J’ai vu la carte aussi et c’est juste top.
Petite question, actuellement je me réveille avec une routine Alexa sur mon enceinte echo qui me met la musique. Quand je bosse pas un jour de semaine ou suis en télétravail, je l’éteins et en active une autre plus tard…
Je souhaiterais gérer cela de HA. Est il possible de faire quelque chose de similaire, mais d’activer ou désactiver une routine ?
J’ai vu qu’ont pouvez récupérer des « sévices » et lancer des routines. Mais pas avec tous. Par exemple input_bookean, je le vois mais je peux rien faire avec…si j’arrivais à faire 2h de réveil différentes en fonction de télétravail ou présentiel ça serait nickel !!

Et qui sait, si je pousse le bouchon plus loin, si je met télétravail dans mon agenda Google, que ça active le réveil plus tard ?

Bon, j’ai réglé mes problèmes d’alexa.

Par contre, j’ai pas compris dans le fonctionnement du réveil, comment le wakestatus_1 se remet à 0 ?

Il ne se remet pas à zéro et c’est un manque que j’ai signalé…

En prenant exemple sur le code fournit du 1er post, voici pour ceux qui veulent un code fonctionnel (@barto_95 :wink: ) :

##############################
#SENSOR
##############################
sensor:
  - platform: time_date
   #Création de 1 entité représentant l'heure (HH:MM )
    display_options:
      - 'time'

##############################
#INPUT_BOOLEAN
##############################
input_boolean:
  reveil_1:
    #Représente si le réveil est activé
    name: Réveil 1 (Activation)
    icon: mdi:alarm
  reveil_declenche_1:
    #Représente si le réveil à déjà sonné dans la journée (empêche le déclenchement toutes les minutes après l'heure de réveil)
    name: Le réveil a déjà sonné
    icon: mdi:alarm
  reveil_mon_1:
    #Représente le jour : Lundi
    name: Lundi
    icon: mdi:calendar
  reveil_tue_1:
    #Représente le jour : Mardi
    name: Mardi
    icon: mdi:calendar
  reveil_wed_1:
    #Représente le jour : Mercredi
    name: Mercredi
    icon: mdi:calendar
  reveil_thu_1:
    #Représente le jour : Jeudi
    name: Jeudi
    icon: mdi:calendar
  reveil_fri_1:
    #Représente le jour : Vendredi
    name: Vendredi
    icon: mdi:calendar
  reveil_sat_1:
    #Représente le jour : Samedi
    name: Samedi
    icon: mdi:calendar
  reveil_sun_1:
    #Représente le jour : Dimanche
    name: Dimanche
    icon: mdi:calendar

##############################
#INPUT_DATETIME
##############################
input_datetime:
  reveil_heure_1:
    #Représente l'heure du réveil 1
    name: Réveil 1
    has_time: true

##############################
#AUTOMATION
##############################
automation:
  - id: 'reveil_1'
    alias: reveil_1
    description: "Se déclenche à l'heure définie par l'entité input_datetime.reveil_heure_1"
    trigger:
    - platform: state
      #Déclenchement de l'automatisation toutes les minutes (permet de s'assuser que le réveil va sonner même si HA était indisponible à l'heure du réveil (reboot principalement))
      entity_id: sensor.time
    - platform: state
      #Déclenchement lors du changement de l'heure du réveil (permet de reprogrammer le réveil)
      entity_id: input_datetime.reveil_heure_1
    condition:
    - condition: template
      value_template: >-
        {% set numero = '1' %} {# Représente le numéro du réveil #}
        {% set today = 'input_boolean.reveil_' ~now().strftime("%a") | lower ~'_' ~numero %} {# Récupère le nom court de la semaine en anglais et le concatène pour formé le texte <input_boolean.reveil_XXX_1> où XXX peut prendre les valeurs [mon,tue,wed,thu,fri,sat,sun] #}
        {{ is_state(('input_boolean.reveil_' ~numero), 'on') and is_state(today, 'on') }} {# Si le réveil est ACTIF et que le booléen du jour est à Vrai la condition est remplie #}
    action:
    - choose:
      - conditions:
        - condition: template
          #Si l'heure actuelle est inférieure à l'heure du réveil : 
            #Et si le réveil à déjà sonné (input_boolean.reveil_declenche_1)
             #Remise à Faux de l'entité input_boolean.reveil_declenche_1
          value_template: >-
            {% set numero = '1' %} {# Représente le numéro du réveil #}
            {% set heure_du_reveil = strptime(states('input_datetime.reveil_heure_1'),'%H:%M:%S').strftime('%H:%M:%S') %} {# Conversion de l'input_datetime en objet DATETIME au format HH:MM:SS #}
            {% set heure_actuelle = strptime(states('sensor.time'),'%H:%M').strftime('%H:%M:%S')%}  {# Conversion de l'heure actuelle en objet DATETIME au format HH:MM:SS #}
            {% if heure_actuelle < heure_du_reveil %}
              {% if is_state(('input_boolean.reveil_declenche_' ~numero), 'on') %}
                true
              {% else %}
                false
              {% endif %}
            {% else %}
              false
            {% endif %}
        sequence:
          - service: persistent_notification.create
            data:
              message: >
                Déjà réveillé !
              title: DEBUG Automatisation
              notification_id: '{{ (range(1, 9999)|random) }}'
          - service: input_boolean.turn_off
            entity_id: input_boolean.reveil_declenche_1
      - conditions:
        - condition: template
          #Si l'heure actuelle est égale ou supérieure à l'heure du réveil : 
            #Et si le réveil n'a pas déjà sonné (input_boolean.reveil_declenche_1)
             #Mise à Vrai de l'entité input_boolean.reveil_declenche_1
             #<AJOUTER LES ACTIONS DU REVEIL>
             #<AJOUTER LES ACTIONS DU REVEIL>
             #<AJOUTER LES ACTIONS DU REVEIL>
          value_template: >-
            {% set numero = '1' %} {# Représente le numéro du réveil #}
            {% set heure_du_reveil = strptime(states('input_datetime.reveil_heure_1'),'%H:%M:%S').strftime('%H:%M:%S') %} {# Conversion de l'input_datetime en objet DATETIME au format HH:MM:SS #}
            {% set heure_actuelle = strptime(states('sensor.time'),'%H:%M').strftime('%H:%M:%S')%} {# Conversion de l'heure actuelle en objet DATETIME au format HH:MM:SS #}
            {% if heure_actuelle >= heure_du_reveil %}
              {% if is_state(('input_boolean.reveil_declenche_' ~numero), 'off') %}
                true
              {% else %}
                false
              {% endif %}
            {% else %}
              false
            {% endif %}
        sequence:
          - service: persistent_notification.create
            data:
              message: >
                C'est l'heure !
              title: DEBUG Automatisation - Fired
              notification_id: '{{ (range(1, 9999)|random) }}'
          - service: input_boolean.turn_on
            entity_id: input_boolean.reveil_declenche_1
        #  - Action supplémentaire 
        #  - Action supplémentaire
        #  - Action supplémentaire
1 « J'aime »

Merci je vais tester ce soir

@Clemalex tu aurai le code de la card lovelace ?
qui va avec ton code ?

Oui là :

https://forum.hacf.fr/t/carte-reveil-ou-activation-dautomatisation/848

Il y a plusieurs version parcours le fil et demande de l’aide la bas… :innocent:

j’ai essayer justement mais le nom de entity ne corresponde pas et perso j’arrive pas a comprendre lequel utiliser et ou … pour la partie des jours pas de pb mais la partie du haut non …

1 « J'aime »

Voici ma contribution à cette problématique de réveil
J’ai souhaité être réveillé en musique en fonction d’un agenda de travail. Dans l’agenda gmail en question, j’ai planifié un évènement récurrent de travail , commençant à 8h ou à 7h
=> je veux que la radio sur le google mini s’allume 1h avant l’event.
Voila le code

alias: Radio_si_Travail
description: ""
trigger:
  - platform: calendar
    event: start
    offset: "-1:00:0"
    entity_id: calendar.xxxxxxxxxxx_gmail_com
condition:
  - condition: state
    entity_id: calendar.xxxxxxxxxxxxx_gmail_com
    attribute: message
    state: Travail
action:
  - service: media_player.play_media
    target:
      entity_id: media_player.chambre_principale
    data:
      media_content_id: media-source://radio_browser/003baf55-9ac9-4352-bceb-375ee4203133
      media_content_type: audio/aac
    metadata:
      title: France Info
      thumbnail: >-
        https://www.francetvinfo.fr/assets/common/images/pwa/launcher-120x120-2e45ada1.png
      media_class: music
      children_media_class: null
      navigateIds:
        - {}
        - media_content_type: app
          media_content_id: media-source://radio_browser
        - media_content_type: music
          media_content_id: media-source://radio_browser/country/FR
mode: single

Le trigger ne fonctionne qu’une fois par jour.

Bonjour, avez-vous une solution pour éviter de recevoir des spams dans le journal ?

Bonjour

Tout d’abord, merci @cob94440 @Clemalex pour ce fil, très instructif.

J’essaye de reproduire ce réveil mais avec un petit bémol, j’ai une erreur au niveau de

Entité non disponible: sensor.time.

Screenshot_20231101_190522

Comment puis-je corriger cela ? Je ne vois pas trace de celle-ci dans les « outils de développement »

De plus, j’ai remplacé

 service: xiaomi_aqara.play_ringtone par media_player.bureau_gauche  (haut parleur connecté)

En changeant également l'adresse MAC

et

script.xiaomi_alarm2 par script.reveil1_alarm2  (idem pour les autres alarmes)

Est-ce correct ? Dois-je modifier autre chose ?

Merci

PS
j’ai mis cela dans /config/packages/reveil/reveil1.yaml

et dans /config/configuration.yaml, il y a

homeassistant:
packages: !include_dir_named packages/

EDIT

je viens d’ajouter

- platform: time_date
    display_options:
      - 'time'
      - 'date'
      - 'date_time'
      - 'date_time_utc'
      - 'date_time_iso'
      - 'time_date'
      - 'time_utc'
      - 'beat'

dans le fichier /config/configuration.yaml, et c’est bon, j’obtiens l’heure. Mais impossible de modifier les données sur la carte

Screenshot_20231101_195358

idem pour les autres entités.

1 « J'aime »