Bonjour à tous,
J’ai finalement réussi à écrire le code avec chat GPT qui m’a bien aidé.
Je transmets donc le code à la communauté si cela peut en aider.
J’ai créé un premier sensor permettant de calculer le temps de charge restant en fonction du pourcentage de charge de la batterie :
- platform: template
sensors:
temps_charge_restant:
friendly_name: "Temps de charge restant"
value_template: >-
{% set pourcentage_actuel = states('sensor.test_batterie_pourcentage') | float(0) %}
{% set pourcentage_cible = 80 %}
{% set temps_par_pourcentage = 210 %}
{% if pourcentage_actuel < pourcentage_cible %}
{% set pourcentage_manquant = pourcentage_cible - pourcentage_actuel %}
{% set temps_total = pourcentage_manquant * temps_par_pourcentage %}
{{ temps_total | int }}
{% else %}
21000
{% endif %}
unit_of_measurement: "secondes"
entity_id: sensor.test_batterie_pourcentage
Et j’ai ensuite créé un 2e sensor qui me permet de calculer l’heure de début de charge afin de pouvoir la récupérer dans une automatisation :
- platform: template
sensors:
heure_debut_charge:
friendly_name: "Heure de début de charge"
value_template: >-
{% set temps_restant = states('sensor.temps_charge_restant') | float(0) %}
{% if temps_restant > 0 %}
{% set maintenant = now() %}
{% set fin_charge = maintenant.replace(hour=6, minute=0, second=0, microsecond=0) %}
{# Si l'heure actuelle est déjà après 6h00, on programme la charge pour finir le lendemain à 6h00 #}
{% if maintenant.hour >= 6 %}
{% set fin_charge = fin_charge + timedelta(days=1) %}
{% endif %}
{# Calcul de l'heure de début en soustrayant le temps de charge restant à l'heure de fin #}
{% set debut_charge = fin_charge - timedelta(seconds=temps_restant) %}
{{ debut_charge.isoformat() }}
{% else %}
"none"
{% endif %}
device_class: timestamp
entity_id:
- sensor.temps_charge_restant
N’hésitez pas à venir poser des questions sur l’application de ce code.