Création de l'entité temps restant d'un certificat SSL

Par contre, je l’ai compris, mais je ne t’ai pas vu expliquer ca.

Modifie le premier post comme tu le dit et je ferais le ménage dans les messages pour extraire mon tutoriel (qui ne réponds pas réellement à ton besoin) en pointant sur le tien :+1:

Comme tu veux, mais je pense que tout ce qu’on as fait montre la démarche, et des fois c’est plus explicite…

Oups ! j’édites car ça ne sert pas.

Je voulais voir si en ne récupérant que la date, sans les heures, je pouvais introduire cette explication… :grin:

Oui mais ca reste intéressant. La fonction split peut resservir plus tard pour autre chose, du coup de la trouver par hasard sur un tel poste pourra aider pour une autre recherche. Perso moi je me la met de coté.

Dès fois, j’ai la mémoire courte, j’ai expliqué la function split ici :
https://forum.hacf.fr/t/automatisation-avec-input-number-cover/1320/33?u=clemalex

1 « J'aime »

Je suis à :100: d’accord, le plus important n’est pas le code mais la démarche et la réflexion pour y arriver !

Ca marche, je laisse ici :+1:

1 « J'aime »

Désolé de relancer un si vieux post mais j’ai un soucis pour le mettre en oeuvre.

J’ai mis ce code :

# Création d'un capteur pour avoir le nombre de jours avant expiration du certificat.
#
# https://forum.hacf.fr/t/creation-de-lentite-temps-restant-dun-certificat-ssl/1670
# https://forum.hacf.fr/t/creation-de-lentite-temps-restant-dun-certificat-ssl/1670/4
#
platform: template
sensors:
  cert_expiry_delay_URLDUDOMAINE:
    friendly_name: "Expiration du certificat URLDUDOMAINE"
    unit_of_measurement: "Jour(s)"
    icon_template: mdi:timer-sand
    value_template: >-
      {{(strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00')-strptime(states('sensor.date'), "%Y-%m-%d")).days}}

Et j’ai cette logs dans le journal de HA suite au rédémarrage :

TemplateError('TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'') while processing template 'Template("{{(strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00')-strptime(states('sensor.date'), "%Y-%m-%d")).days}}")' for attribute '_attr_native_value' in entity 'sensor.cert_expiry_delay_URLDUDOMAINE'

Evidemment, je n’ai pas URLDUDOMAINE dans mon code et les logs mais mon nom de domaine :innocent:

J’ai un peu de mal à comprendre la log … :thinking:

Bonjour,

Je suis preneur d’une explication, après recherche, je tourne en rond… Je précise que je suis débutant

Merci par avance

Une explication sur quoi ? Ma réponse comporte déjà énormément de détails…
Donc si tu en veux plus, explique où tu bloques exactement et ce que tu as fais…

Avec l’ensemble des explications, j’ai réussi à visualisé le nombre de jours restants avant l’expiration du certificat. J’ai aussi créé l’automatisation qui me permet d’être alerté un nombre de jour paramétrable avant l’expiration. Cet élément paramétrable est actuellement géré directement dans le code.
Tu parlais de gérer le seuil d’alerte par interface graphique avec l’entité input_number.ssl_seuil. Je n’ai pas cet entité, et je ne sais pas comment l’implémenter.
Peut-être que la solution est donné par ailleurs, mais je n’ai pas trouver…

Merci par avance de ton aide

Ok c’est donc ici.

Il suffit de passer par l’interface graphique et de créer une entité input_number (=nombre) et d’utiliser son nom dans l’automatisation cité juste au dessus de mon extrait.

Personne ne peut m’aider sur mon problème d’erreur dans le journal HA ?
J’ai toujours ce message dans les logs de HA et je n’arrive pas à m’en défaire…

Salut,
Tu as essayé de décomposer ton calcul ?

C’est-à-dire ?

Qu’est-ce que tu entends par décomposer ton calcul ?

genre dans un mode des outils de dev (j’ai écrit ça à l’arrache)

{% set end = strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00') }%}
{% set start = strptime(states('sensor.date'), "%Y-%m-%d")  %}
{{ start }}
{{ end }}
{{   (end-start).days }}

Je vois plusieurs trucs à vérifier : les types et la fonction strptime.
Personnellement je passe par une conversion en timstamp plutot qu’un format date…

Alors dans la console de dev :

Le résultat est le suivant :
image

Une idée du pourquoi j’ai une erreur dans mes logs de HA ?
celles-ci :

Logger: homeassistant.components.template.template_entity
Source: components/template/template_entity.py:167
Integration: Template (documentation, issues)
First occurred: 19:08:22 (1 occurrences)
Last logged: 19:08:22

TemplateError('TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'') while processing template 'Template("{{ (strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00')-strptime(states('sensor.date'), "%Y-%m-%d")).days }}")' for attribute '_attr_native_value' in entity 'sensor.cert_expiry_delay_URLDUDOMAINE'
Logger: homeassistant.helpers.event
Source: helpers/template.py:409
First occurred: 19:08:22 (1 occurrences)
Last logged: 19:08:22

Error while processing template: Template("{{ (strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00')-strptime(states('sensor.date'), "%Y-%m-%d")).days }}")
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 407, in async_render
    render_result = _render_with_context(self.template, compiled, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 1820, in _render_with_context
    return template.render(**kwargs)
  File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 1291, in render
    self.environment.handle_exception()
  File "/usr/local/lib/python3.9/site-packages/jinja2/environment.py", line 926, in handle_exception
    raise rewrite_traceback_stack(source=source)
  File "<template>", line 1, in top-level template code
TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 523, in async_render_to_info
    render_info._result = self.async_render(variables, strict=strict, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/template.py", line 409, in async_render
    raise TemplateError(err) from err
homeassistant.exceptions.TemplateError: TypeError: unsupported operand type(s) for -: 'str' and 'datetime.datetime'

ajoute des espaces lors de la soustraction - strptime(

J’ai modifié le code du sensor en ajoutant des espaces :

# Création d'un capteur pour avoir le nombre de jours avant expiration du certificat.
#
# https://forum.hacf.fr/t/creation-de-lentite-temps-restant-dun-certificat-ssl/1670
# https://forum.hacf.fr/t/creation-de-lentite-temps-restant-dun-certificat-ssl/1670/4
#
platform: template
sensors:
  cert_expiry_delay_URLDUDOMAINE:
    friendly_name: "Expiration du certificat URLDUDOMAINE"
    unit_of_measurement: "Jour(s)"
    icon_template: mdi:timer-sand
    value_template: >-
      {{ (strptime(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), '%Y-%m-%dT%H:%M:%S+00:00') - strptime(states('sensor.date'), "%Y-%m-%d")).days }}

Et le résultat est identique… :thinking:

Et les 3 lignes qui marchent du modèle (vire l’affichage du start et du end) dans le sensor ça donne quoi ?