Décompte de jours et format d'un input_datetime

Bonjour à tous,

Je cherche a faire un décompte de jours a partir d’un input_datetime, je ne sais pas comment proceder…
Je voudrais afficher le nombre de jours restant à partir de l’input + 1 an.
J’ai créé l’input_datetime mais il n’est pas au format FR, possible de modifier cela?

Merci d’avance pour votre aide.

Voici quelques sujets qui parlent de calcul de date :

Commence par les lire :+1:

Si j’ai bien compris ta demande, tu souhaites obtenir le nombre de jours restant sur un décompte d’un an ?

Si c’est bien cela, je pense que je partirai de ce sujet là (Prochaine expiration du certificat de mes noms de domaine (ou autre liste)) mais avec comme base de départ non pas des certificats mais une entité calculer depuis ton entité de base + 1an.

Je sais pas si je suis clair ?

Merci @Clemalex , cela semble être ça oui :slight_smile:
Il faut que je créer un second sensor qui prend mon input_datetime et ajoute 1 an ? Comment je fait cela?
Après je suis je soustrait les deux ds un template.
C’est l’idée?

Salut

https://docs.python.org/3/library/datetime.html#datetime.timedelta

  - platform: template
    sensors:
      plus_un_an:
        value_template: "{{ (states('input_datetime.xxx') + timedelta(days=365)

pour lovelace

        - type: entities
          entities:
            - entity: sensor.plus_un_an
              name: fin

Cela t’affichera le temps restant

Merci de ton aide.

J’ai du rater un truc :

image

Voici ce que je mettrais :

sensor:
  - platform: template
    sensors:
      plus_un_an:
        value_template: >
          {% set date_dans_un_an = strptime(states('input_datetime.hacf'),'%Y-%m-%d') + timedelta(days=365)%}
          {{ date_dans_un_an.year }}-{{ '{:02d}'.format(date_dans_un_an.month) }}-{{ '{:02d}'.format(date_dans_un_an.day) }}

Le '{:02d}'.format() est expliqué ici → Explication du formatage

@Wanfr sur le principe ce que tu proposes est cohérent mais de mémoire la sortie de la fonction states() est un texte (string) et donc tu ne peux pas directement utiliser la fonction timedelta qui fonctionne seulement avec des objets datetime.

Je viens de test mais c’est pas fructueux…


le code:

adou_filtre_time:
           value_template: >
            {% set date_dans_un_an = strptime(states('input_datetime.filter_date'),'%Y-%m-%d') + timedelta(days=365)%}
            {{ date_dans_un_an.year }}-{{ '{:02d}'.format(date_dans_un_an.month) }}-{{ '{:02d}'.format(date_dans_un_an.day) }}
   

peut-etre le « date_dans_un_an » qu’il faut que je definisse?

Tu peux faire une capture d’écran de ton code ?

Car l’indentation que tu mets n’est pas bonne (du tout!) :sweat_smile:

Non car il est définit dans le code sur la ligne {% set date_dans_un_an
Tu as juste à faire ce que tu as fait, remplacer l’entité input_datetime :+1:

En effet il y avait un problème d’indentation…
Possible de mettre la date au format FR ?
Et aussi on peu avoir le décompte de jour? genre il reste 200 jours ?

image

Suffit de reprendre la déclaration :

sensor:
  - platform: template
    sensors:
      plus_un_an:
        value_template: >
          {% set date_dans_un_an = strptime(states('input_datetime.hacf'),'%Y-%m-%d') + timedelta(days=365)%}
          le {{ '{:02d}'.format(date_dans_un_an.day)}}/{{ '{:02d}'.format(date_dans_un_an.month) }}/{{ '{:04d}'.format(date_dans_un_an.year) }}

ben oui je suis bête… le boulet

Oui :

  - platform: template
    sensors:
      temp_restant:
        value_template: >
          {% set date = strptime(states('input_datetime.hacf'),'%Y-%m-%d') %}
          {% set date_dans_un_an = strptime(states('input_datetime.hacf'),'%Y-%m-%d')+ timedelta(days=365) %}
          {{(date_dans_un_an - now().replace(tzinfo=None)).days}}

Top! c’est parfait!! Merci beaucoup.

Salut @Clemalex ,

Une petite vérification, j’ai fait cela:

  - platform: template
    sensors:
      pool_filtre_time:
        friendly_name: "Prochain nettoyage"
        value_template: >
            {% set date_dans_un_an = strptime(states('input_datetime.pool_filter_date'),'%Y-%m-%d') + timedelta(days=15)%}
            le {{ '{:02d}'.format(date_dans_un_an.day)}}/{{ '{:02d}'.format(date_dans_un_an.month) }}/{{ '{:04d}'.format(date_dans_un_an.year) }}
  - platform: template
    sensors:
      pool_filtre_time_rest:
        friendly_name: "Nettoyage du filtre dans"
        unit_of_measurement: "jours"
        value_template: >
          {% set date = strptime(states('input_datetime.pool_filter_date'),'%Y-%m-%d') %}
          {% set date_dans_un_an = strptime(states('input_datetime.pool_filter_date'),'%Y-%m-%d')+ timedelta(days=15) %}
          {{(date_dans_un_an - now().replace(tzinfo=None)).days}}

  pool_filter_date:
    name: Dernier nettoyage
    has_date: true
    has_time: false

C’est bon? J’ai modifié pour avoir le delta a 15 jours au lieu de 1 an.
Pour mettre mon input.datetime au format FR, il faut reprendre ce que tu as mis dans les sensor? Cela fonctionne pareil?

Merci d’avance pour ton aide.

Je comprends pas…

Les input_datetime n’as pas de format…

Faut que tu fasses des tests… :innocent:

Ben il s’affiche comme cela:
image

C’est l’affichage standard de HA :

Affichage des input_datetime

Oui j’avais vu cela, apriori toujours eu de modification de ce coté.
C’est pas hyper important de toute façon.

Sinon, c’est bon pour le delta de 15j ? Il fallait juste changer 365 par 15 ?

Oui tout a fait :+1:

1 « J'aime »