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
Non (et c’est l’automatisation la plus simple dans le cas du reveil
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 :
-
1x
input_datetime
représentant l’heure de déclenchement de l’alarme (input_datetime.wake_time_1) -
1x
input_select
représentant les heures del'input_datetime
(input_select.wakehour_1) -
1x
input_select
représentant les minutes de l’input_datetime (input_select.wakeminutes_1) -
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) -
1x
input_boolean
représentant l’activation de l’alarme (input_boolean.wakestatus_1) -
1x automatisation de mise à jour de l’input_datetime (automation.wake_1_update_time)
-
1x automatisation déclenchée lorsque l’heure locale est égale à la valeur de l’input_datetime (automation.wake_1_detect_time)
-
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 ) :
##############################
#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
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…
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 …
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
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.
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
idem pour les autres entités.