Sauvegarder les sessions de charge Wallbox d’un véhicule électrique

Je regarde les données récupérées de l’intégration Wallbox

Ici un petit récap des données qui vont me permettre d’enregistrer les données de la dernière session de charge dans sensor.wallbox_charges.

J’ai déjà décrit toutes les entités de l’intégration Wallbox sur ce Retex :

Le déclencheur

Je vais donc utiliser sensor.wallbox_portal_status_description comme déclencheur de l’enregistrement de la dernière session de charge.

Je vais donc utiliser le changement d’état de “Charging” à autre chose pour déclencher l’enregistrement.

Les données

  • Wallbox Portal Added Energy (sensor.wallbox_portal_added_energy) va me donner le nombre de kWh ajoutés à la batterie de la voiture durant la dernière charge
  • Wallbox Portal Added Range (sensor.wallbox_portal_added_range) va me donner une estimation du  nombre de km ajoutés pouvant être réalisés grâce à la dernière charge.
  • Wallbox Portal Energy Price (sensor.wallbox_portal_energy_price) va me donner le prix du kWh, je l’utiliserai pour calculer le coût de la charge

J’ajoute l’intégration qui va stocker les données de charge

J’ai trouvé l’intégration hass-variables, absolument géniale. Merci à Ankama et à Snuffy2 pour ce travail et ce suivi.

Elle permet de créer un sensor qui ne soit relié à rien (pas un template). Ce sensor garde ses valeurs même à la relance de HA. Exactement ce dont j’avais besoin sans utiliser de mode de sauvegarde externe des données (json, autre base de données…).

Le nouveau sensor s’appelle : sensor.wallbox_charges

J’ajoute un sensor détectant le début de la charge

En effet, l’intégration ne me donne pas l’heure et la date de début de la dernière charge. Pour en calculer la durée, je trouve intéressant de disposer de cette information. Je vais donc la créer.

Je me base sur l’entité sensor.wallbox_portal_added_range et je vais aller chercher l’heure/date du début de charge (donc sa valeur minimale sur les 5 dernières heures)

Dans mon fichiers sensors.yaml, j’ajoute cette entité :

- platform: statistics
  name: "Wallbox Portal Added Range Min"
  entity_id: sensor.wallbox_portal_added_range
  state_characteristic: datetime_value_min
  max_age:
    hours: 5  

Cela va me créer l’entité : sensor.wallbox_portal_added_range_min

Je vais utiliser cette entité pour enregistrer le début de charge et pour calculer la durée de charge.

J’ajoute l’automatisation qui va enregistrer les données

Elle est assez complexe, j’imagine qu’elle est simplifiable, je vais l’expliquer étape par étape

Voici tout d’abord le code complet

alias: Enregistre une session de charge
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.wallbox_portal_status_description
    from: Charging
    to: null
    alias: Quand la charge se termine
condition: []
action:
  - alias: >-
      Initialiser la première conso, à ne lancer qu'une fois (en désactivant les
      autres actions)  puis désactiver
    service: variable.update_sensor
    data:
      replace_attributes: true
      value: INIT
      attributes:
        sessionscharge: null
    target:
      entity_id: sensor.wallbox_charges
    enabled: false
  - service: variable.update_sensor
    data:
      replace_attributes: true
      value: >-
        {{ as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int
        |     timestamp_custom('%d/%m/%Y %H:%M:%S', true)}}      
      attributes:
        sessionscharge: >
          {% set sessioncharge = {'consommation': 2.14, 'coût': 0.43, 'durée':
          '00:27', 'début': '19/09/2023 20:36', 'fin': '21:03', 'km': 17,
          'saved_at': 1695150359} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 23.29, 'coût': 4.66, 'durée': '04:19', 'début':
          '21/09/2023 21:06', 'fin': '01:25', 'km': 192, 'saved_at': 1695323159}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 7.68,
          'coût': 1.54, 'durée': '01:23', 'début': '22/09/2023 08:45', 'fin':
          '10:08', 'km': 63, 'saved_at': 1695409559} %}{{ sessioncharge }},{%
          set sessioncharge = {'consommation': 23.8, 'coût': 4.76, 'durée':
          '04:26', 'début': '23/09/2023 16:57', 'fin': '21:23', 'km': 196,
          'saved_at': 1695495959} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 23.64, 'coût': 4.73, 'durée': '04:05', 'début':
          '26/09/2023 20:59', 'fin': '01:04', 'km': 195, 'saved_at': 1695755159}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 24.04,
          'coût': 4.81, 'durée': '05:17', 'début': '28/09/2023 21:21', 'fin':
          '02:38', 'km': 198, 'saved_at': 1695927959} %}{{ sessioncharge }},{%
          set sessioncharge = {'consommation': 17.3, 'coût': 3.46, 'durée':
          '03:51', 'début': '30/09/2023 21:31', 'fin': '01:22', 'km': 143,
          'saved_at': 1696100759} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 22.18, 'coût': 4.44, 'durée': '04:25', 'début':
          '03/10/2023 20:43', 'fin': '01:08', 'km': 183, 'saved_at': 1696359959}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 23.86,
          'coût': 4.77, 'durée': '05:26', 'début': '05/10/2023 21:03', 'fin':
          '02:29', 'km': 197, 'saved_at': 1696532759} %}{{ sessioncharge }},{%
          set sessioncharge = {'consommation': 23.43, 'coût': 4.69, 'durée':
          '05:07', 'début': '07/10/2023 20:34', 'fin': '01:41', 'km': 193,
          'saved_at': 1696705559} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 23.32, 'coût': 4.66, 'durée': '04:40', 'début':
          '10/10/2023 20:57', 'fin': '04:40', 'km': 192, 'saved_at': 1696964759}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 25.19,
          'coût': 5.04, 'durée': '04:39', 'début': '12/10/2023 19:53', 'fin':
          '00:32', 'km': 208, 'saved_at': 1697137559} %}{{ sessioncharge }},{%
          set sessioncharge = {'consommation': 8.61, 'coût': 1.72, 'durée':
          '01:32', 'début': '13/10/2023 21:05', 'fin': '22:37', 'km': 71,
          'saved_at': 1697223959} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 27.76, 'coût': 5.55, 'durée': '04:46', 'début':
          '16/10/2023 02:11', 'fin': '06:57', 'km': 231, 'saved_at': 1697474976}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 24.18,
          'coût': 4.84, 'durée': '04:12', 'début': '18/10/2023 02:11', 'fin':
          '06:23', 'km': 201, 'saved_at': 1697657509} %}{{ sessioncharge }},{%
          set sessioncharge = {'consommation': 20.17, 'coût': 4.03, 'durée':
          '03:38', 'début': '19/10/2023 02:11', 'fin': '05:50', 'km': 168,
          'saved_at': 1697688628} %}{{ sessioncharge }},{% set sessioncharge =
          {'consommation': 23.08, 'coût': 4.62, 'durée': '04:13', 'début':
          '21/10/2023 02:12', 'fin': '06:25', 'km': 192, 'saved_at': 1697867735}
          %}{{ sessioncharge }},{% set sessioncharge = {'consommation': 12.19,
          'coût': 2.44, 'durée': '03:21', 'début': '22/10/2023 02:13', 'fin':
          '05:34', 'km': 101, 'saved_at': 1697946854} %}{{ sessioncharge }}
    target:
      entity_id: sensor.wallbox_charges
    enabled: false
    alias: >-
      Initialiser les premières conso, à ne lancer qu'une fois  (en désactivant
      les autres actions) puis désactiver
  - service: variable.update_sensor
    data:
      replace_attributes: true
      value: >-
        {{ as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int
        |     timestamp_custom('%d/%m/%Y %H:%M:%S', true)}}      
      attributes:
        sessionscharge: >-
          {% set diff_seconds = now().timestamp() -
          states.sensor.wallbox_portal_added_range_min.state | as_timestamp %}
          {% set hours = (diff_seconds / 3600) | int %} {% set minutes =
          ((diff_seconds % 3600) / 60) | int %} {% set sessioncharge =  { 
          'consommation': states('sensor.wallbox_portal_added_energy') | float |
          round(2),  'coût': (states('sensor.wallbox_portal_energy_price') |
          float * states('sensor.wallbox_portal_added_energy') | float |
          round(2)) | round(2), 'durée': '%02d:%02d' | format(hours, minutes) , 
          'début': as_timestamp(states('sensor.wallbox_portal_added_range_min'))
          | int |
            timestamp_custom('%d/%m/%Y %H:%M', true), 
          'fin':  now().strftime('%H:%M') ,  'km':
          states('sensor.wallbox_portal_added_range') | int,  'saved_at':
          now().timestamp() | int }  %}

          {% if state_attr('sensor.wallbox_charges', 'sessionscharge') is not
          none %}
            {{ state_attr('sensor.wallbox_charges', 'sessionscharge') }}, {{ sessioncharge }}
          {% else %}
            {{ sessioncharge }}, {{ sessioncharge }}
          {% endif %}
    target:
      entity_id: sensor.wallbox_charges
    enabled: true
    alias: Enregistre la session de charge qui vient de se terminer
mode: single

 

Explication partie par partie

  • Le déclencheur : c’est quand la charge est terminée
  • L’action 1 (désactivée par défaut) n’est a activer qu’une fois en pensant à désactiver les 2 autres actions, c’est pour initialiser à “null” une fois l’entité qui enregistre les données.
  • L’action 2 (désactivée par défaut) n’est à activer qu’une fois en pensant à désactiver les 2 autres actions, c’est pour initialiser quelques données antérieures. En effet, je ne voulais pas perdre les données de charge depuis l’achat de la voiture, donc je les ai stockées là. 
  • L’action 3 (à activer par défaut) est l’action qui calcule et enregistre les données de charge.

Explication du code du déclencheur 

Ce déclencheur est basé sur la plateforme “state” de Home Assistant. Il surveille l’état d’une entité spécifique, en l’occurrence, “sensor.wallbox_portal_status_description”. Plus précisément, il est configuré pour réagir lorsqu’un changement d’état de cette entité se produit. Les détails de la configuration sont les suivants :

– `entity_id`: Il spécifie l’entité dont l’état est surveillé. Dans ce cas, il s’agit de “sensor.wallbox_portal_status_description”. Plusieurs entités peuvent être surveillées en fournissant une liste d’entités sous la forme d’une liste. Cependant, dans cet exemple, une seule entité est surveillée.

– `from: Charging`: Cela signifie que le déclencheur réagit lorsque l’état précédent de “sensor.wallbox_portal_status_description” était “Charging”. Il s’agit d’une condition pour déclencher l’automatisation. Le déclencheur ne réagit que si l’état précédent était “Charging”.

– `to: null`: Cela signifie que le déclencheur réagit lorsque l’état actuel de “sensor.wallbox_portal_status_description” est passé de “Charging” à n’importe quel autre état, y compris “null”. Il s’agit de la nouvelle condition pour déclencher l’automatisation. Le déclencheur réagit lorsque l’état change de “Charging” à tout autre état.

– `alias: Quand la charge se termine`: C’est un alias pour le déclencheur, un nom qui vous permet de le reconnaître plus facilement. Dans ce cas, il indique simplement que l’automatisation sera déclenchée lorsque la charge se termine.

En résumé, cet automatisation est déclenchée chaque fois que l’état de “sensor.wallbox_portal_status_description” change de “Charging” à tout autre état, ce qui signifie qu’elle est conçue pour réagir lorsque la charge de la voiture électrique se termine.

Explication de l’action 1 

Cette action est destinée à initialiser la première consommation (charge) pour un capteur appelé “sensor.wallbox_charges” en utilisant le service “variable.update_sensor” de Home Assistant. Voici une explication détaillée de chaque composant de l’action :

– `alias`: C’est simplement un nom ou une description de l’action pour la rendre plus compréhensible. Dans ce cas, il indique que cette action est destinée à l’initialisation de la première consommation et qu’elle ne doit être exécutée qu’une fois. Il suggère également de désactiver d’autres actions après son exécution.

– `service: variable.update_sensor`: Cette ligne spécifie le service à utiliser pour effectuer l’action. Le service “variable.update_sensor” est utilisé pour mettre à jour ou initialiser les attributs d’une entité (dans ce cas, “sensor.wallbox_charges”).

– `data`: Cette section contient les données à envoyer avec le service. Dans ce cas :
– `replace_attributes: true`: Cela indique que les attributs de l’entité existante doivent être remplacés par les nouvelles données. Si “replace_attributes” est à “true”, les attributs existants de “sensor.wallbox_charges” seront remplacés par les nouvelles données.

– `value: INIT`: Cela indique la valeur à attribuer à l’attribut “sessionscharge” de “sensor.wallbox_charges”. Dans ce cas, la valeur “INIT” est attribuée.

– `attributes: sessionscharge: null`: Cette ligne indique que l’attribut “sessionscharge” de “sensor.wallbox_charges” doit être initialisé à “null”.

– `target`: Il spécifie l’entité cible, c’est-à-dire l’entité dont les attributs sont mis à jour. Dans ce cas, l’entité cible est “sensor.wallbox_charges”.

– `enabled: true`: Cela indique que cette action est activée et peut être exécutée.

En résumé, cette action sert à initialiser l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges” avec la valeur “null” en utilisant le service “variable.update_sensor”. Elle est destinée à être exécutée une seule fois pour effectuer cette initialisation, après quoi, il est recommandé de désactiver cette action. Cela pourrait être utile pour démarrer avec des valeurs initiales spécifiques dans vos automatisations ou entités.

Explication de l’action 2

Cette action vise à initialiser l’attribut “sessionscharge” d’une entité appelée “sensor.wallbox_charges” avec une série de données de sessions de charge préexistantes. Voici une explication détaillée de chaque élément de l’action :

– `service: variable.update_sensor`: Il s’agit du service utilisé pour mettre à jour ou initialiser les attributs d’une entité dans Home Assistant.

– `data`: Cette section contient les données à envoyer avec le service. Dans ce cas :
– `replace_attributes: true` : Cela indique que les attributs existants de l’entité “sensor.wallbox_charges” seront remplacés par les nouvelles données.

– `value`: Cette partie est utilisée pour définir la valeur de l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges”. La valeur est générée dynamiquement à l’aide de modèles Jinja2. Il utilise l’horodatage de la première session de charge (c’est-à-dire “sensor.wallbox_portal_added_range_min”) pour obtenir une date et une heure, puis le formate dans le style “jour/mois/année heure:minute:seconde”. Cela signifie que la valeur “sessionscharge” sera initialisée avec la date et l’heure de la première session de charge.

– `attributes`: C’est là que les données de chaque session de charge sont définies. Chaque session de charge est définie dans un format spécifique en utilisant des modèles Jinja2. Ces sessions de charge sont séparées par des virgules.

– `target`: Il spécifie l’entité cible, c’est-à-dire l’entité dont les attributs sont mis à jour. Dans ce cas, l’entité cible est “sensor.wallbox_charges”.

– `enabled: true`: Cela indique que cette action est activée et peut être exécutée.

Le but de cette action est d’initialiser l’attribut “sessionscharge” de “sensor.wallbox_charges” avec des données simulées de sessions de charge. Cela peut être utile pour tester ou démarrer avec des données de charge fictives. Une fois l’initialisation effectuée, il est recommandé de désactiver cette action, comme indiqué dans l’alias, car elle n’a pas besoin d’être répétée.

Explication de l’action 3 – Principale action

Cette action vise à mettre à jour l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges” avec les données de la session de charge qui vient de se terminer. Voici une explication détaillée de chaque élément de l’action :

– `service: variable.update_sensor`: Il s’agit du service utilisé pour mettre à jour ou initialiser les attributs d’une entité dans Home Assistant.

– `data`: Cette section contient les données à envoyer avec le service. Dans ce cas :
– `replace_attributes: true`: Cela indique que les attributs existants de l’entité “sensor.wallbox_charges” seront remplacés par les nouvelles données.

– `value`: Cette partie est utilisée pour définir la valeur de l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges”. La valeur est générée dynamiquement à l’aide de modèles Jinja2. Elle comprend :
– La conversion de l’horodatage de “sensor.wallbox_portal_added_range_min” en un format de date et d’heure spécifique à l’aide de la fonction `timestamp_custom`.

– `attributes`: C’est là que les données de la session de charge sont définies. Ces données sont calculées à partir de diverses entités, notamment “sensor.wallbox_portal_added_energy”, “sensor.wallbox_portal_energy_price”, “sensor.wallbox_portal_added_range_min”, “sensor.wallbox_portal_added_range”, et l’horodatage actuel (obtenu via `now()`). Les données incluent la consommation, le coût, la durée, le début, la fin, les kilomètres et l’horodatage de la session de charge.

– La durée est calculée en soustrayant l’horodatage de début de la session de charge de l’horodatage actuel (exprimé en secondes). Ensuite, ces secondes sont converties en heures et minutes.

– Dans la section `{% if … %}`, le code vérifie si l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges” est déjà défini. Si c’est le cas, les données existantes sont conservées. Sinon, les nouvelles données de session de charge sont ajoutées.

– `target`: Il spécifie l’entité cible, c’est-à-dire l’entité dont les attributs sont mis à jour. Dans ce cas, l’entité cible est “sensor.wallbox_charges”.

– `enabled: true`: Cela indique que cette action est activée et peut être exécutée.

L’objectif de cette action est d’enregistrer les données de chaque session de charge qui vient de se terminer dans l’attribut “sessionscharge” de l’entité “sensor.wallbox_charges”. Cela permet de garder une trace de chaque session de charge effectuée.

 

Résultat

Ainsi à chaque fin de charge, un nouvel enregistrement est ajouté à l’entité sensor.wallbox_charges.

Voici son contenu :

 

Ajout d’une carte qui affiche toutes les sessions de charge

<div>Sessions de charge</div> 
Dernière mise à jour : {{ state_attr('sensor.sessions_de_charge','updated_at')}} <br><br>
{% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %}
<table width='100%'>
<tbody>
{% for i in range(0, items | count, 1) %}
<tr>
<td>{{ items[i].début }} à {{ items[i].fin }} ({{ items[i].durée }})</td>
<td>{{ items[i].consommation }} kWh</td>
<td>+{{ items[i].km }} km</td>
<td>{{ items[i].coût }} €</td>
</tr>

{% endfor %}
</tbody>
</table>

Ajout d’une carte qui affiche un récapitulatif par année, mois, semaine

type: markdown
content: >-
  <div><h1>Sessions de charge</div>  {%- set default_language = 'fr' %} Dernière
  mise à jour : {{ state_attr('sensor.wallbox_charges','updated_at')}} <br><br>


  {% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %}

  {% set septjours = now() - timedelta(days=7) %}

  {% set power_semaine = namespace(value=0) %}

  {% set cout_semaine = namespace(value=0) %}

  {% set unmois = now() - timedelta(days=30) %}

  {% set power_mois = namespace(value=0) %}

  {% set cout_mois = namespace(value=0) %}

  {% set uneannee = now() - timedelta(days=365) %}

  {% set power_annee = namespace(value=0) %}

  {% set cout_annee = namespace(value=0) %}


  {% for i in range(0, items | count, 1) %}
    {% if items[i].saved_at | int >= as_timestamp(uneannee) %}
    {% set power_annee.value = power_annee.value + items[i].consommation %}
    {% set cout_annee.value = cout_annee.value + items[i].coût %}
      {% if items[i].saved_at | int >= as_timestamp(unmois) %}  
        {% set power_mois.value = power_mois.value + items[i].consommation %}
        {% set cout_mois.value = cout_mois.value + items[i].coût %}
        {% if items[i].saved_at | int >= as_timestamp(septjours) %}
          {% set power_semaine.value = power_semaine.value + items[i].consommation %}
          {% set cout_semaine.value = cout_semaine.value + items[i].coût %}        
        {% endif %}
      {% endif %}
    {% endif %}
  {% endfor %}

  </ha-alert> <ha-alert alert-type="info" title="Dernier mois : {{
  power_mois.value | int }} kWh - {{ cout_mois.value | float | round(2) }}
  &euro;"></ha-alert> <ha-alert alert-type="info" title="Dernière année : {{
  power_annee.value | int }} kWh - {{ cout_annee.value | float | round(2) }}
  &euro;"></ha-alert>


  <br> 


  {% set items = state_attr('sensor.wallbox_charges', 'sessionscharge') %}

  {% set septjours = now() - timedelta(days=7) %}

  <table width='100%'> <tbody>  {% for i in range(0, items | count, 1) %}  {% if
  items[i].saved_at | int >= as_timestamp(septjours) %} {% set datetime_obj =
  strptime(items[i].début, '%d/%m/%Y %H:%M') %}

  <tr> <td><h5>{{items[i].début }} à {{ items[i].fin }} ({{ items[i].durée
  }})</td> <td>{{
    items[i].consommation }} kWh</td> <td>+{{ items[i].km }} km</td> <td>{{
    items[i].coût }} €</td> </tr> {% endif %} {% endfor %} </tbody> </table>
    <ha-alert alert-type="success" title="Dernière semaine : {{
      power_semaine.value | int}} kWh - {{ cout_semaine.value | float | round(2)
      }}&euro;">    
style:
  .: |
    ha-card {
      margin: 0px 0px 0px 0px;
      box-shadow: none;
     }
  ha-markdown:
    $: |
      h5 {
        font-size: 15px !important;
        font-weight: normal !important;
        padding: 0px 0px 0px 8px !important;
        border-left: 3px solid #429f46;
        }

 

Bonus : Enregistrer les données dans un fichier CSV

Pour une utilisation future (et pour ne pas perdre les données en cas de pépin), j’ai décidé d’enregistrer chaque session de charge sans un fichier CSV. A chaque session, une ligne est ajoutée.

Voici comment j’ai réalisé cela.

J’ajoute un sensor “file” qui correspond au fichier CSV

J’utilise un fichier notify.yaml qui se trouve dans le dossier de configuration.yaml qui est déclaré dans ce fichier grâce à la commande notify: !include notify.yaml

Je déclare ce nouveau sensor avec ce code :

- name: sessions_de_charge_CSV
  platform: file
  filename: /config/www/csv/sessions_de_charge.csv
  timestamp: false

Ainsi, quand je voudrais écrire dans le fichier, il me suffira d’exécuter le service notify.sessions_de_charge_CSV

J’ajoute une action

J’ajoute une action dans l’automatisation présentée précédemment qui va écrire une ligne à chaque enregistrement d’une session de charge

service: notify.sessions_de_charge_CSV
data:
  data: {}
  message: >-
    {% set diff_seconds = now().timestamp() -
    states.sensor.wallbox_portal_added_range_min.state | as_timestamp %} {% set
    hours = (diff_seconds / 3600) | int %} {% set minutes = ((diff_seconds %
    3600) / 60) | int %} {% set sessioncharge_string = "" +
    states('sensor.wallbox_portal_added_energy') | round(2) | replace('.', ',')|
    string + "; " + (states('sensor.wallbox_portal_energy_price') | float *
    states('sensor.wallbox_portal_added_energy') | float | round(2)) | round(2)
    | replace('.', ',')| string + "; " + '%02d:%02d' | format(hours, minutes) |
    string + "; " +
    as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int |
    timestamp_custom('%d/%m/%Y', true) | string + "; " +
    as_timestamp(states('sensor.wallbox_portal_added_range_min')) | int |
    timestamp_custom('%H:%M', true) | string + "; " + now().strftime('%H:%M') |
    string + "; " + states('sensor.wallbox_portal_added_range') | int | string +
    "; " + now().timestamp() | int| string %} {{ sessioncharge_string }}
enabled: true
alias: Ajouter une ligne dans le fichier sessions_de_charge.CSV