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
1 « J'aime »

Salut, merci pour le partage !
Je cherche à faire la même chose (mesurer et stocker le temps d’allumage d’un appareil), mais non pas basé sur le status on ou off de la prise, mais plutôt sur la consommation en Watts de la prise (il s’agit de mesure le temps de fonctionnement de ma pompe de relevage).

Est-ce que si je fais un « state: sensor.maPrise.power > 10 » ça peut fonctionner ?
(je n’ai pas d’erreur YAML en faisant ça, mais pour le moment je n’ai pas de données qui remontent alors que la pompe s’est déclenchée. La conso en W remonte bien dans mon sensor quand elle se déclenche)

Merci pour votre aide !

C’est exactement ce que je fait.
++

1 « J'aime »

Ahh j’ai lu trop vite ce post :slight_smile:
Effectivement ça marche bien avec ton astuce, merci !

J’ai juste modifié l’envoi du message pour que ça prenne en charge les retours à la ligne (sinon je voyais le \n dans le texte) :

message: |
source: Forcer des retours à la ligne dans le texte généré par les template jinja
@+

Merci @syl2042 pour ce partage.

Par contre, petite question j’ai un 2 sensor du même nom qui ce sont créer
image