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…
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…
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…
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'
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 }}
# 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'
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 ?).