Coup de gueule sur l'affichage et la gestions des dates (et heures)

Bonjour,
Je voulais vous faire partager un mini coup de gueule sur la difficulté de gérer les dates dans home assistant.

Dans cette exemple, je récupère les dates et heures, depuis du multiscrape, des prochaines bus de ma ligne favorite sur une API :

Je souhait donc les afficher dans un dashboard mais il semble que la gestion des object datetime est quelques peut chaotique :

Mon sensor est de type timestamp

      name: 'Bus 23 : 6eme'
      value_template: "{{ strptime(((today_at('00:00') + timedelta(seconds= (value_json[0].times[5].scheduledArrival | int) )) | string), '%Y-%m-%d %H:%M:%S%z') }}"
      device_class: timestamp

( l’api où je me connecte donne l’horaire en seconde depuis 0h00, je la converti donc en « vrai champ datetime » )

Donc, très facilement, je peut les utilisers comme ça :

title: Bus ligne 23
show_header_toggle: false
state_color: false
type: entities
entities:
  - entity: sensor.bus_23_0
    name: Départ immédiat
    secondary_info: last-updated
  - entity: sensor.bus_23_1
    name: Prochiane départ
  - entity: sensor.bus_23_2
    name: Prochiane départ
  - entity: sensor.bus_23_3
    name: Prochiane départ
  - entity: sensor.bus_23_4
    name: Prochiane départ
  - entity: sensor.bus_23_5
    name: Prochiane départ
  - entity: button.bus_23_refresh
    name: Refresh data

L’affichage est pas (trop) mal, mais imprécise :

home assistant date

Donc je me dit que ça serait bien de mettre 2 écriture différentes en même temps, genre : Dans 2 heures (à 11h34)

  • easy_time permet d’afficher la 1er partie (mais pas la 2eme) ( la traduction en français ne semble pas fonctionné mais peut importe pour l’instant)
{%- set default_language = 'fr' %}
{% from 'easy_time.jinja' import easy_time %}
{{ easy_time('sensor.bus_23_5') }}  --> 1 hour

Pour la 2éme partie ( à 11h34m), si je comprend bien, il faut utiliser strftime(« %Hh%M ») sur un objet datetime
même si object_call est timestamp (ou date) , j’ai une erreur si je tente de faire un

{{ (states('sensor.bus_23_5')).strftime("%Hh%M") }}  --> UndefinedError: 'str object' has no attribute 'strftime'

Pour lui, c’est visiblement une string, alors qu’il a était crée avec le bon format et en datetime.

Donc obliger de le reconvertir en datetime pour l’afficher « proprement » :

{{ strptime(states('sensor.bus_23_5'), '%Y-%m-%dT%H:%M:%S%z').strftime('%Hh%M') }}

Salut,

ça fonctionne, il faut précisier la langue dans les arguments d’appels, c’est tout
language='fr'

Easytime aussi le gère, tu as plein d’autres trucs par exemple
{{ custom_time('sensor.bus_23_5', 'hour, minute',language='fr') }}

Perso je n’utilise plus que ça (la lib easy_time)partout

Merci de ton retour, mais visiblement, le custom_time n’affiche pas l’heure et les minutes mais un diff :

 {{ custom_time('sensor.bus_23_5', 'hour, minute',language='fr') }} -->  2 heures et 30 minutes
1 « J'aime »

Effectivement, alors pourquoi pas ?
{{ states('sensor.bus_23_5').split(' ')[1][:-3] }}