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

Salut @spamoi ,

Effectivement mon information ne correspondais pas avec l’automatisation, la remise a zero était fait par le start. (c’est ce qu’il faut sinon tu vas avoir la conso en veille de ton LV dans ton reporting)

J’ai améliorer le fonctionne pour qu’il soit plus robuste, et j’ai rajouter une automatisation intermédiaire pour avoir le temps de fin de façon plus précise (avec le mode éco de mon lave-vaisselle, il peut se passer presque une 1heure où il consomme rien mais n’a pas encore fini)

je vous les partagent :

Start
- id: '1673367359265'
  alias: 'Lave-Vaisselle : Start'
  description: Lave vaisselle Start
  trigger:
  - type: power
    platform: device
    device_id: efc284c42c5676265a2e8ad8c7144625
    entity_id: sensor.circuit_13_power
    domain: sensor
    above: 10
    for:
      hours: 0
      minutes: 1
      seconds: 0
  condition:
  - condition: state
    entity_id: input_boolean.lave_vaisselle_cycle
    state: 'off'
  action:
  - service: utility_meter.calibrate
    data:
      value: '0'
    target:
      entity_id: sensor.lave_vaisselle_power_cycle
  - service: input_boolean.turn_on
    data: {}
    target:
      entity_id: input_boolean.lave_vaisselle_cycle
  mode: single
Fin ?

( attention, ici le mode est important )

- id: '1674478650323'
  alias: 'Lave-Vaisselle : Fin'
  description: Lave vaisselle Fin
  trigger:
  - type: power
    platform: device
    device_id: efc284c42c5676265a2e8ad8c7144625
    entity_id: sensor.circuit_13_power
    domain: sensor
    below: 10
    for:
      hours: 0
      minutes: 1
      seconds: 0
  condition:
  - condition: state
    entity_id: input_boolean.lave_vaisselle_cycle
    state: 'on'
  action:
  mode: restart
Fin : notification

il y a 2 notification, l’un pour le téléphone, l’autre pour crée un « csv » de tous les cycles de l’appareil

- id: '1673367677075'
  alias: 'Lave-Vaisselle : Fin , Notification'
  description: a la fin du cycle notification de la durée et de la consommation du
    cycle de lave-vaiselle
  trigger:
  - type: power
    platform: device
    device_id: efc284c42c5676265a2e8ad8c7144625
    entity_id: sensor.circuit_13_power
    domain: sensor
    below: 10
    for:
      hours: 1
      minutes: 0
      seconds: 0
  condition:
  - condition: state
    entity_id: input_boolean.lave_vaisselle_cycle
    state: 'on'
  action:
  - service: input_boolean.turn_off
    data: {}
    target:
      entity_id: input_boolean.lave_vaisselle_cycle
  - 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") }} à {{ ((state_attr(''automation.lave_vaisselle_fin'',''last_triggered''))
        | as_local).strftime("%Hh%M") }}. Soit une durée de {{ (( (state_attr(''automation.lave_vaisselle_fin'',''last_triggered''))
        - (state_attr(''automation.lave_vaisselle_start'',''last_triggered''))).seconds  /
        3600 )| int }}h{{ ((((state_attr(''automation.lave_vaisselle_fin'',''last_triggered''))
        - (state_attr(''automation.lave_vaisselle_start'',''last_triggered''))).seconds
        % 3600 )/60 )| round }}m\n Le cycle à consommé {{ states(''sensor.lave_vaisselle_power_cycle'') | round
        }}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") }} ; {{ (state_attr(''automation.lave_vaisselle_fin'',''last_triggered'')|
        as_local).strftime("%Hh%M") }} ; {{ (((state_attr(''automation.lave_vaisselle_fin'',''last_triggered''))
        - (state_attr(''automation.lave_vaisselle_start'', ''last_triggered''))).seconds
        / 3600 )| int }}h{{ ((((state_attr(''automation.lave_vaisselle_fin'',''last_triggered''))
        - (state_attr(''automation.lave_vaisselle_start'',''last_triggered''))).seconds
        % 3600 )/60 )| round }}m ; {{ states(''sensor.lave_vaisselle_power_cycle'') | round
        }}Wh ; {{ (states(''sensor.lave_vaisselle_power_cycle'') | float(default=0)
        * (states(''sensor.edf_tempo_current_cost'')| float(default=0)) /1000) | round(2)
        }}€ ;

        '

ps : il est possible de fusionner les deux fin si celui-ci se termine rapidement et/ou si on se moque d’avoir le temps de fin et de la durée du cycle de manière « précise ». ( +1heures dans mon cas )

ps2: petit coup de gueule a l’interface graphique des automatisations dans home assistant

j’en écrivant ça en yaml qui fonctionne : (le message a un poil évolué mais l’idée est là )

      message: >
        Le cycle s'est déroulé de {{ ((state_attr('automation.lave_vaisselle_start','last_triggered')) | as_local).strftime("%Hh%M") }} à {{ ((state_attr('automation.lave_vaisselle_fin','last_triggered')) | as_local).strftime("%Hh%M") }}. Soit une durée de {{ (( (state_attr('automation.lave_vaisselle_fin','last_triggered')) - (state_attr('automation.lave_vaisselle_start','last_triggered'))).seconds  / 3600 )| int }}h{{ ((((state_attr('automation.lave_vaisselle_fin','last_triggered')) - (state_attr('automation.lave_vaisselle_start','last_triggered'))).seconds % 3600 )/60 )| round }}m 

mais quand je vais dans le GUI des automatisation, même sans faire de changement, celui-ci parse le fichier des automatisations et le modifie en quelques-chose comme ça ( qui fonctionne aussi mais qui est illisible avec 2 simples quotes de partout et ce qui est une plaît pour reprendre en fichier texte ! )

      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) }}€

        '
2 « J'aime »