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