Bonsoir a tous,
J’ai des templates sensor dont le dernier ci dessous qui me donne le temps restant avant la prochaine prière.
- name: next_prayer_new
state: >-
{% set now = strptime(states('sensor.time'), '%H:%M') %}
{% set fajr = strptime(states('sensor.salah_fajr'), '%H:%M') %}
{% set dhuhr = strptime(states('sensor.salah_dhuhr'), '%H:%M') %}
{% set asr = strptime(states('sensor.salah_asr'), '%H:%M') %}
{% set maghrib = strptime(states('sensor.salah_maghrib'), '%H:%M') %}
{% set isha = strptime(states('sensor.salah_isha'), '%H:%M') %}
{% if now < fajr %}
{{ states('sensor.salah_fajr') }}
{% elif fajr <= now < dhuhr %}
{{ states('sensor.salah_dhuhr') }}
{% elif dhuhr <= now < asr %}
{{ states('sensor.salah_asr') }}
{% elif asr <= now < maghrib %}
{{ states('sensor.salah_maghrib') }}
{% elif maghrib <= now < isha %}
{{ states('sensor.salah_isha') }}
{% else %}
{% set tomorrow = now + timedelta(days=1) %}
{% set tomorrow_str = tomorrow.strftime('%Y-%m-%d') %}
{{ states('sensor.salah_fajr', {'date': tomorrow_str}) }}
{% endif %}
- name: time_until_next_prayer
state: >-
{% set current_time = now().strftime('%H:%M') %}
{% set next_prayer = states('sensor.next_prayer_new') %}
{% set next_prayer_datetime = strptime(next_prayer, '%H:%M') %}
{% set current_datetime = strptime(current_time, '%H:%M').replace(year=next_prayer_datetime.year, month=next_prayer_datetime.month, day=next_prayer_datetime.day) %}
{% if current_datetime < next_prayer_datetime %}
{{ (next_prayer_datetime - current_datetime).total_seconds() }}
{% else %}
{{ (next_prayer_datetime + timedelta(days=1) - current_datetime).total_seconds() }}
{% endif %}
- name: time_until_next_prayer_formatted
state: >-
{% set total_seconds = states('sensor.time_until_next_prayer') | float %}
{% set hours = (total_seconds // 3600) | int %}
{% set minutes = ((total_seconds % 3600) // 60) | int %}
{{ '%02d:%02d' % (hours, minutes) }}
Afin d’utiliser la carte custom bar card je voudrais créer un timer a partir de mon sensor.time_until_next_prayer_formatted.
Quelqu’un aurait une piste?
Un autre template?
Ou créer un timer vide et utiliser une automation pour l’actualiser ?
Merci du coup de pouce d’avance.
1 « J'aime »
Salut,
Les sensors sont déjà bien « poilus » (autres sensors avec les H:M + calcul now etc)… Pas certain qu’un étage de plus ça soit le plus simple ?
Quel est ton objectif (ce que ça doit afficher et pas comment tu imagines le faire) ?
Perso comme ça je partirai d’un calendar, avec easy pour le calcul… Ensuite pour l’affichage à voir ce que tu veux obtenir
Merci pour ton retour.
En fait je souhaite dans ma card mettre cette card avec le temps restant :
[GitHub - rianadon/timer-bar-card: A progress bar display for Home Assistant timers]
mais si je mets mon sensor time remaining formatted la bar n’apparai tpas :

seulement le temps restant.
Edit:
Le code de la carte au cas ou :
type: custom:stack-in-card
cards:
- type: custom:layout-card
layout_type: custom:grid
layout:
grid-template-columns: auto 120px
grid-template-rows: auto auto
margin: '-4px 0px -10px -4px;'
cards:
- type: custom:mushroom-template-card
primary: Prayer Times
secondary: >-
Next Prayer: {{ states('sensor.next_prayer_new') }} | Starts
in {{
states('sensor.time_until_next_prayer_formatted') }}
icon: mdi:mosque
entity: sensor.next_prayer_new
tap_action:
action: none
hold_action:
action: none
icon_color: red
fill_container: false
multiline_secondary: false
style: |
ha-card {
background: none;
box-shadow: none;
}
- type: custom:timer-bar-card
entities:
- sensor.time_until_next_prayer_formatted
layout: full_row
active_state: Running
bar_radius: 3em
bar_height: 15px
bar_width: 50%
bar_foreground: '#FF9800'
bar_background: '#FFE0B2'
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
entity: sensor.salah_fajr
primary: Fajr
secondary: |
{{ states('sensor.salah_fajr') }}
icon: mdi:weather-sunset-up
icon_color: '#F44336'
tap_action:
action: more-info
layout: vertical
fill_container: false
multiline_secondary: false
card_mod:
style: |
.mushroom-template-card .title {
grid-row: 1 / 2; /* span across the first row */
justify-self: start; /* align to the left */
}
.mushroom-template-card .subtitle {
grid-row: 2 / 3; /* span across the second row */
justify-self: end; /* align to the right */
}
- type: custom:mushroom-template-card
entity: sensor.salah_dhuhr
primary: Dhuhr
secondary: |
{{ states('sensor.salah_dhuhr') }}
icon: mdi:weather-sunny
icon_color: '#F1C40F'
tap_action:
action: more-info
layout: vertical
fill_container: false
multiline_secondary: false
card_mod:
style: |
.mushroom-template-card .title {
grid-row: 1 / 2; /* span across the first row */
justify-self: start; /* align to the left */
}
.mushroom-template-card .subtitle {
grid-row: 2 / 3; /* span across the second row */
justify-self: end; /* align to the right */
}
- type: custom:mushroom-template-card
entity: sensor.salah_asr
primary: Asr
secondary: |
{{ states('sensor.salah_asr') }}
icon: mdi:weather-sunset-down
icon_color: '#9C27B0'
tap_action:
action: more-info
layout: vertical
fill_container: false
multiline_secondary: false
card_mod:
style: |
.mushroom-template-card .title {
grid-row: 1 / 2; /* span across the first row */
justify-self: start; /* align to the left */
}
.mushroom-template-card .subtitle {
grid-row: 2 / 3; /* span across the second row */
justify-self: end; /* align to the right */
}
- type: custom:mushroom-template-card
entity: sensor.salah_maghrib
primary: Maghrib
secondary: |
{{ states('sensor.salah_maghrib') }}
icon: mdi:weather-sunset
icon_color: '#FF9800'
tap_action:
action: more-info
layout: vertical
fill_container: false
multiline_secondary: false
card_mod:
style: |
.mushroom-template-card .title {
grid-row: 1 / 2; /* span across the first row */
justify-self: start; /* align to the left */
}
.mushroom-template-card .subtitle {
grid-row: 2 / 3; /* span across the second row */
justify-self: end; /* align to the right */
}
- type: custom:mushroom-template-card
entity: sensor.salah_isha
primary: Isha
secondary: |
{{ states('sensor.salah_isha') }}
icon: mdi:weather-night
icon_color: '#673AB7'
tap_action:
action: more-info
layout: vertical
fill_container: false
multiline_secondary: false
card_mod:
style: |
.mushroom-template-card .title {
grid-row: 1 / 2; /* span across the first row */
justify-self: start; /* align to the left */
}
.mushroom-template-card .subtitle {
grid-row: 2 / 3; /* span across the second row */
justify-self: end; /* align to the right */
}
style: |
ha-card {
background: none;
box-shadow: none;
}
card_mod:
style: |
ha-card {
background: linear-gradient(to right, #ece9e6, #ffffff);
}
Pour le code de la bar seule avec mode debug j’ai ceci :
Le timer au sens HA (celui utilisé par la carte) a pour but de déclencher des actions en amont/aval en gérant le temps entre le début et la fin.
De ce que je comprends toi, tu veux un affichage plus ou moins animé du temps restant avant une série de heure/minute. Correct ?
Oui c’est ça. En gros transformer mon sensor en timer avec juste la même info.
Le timer c’est pas ma solution. Ça n’affichera pas ce que tu veux
Sur le github de l’intégration j’ai vu certains avec un sensor. Je pense que mon template a besoin d’un attribut start Time et duration ainsi que la class timestamp
Donc startime et duration, ça donnerai le temps de la prière… Donc absolument pas le temps restant avant que ce soit l’heure…
Comment tu verrais ça du coup?
L’intégration de base c’est celle-ci ?
Peut-être qu’en faisant commencer tous les timers à minuit, avec durée=heure de la prière, ça pourrait marcher (par contre ça me parait quand même être une grosse usine à gaz)
Salut…
Le problème c’est ton entity dans la partie duration ! tu n’as pas de référence de durée donc pas de barre !
Essai de créé une entity de duration , de sensor.time_until_next_prayer_formatted,
- si celui-ci à un attribue duration !
{{ (state_attr('sensor.time_until_next_prayer_formatted','duration')) }}
Mois je le fais sur des temps pour arrosage
type: custom:timer-bar-card
entities:
- timer.minuteur
duration:
entity: sensor.mesure_temps
bar_radius: 5em
bar_background: green
modifications:
- elapsed: 10%
bar_foreground: blue
active_icon: mdi:numeric-1-box-outline
bar_height: 12px
- elapsed: 20%
bar_foreground: lightblue
active_icon: mdi:numeric-2-box-outline
- elapsed: 30%
bar_foreground: yellow
active_icon: mdi:numeric-3-box-outline
- elapsed: 40%
bar_foreground: orange
active_icon: mdi:numeric-4-box-outline
- elapsed: 50%
bar_foreground: pink
active_icon: mdi:numeric-5-box-outline
- elapsed: 60%
bar_foreground: darkpink
active_icon: mdi:numeric-6-box-outline
- elapsed: 70%
bar_foreground: lightred
active_icon: mdi:numeric-7-box-outline
- elapsed: 80%
bar_foreground: darkred
active_icon: mdi:numeric-8-box-outline
- elapsed: 90%
bar_foreground: red
active_icon: mdi:numeric-9-box-outline
debug: false
avec le sensor.mesure_temp defini dans une entrée en mode développement Template, avec la référence du timer
{{ (state_attr('timer.minuteur','duration')) }}
Je comprend que cela est pas très normal, mais fonctionne ! ICI timer de 20 sec
J’ai une désynchro de l’heure qui s’affiche en fin de décompte!

Hum…
Pour moi il y a mélange entre un compte à rebours versus minuteur … C’est pas du tout la même notion.
Les timer de HA (minuteurs), ça demande à être déclencher surtout pour afficher la barre de progession
Dans cette carte il faut une entité [duration] avec un attribue de temps sinon ne fonctionne pas sur la barre
Oui j’ai bien compris 
Mais la duration justement, n’est pas si simple à calculer…
Ok
Il faudrait que je reprenne comment il établi son sensor ! dans son YAML
EDIT
Donc il calcule dans combien de temps la prochaine !, comme il fait référence au moment ( current_time)
il faut mettre dans son Custom: timer-bard-card
- entities: son calcul
- dans la duration :
entity : sensor.time
exemple sur un input.number
Il faut que les deux ai la même unités heures ou (et) minutes
Merci pour vos retours .
En parallèle j’ai suivi le fil sur le community où j’avais vu l’idée.
Il y a un d taille de comment faire :
En gros avec les templates créer une automation pour que cela démarre un timer avec en duration le sensor.
Mouais, ça fait une sacrée collection d’entités… Après si ça fonctionne …