Enregistrer l'historique d'un ensemble de données

Pour conserver l’historique, je me suis inspiré de l’excellent travail de @roumano en stockant les éléments dans un fichier csv.
Tu peux regarder les détails ici : Gestion de lave-vaisselle dans Home assistant - Home Assistant - Tutoriels & Partages / Automatisation / Scène / Script / BluePrint - Home Assistant Communauté Francophone
Ci-dessous le code chez moi, avec l’automatisation de fin de cycle de charge de ma voiture qui m’envoie une notification sur mon mobile, sur HA et qui renseigne le fichier csv.
Grâce à ceci, j’ai l’histoique des info sur plusieurs mois.

code automatisation fin de cycle-notifications
- id: '1681401962227'
  alias: 'Charge voiture : 3 - Fin, notifications'
  description: Charge voiture Fin, notifications
  trigger:
  - platform: numeric_state
    entity_id: sensor.tz3000_2putqrmw_ts011f_active_power_2
    below: 10
    for:
      hours: 0
      minutes: 10
      seconds: 0
  condition:
  - condition: state
    entity_id: input_boolean.charge_voiture_cycle
    state: 'on'
  action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.charge_voiture_cycle
  - service: notify.mobile_app_sm_s906b
    data:
      title: Charge voiture terminée
      message: La charge s'est déroulée de {{ ((state_attr('automation.charge_voiture_start_2','last_triggered'))
        | as_local).strftime("%Hh%M") }} à {{ now().strftime("%Hh%M") }}, coût {{
        ((states('sensor.charge_voiture_power_cycle') | float(default=0) * float(states('input_number.prix_du_kwh_d_electricite'))))  |
        round(2) }}€
  - service: persistent_notification.create
    data:
      title: Charge voiture terminée
      message: "La charge s'est déroulée de {{ ((state_attr('automation.charge_voiture_start_2','last_triggered'))
        | as_local).strftime(\"%Hh%M\") }} à {{ now().strftime(\"%Hh%M\") }}  \nDurée
        {{ float((((state_attr('automation.charge_voiture_fin','last_triggered'))
        - (state_attr('automation.charge_voiture_start_2','last_triggered'))).seconds
        / 3600 )) | int }}h {{float(((((state_attr('automation.charge_voiture_fin','last_triggered'))
        - (state_attr('automation.charge_voiture_start_2','last_triggered'))).seconds
        % 3600 )/60 ))| round(0) }}min \nLe cycle a consommé {{ states('sensor.charge_voiture_power_cycle')
        }}kWh, soit {{ ((states('sensor.charge_voiture_power_cycle') | float(default=0)
        * float(states('input_number.prix_du_kwh_d_electricite'))))  | round(2) }}€\n"
  - continue_on_error: true
    service: notify.send_message
    target:
      entity_id: notify.consommations2
    data:
      message: '{{ now().strftime("%d/%m/%Y") }} ; Voiture ; {{ ((state_attr(''automation.charge_voiture_start_2'',''last_triggered''))
        | as_local).strftime("%Hh%M") }} - {{ now().strftime("%Hh%M") }} ;  {{ (((state_attr(''automation.charge_voiture_fin'',''last_triggered''))
        - (state_attr(''automation.charge_voiture_start_2'',''last_triggered''))).seconds
        / 3600 )| int }}h{{((((state_attr(''automation.charge_voiture_fin'',''last_triggered''))
        - (state_attr(''automation.charge_voiture_start_2'',''last_triggered''))).seconds
        % 3600 )/60 )| round }}m ; {{ states(''sensor.charge_voiture_power_cycle'')
        }}kWh ; {{ ((states(''sensor.charge_voiture_power_cycle'') | float(default=0)
        * float(states(''input_number.prix_du_kwh_d_electricite''))))  | round(2)
        }} EUR'
  mode: single