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

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 ?

Avec 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: >-
      {% 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") %}
      {{ ( end - start ).days }}

J’ai toujours des erreurs qui sont :

Logger: homeassistant.helpers.event
Source: helpers/template.py:409
First occurred: 19:26:57 (1 occurrences)
Last logged: 19:26:57

Error while processing template: Template("{% 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") %} {{ ( end - start ).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'

Transforme la dernière ligne en

{{ (end|to_datetime - start|to_datetime).days }}

L’interpréteur indique que tu soustrait un string (chaîne de caractère) avec un date_time (temps)…

Faut creuser par là ou passer par un timestamp…

Après avoir fait les modifications demandées, j’ai cette erreur lors du contrôle avant redémarrage :

Invalid config for [sensor.template]: invalid template (TemplateAssertionError: No filter named 'to_datetime'.) for dictionary value @ data['sensors']['cert_expiry_delay_URLDUDOMAINE']['value_template']. Got '{% 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") %} {{ (end|to_datetime - start|to_datetime).days }}'. (See ?, line ?).

la fonction strptime n’est pas prévu pour convertir une string en time ?

Je vous avoues que la syntaxe jinja2 est pas très simple pour moi :pleading_face:

si :joy:

sinon l’interpréteur des outils de développement t’insulterais…

C’est un problème interressant.

Je n’ai pas de bande passante pour investiguer pour le moment mais je le garde dans un coin de ma tete.

@Clemalex, si tu prends mon problème en compte je suis rassuré :wink:

je pense qu’il sera réglé d’ici là. c’est plus pour moi. je suis intéressé de ces « bizarreries » :wink: :crazy_face:

l’entité remonte dans HA avec le nombre de jours ou pas ?

Dans l’outil de développement, j’ai bien un retour de 85