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

Non ça je l’ai compris et vu :expressionless: :grin:

Dans l’onglet ETATS ?

voici ce que j’ai dans l’onglet ETATS en filtrant sur cert :

Donc malgré l’erreur cela remonte ce que tu souhaites ?

Apparemment oui, mais je ne suis pas fan des erreurs dans les logs.

Je souhaiterais pouvoir les supprimer de mes logs.

Sur 7 entrées dans mes logs, 5 concernent ce problème :

Ça ressemble plus à la partie intégration qui n’a pas encore fini de créer le sensor du certificat (et donc empêche les calculs) qu’à un template mauvais ça, non ?

A @Sylvain_G de confirmer, mais je pense que c’est les 2.

La partie « got invalid input ‹ unavailable › when rendering template » doit remonter au reboot de HA, car il manque les valeurs par défaut dans la template. Et au démarrage le sensor ‹ sensor.cert_expiricy_timestamp › n’étant pas « ready » on obtient cette log. Ca doit provenir des modifs sur les templates d’il y’a quelques version:

cf : Valeur par défaut dans un Template - Nouvelle version de HA

Pour la partie « operand » elle doit remonter même si le sensor de base est dispo, et même bien après restart de HA, rien qu’en jouant avec les outils de dev.

Après comme a dit Clemalex :

J’avoue que je n’ai jamais réussi à régler ce problème et j’ai fini sur un « timestamp » …

Ça commence à dépasser mes compétences :sob:
@Herbs, comme je cherche à connaître le nombre de jours restants de validité du certificat comment fais tu pour convertir le timestamp en jours restants ?

« Spoiler Alert » alors quand j’ai été dans la même situation que toi j’ai cherché un long moment avant de me résigner à mettre la solution que je vais décrire.

A l’époque ça devait être un pansement « temporaire » et au final le temporaire dure plus longtemps que prévu :stuck_out_tongue:

Bref c’est un peu crado comme solution mais pour le moment ça fonctionne :wink:

Alors c’est en mode sensors template nouvelle version (donc pas legacy), le code dans template.yaml :

  - name: "tagada"
    unique_id: tagada
    unit_of_measurement: "Jour(s)"
    state: >
      {{ ((as_timestamp(states('sensor.cert_expiry_timestamp_tagada.fr'), 4102354800) - as_timestamp(states('sensor.date'), 4101487200)) / 86400) | int }}
    icon: mdi:certificate

Les valeurs par défaut (4102354800 et 4101487200) correspondent au 31/12/2099 et 20/12/2099, comme mon seuil d’alerte et de 4 jours ça permet d’être tranquille lors du démarrage de HA (le temps que sensor.cert_expiry_timestamp_tagada.fr soit dispo).

Maintenant si qqn a un truc plus propre sous la main, je suis preneur :wink: !!!

Eh bien voilà les modifications apportées suite à l’aide de @Herbs :

# 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 = as_timestamp(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), 4102354800) %}
      {% set start = as_timestamp(states('sensor.date'), 4102354800) %}
      {{ ((end - start) / 86400) | int }}

Il est vrai que c’est pas très classe d’initialiser les variables comme ceci mais au moins ça marche …
Plus aucune erreur…
Merci @Herbs :ok_hand:

De rien, merci à vous de m’avoir rappelé que je m’étais mis ça de côté pour remise au propre :stuck_out_tongue: !!!

Bonjour à tous,

Mon certificat expire en mars, et pourtant en ajoutant ce sensor :

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 = as_timestamp(states('sensor.cert_expiry_timestamp_URLDUDOMAINE'), 4102354800) %}
      {% set start = as_timestamp(states('sensor.date'), 4102354800) %}
      {{ ((end - start) / 86400) | int }}

Avec les informations de sensor.cert_expiry_timestamp_***, j’obtiens un sensor qui me donne comme résultat -28 048 Jour(s)…

Savez-vous quelle correction je dois apporter ?

Merci :slight_smile:

Hello. A vu de nez je dirais ça :

:thinking:

1 « J'aime »

Merci pour le retour :slight_smile: J’ai pris les informations données plus haut par Herbs et Sylvain_G.
Je ne sais pas par quelle valeur je dois modifier ce sensor… J’ai bien vu que Herbs expliquait que cette valeur correspondait au 31/12/2099 mais je suis dépassé je ne comprends pas tout…

Ce sensor n’est-il pas sensé me donner le nombre de jours restants avant expiration de mon certificat ?

[EDIT]: Quel intérêt pour ce blueprint plutôt qu’un sensor ?
Blueprint for automatic renewal of a Let’s Encrypt certificate - Blueprints Exchange - Home Assistant Community (home-assistant.io)

ça en language humain, ça veut dire donner la date d’expiration du certificat, sinon 31/12/2099…

D’accord merci :slight_smile:

Du coup je ne suis pas partie sur la bonne information…

J’aurais souhaité créer un trigger avec un certain nombre de jours restants avant expiration de mon certificat. Il y a beaucoup d’informations données dans le tuto de Landaisbenj et je me perds un peu.

Est-ce faisable sans créer de sensor ormis les infos du trigger ?

Tu peux tout faire…
Par contre pour comprendre pourquoi ça ne fonctionne pas, il vaut mieux tester le bout de value_template dans les outils de développement

Je pense avoir fini par trouver ce que je voulais faire…

Si je mets en place cette automatisation :

alias: Renouveler certificat
description: >-
  Permet la relance de l'add-on Let's Encrypt afin de renouveler le certificat
  HTTPS.
trigger:
  - platform: template
    value_template: >-
      {{as_timestamp(strptime(states('sensor.cert_expiry_timestamp_XXXXXXX'),
      '%Y-%m-%dT%H:%M:%S+00:00') - timedelta(days=5)) |
      timestamp_custom('%Y-%m-%d')}}
condition: []
action:
  - service: hassio.addon_start
    data:
      addon: core_letsencrypt
  - delay:
      hours: 3
      minutes: 0
      seconds: 0
      milliseconds: 0
  - service: homeassistant.restart
    data: {}
mode: single

Alors à minuit 5 jours avant l’expiration de mon certificat, l’add-on Let’s Encrypt va se lancer et renouveler mon certificat, puis à 3h du matin, va redémarrer HA.

Si quelqu’un voit un souci qu’il n’hésite pas à m’expliquer :slight_smile:

Mouais… Je ne sais pas si c’est optimal :

  • quid si ça ne fonctionne pas à J-5 ?
  • le restart est indispensable ?

Let’s encrypt prends déjà en charge le fait de ne pas renouveler un certificat trop tôt. Donc dans la vraie vie, on lance ça tous les jours sans se poser de questions, à partir du 15ème jour de fin de vie du certificat, ça « peut » se renouveler. Et si ça ne marche pas à j-15 (à cause des restriction ou cas de pannes), ça marche au tour suivant. C’est aussi comme ça que fonctionne l’addon duckdns

D’accord je comprends, que me conseilles-tu ?

Il me semble que le redémarrage de HA est obligatoire pour avoir le nouveau certificat non ?

Simple : un truc tous les jours à 3h du mat

Je ne sais pas, je pose la question, c’est à tester. Et donc ajouter un restart si et seulement si certificat nouveau

1 « J'aime »