Obtenir le temps d'utilisation d'un appareil électrique sur une période donnée

J’ai un peut lutter mais j’ai fini par avoir un résutat qui me satisfait ( le diable se cache dans les détails) :

  • la date de début (via last_triggered d’une automation) est en UTC
  • le formatage du deltatime n’a pas était trivial
  • J’ai rajouter un calcul du cout du cycle (qui est approximatif si le cycle est a chevale entre 2 tarification differentes.
  • J’ai aussi crée une nouvelle notification mais dans un fichier qui a la forme d’un csv (où il faut enlever 2 lignes pour faire un « vrai » csv), dans l’idée de pouvoir suivre dans le temps, le nombre et le temps des cycles
Date ; Debut ; Fin ; Duree ; Wh ; € ;
Home Assistant notifications (Log started: 2023-01-11T16:44:36.125753+00:00)
--------------------------------------------------------------------------------
12/01/2023 ; 02h16 ; 17h58 ; 15h42m ; 541Wh ; 0.07€ ;
12/01/2023 ; 02h16 ; 18h00 ; 15h44m ; 541Wh ; 0.07€ ;

Au besoin, voici les actions de l’automatisation de fin pour faire ça :

  - service: notify.mobile_app_rmx3085
    data:
      title: Lave-Vaisselle Fini
      message: >
        Le cycle s'est déroulé de {{ ((state_attr('automation.lave_vaisselle_start', 'last_triggered')) | as_local).strftime("%Hh%M") }} à {{ now().strftime("%Hh%M") }}
        Soit une durée de {{ ((now() - (state_attr('automation.lave_vaisselle_start', 'last_triggered'))).seconds  / 3600 )| int }}h{{ (((now() - (state_attr('automation.lave_vaisselle_start', 'last_triggered'))).seconds % 3600 )/60 )| round }}m\n
        Le cycle à consommé {{ states('sensor.lave_vaisselle_power_cycle') }}Wh\n
        Pour un coût de {{ (states('sensor.lave_vaisselle_power_cycle') | float(default=0) * (states('sensor.edf_tempo_current_cost')| float(default=0)) /1000) | round(2) }}€
  - service: notify.lave_vaisselle
    data:
      message: >
        {{ now().strftime("%d/%m/%Y") }} ; {{ ((state_attr('automation.lave_vaisselle_start', 'last_triggered')) | as_local).strftime("%Hh%M") }} ; {{ now().strftime("%Hh%M") }} ; {{ ((now() - (state_attr('automation.lave_vaisselle_start', 'last_triggered'))).seconds / 3600 )| int }}h{{ (((now() - (state_attr('automation.lave_vaisselle_start', 'last_triggered'))).seconds % 3600 )/60 )| round }}m ; {{ states('sensor.lave_vaisselle_power_cycle') }}Wh ; {{ (states('sensor.lave_vaisselle_power_cycle') | float(default=0) * (states('sensor.edf_tempo_current_cost')| float(default=0)) /1000) | round(2) }}€ ;

et d’une configuration « minimaliste » d’un notify :

notify:
- name: lave_vaisselle
  platform: file
  filename: /data/git/cycle/lave_vaisselle.csv
2 « J'aime »