La mise à jour est faite, ce n’est pas encore ça…
j’ai mal géré la nouvelle boucle…
edit :
et voilà
sensor:
- platform: template
sensors:
prochaine_priere:
friendly_name: "Prochain événement à venir"
value_template: >
{# Définition de la liste des entités que l'on veut surveiller #}
{% set liste_des_entites= ['sensor.fajr_mawaqit','sensor.dhuhr_mawaqit', 'sensor.asr_mawaqit','sensor.maghrib_mawaqit','sensor.isha_mawaqit'] %}
{# Définition du namespace pour récupération de la valeur en dehors de la boucle #}
{%set timestamp_des_entites_boucle = namespace(timestamp='') %}
{# Boucle parcourant tous les éléments de la liste `liste_des_entites` #}
{# Cette boucle permet de définir une liste contenant les timestamp #}
{% for entite in liste_des_entites %}
{% if loop.first %}
{# Au premier passage #}
{% set timestamp_des_entites_boucle.timestamp = [as_timestamp(states(entite))] %}
{% else %}
{# Pour les autres passages #}
{% set timestamp_des_entites_boucle.timestamp = timestamp_des_entites_boucle.timestamp + [as_timestamp(states(entite))] %}
{% endif %}
{% endfor %}
{# Définition de la liste représentant les timestamp #}
{% set timestamp_des_entites = timestamp_des_entites_boucle.timestamp %}
{# Définition de la variable contenant le timestamp le plus petit représentant le prochain évènement #}
{%set timestamp_le_plus_petit = namespace(timestamp='',stop='') %}
{%set texte_mise_a_jour = 'En attente de mise à jour' %}
{% for temps in timestamp_des_entites %}
{% if loop.first %}
{# Au premier passage #}
{% set timestamp_le_plus_petit.timestamp = texte_mise_a_jour %}
{% endif %}
{# Pour tous les passages même le premier #}
{% if (as_timestamp(now()) < temps) and not(timestamp_le_plus_petit.stop) %}
{% set timestamp_le_plus_petit.stop = true %}
{% set timestamp_le_plus_petit.timestamp = temps %}
{% endif %}
{% endfor %}
{% set entite_la_plus_petite = timestamp_le_plus_petit.timestamp %}
{% if entite_la_plus_petite != texte_mise_a_jour %}
{# Définition de la date/heure du prochain évènement en objet datetime pour faire des calculs liés au temps #}
{% set prochain_evenement = strptime(states(liste_des_entites[timestamp_des_entites.index(entite_la_plus_petite)]), '%Y-%m-%d %H:%M:%S') %}
{# Définition de la date/heure actuel en objet datetime pour faire des calculs liés au temps #}
{% set maintenant = strptime((states('sensor.date') + " " + states('sensor.time') + ":00"), '%Y-%m-%d %H:%M:%S') %}
{# On soustrait les deux objets datetime afin de récupérer le temps restant #}
{{(prochain_evenement - maintenant)|replace('days','jours')|replace('day','jour')}}
{% else %}
{{ texte_mise_a_jour }}
{% endif %}