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

Merci pour ton retour

Le template c’est pour basculer tout en minute pour faire un affichage graphique propre.

Oui je reprend mon besoin c’est mieux :slight_smile:

Je cherche à avoir le temps de fonctionnement entre un ON et un OFF d’un appareil, d’une machine, d’une prise.
Je cherche à avoir aussi le temps cumulé sur la journée, hier et sur la semaine pour le mettre dans un graph.

et pour ce faire je simule via un input_boolean.test le fonctionnement du dit appareil : ON/OFF.

Je sais pas si c’est plus clair

Peu être regarder sur c’est intégration GitHub - danieldotnl/ha-measureit: Measure anything in Home Assistant based on time and conditions. ( Merci @Krull56 )

1 « J'aime »

Bonjour,

J’utilise les sensor et template et cela me donne donc des valeurs du style : 0,89h comment rendre plus lisible du style : 49mn ? Car c’est une valeur sur 100 et non sur 60 mn

Bonjour,
@jerome6994 avais donner un exemple. Obtenir le temps d'utilisation d'un appareil électrique sur une période donnée - #100 par jerome6994

      {% set heures_str = states.sensor.temps_allumage_television.state %}
      {% set heures = heures_str | float(0) %}
      {%- set minutes = (heures * 60)  -%}            
      {{ minutes | int(0)}} min

Cela me donne sous forme de minutes comme toi mais c’est pas le but, sur 1 mois cela va donner 10000mn et le but c’est plutot d’avoir en heure, par exemple 5h20mn

{{ (timedelta(hours=states('sensor.temps_allumage_television') | float(0)) | string)[:-3] }}

{% set hours = states('sensor.temps_allumage_television') | float(0) %} 
{% set minutes = ((hours % 1) * 60) | int(0) %}
 {{ '%02ih %02im'%(hours // 1, minutes) }}
1 « J'aime »

Ok top sous cette forme :

Maintenant est-ce que je dois refaire un template sur chacun de mes template pour avoir directement cette valeur sur mes dashboard ? Ou possibilité de modifier le template existant, à savoir celui ci :

- name: "temps_allumage_pc_today"
        device_class: duration
        state: "{% set hours = states('sensor.temps_allumage_pc_today') | float %} 
          {% set minutes = ((hours % 1) * 60) | int %}
          {{ '%02ih %02im'%(hours // 1, minutes) }}"
        unique_id: "temps_allumage_pc_today"
        icon: mdi:desktop-tower-monitor

soit tu fais un template, soit tu utilise une carte qui supporte les templates pour le dashboard.
ta mushroom card template, template-entity-row …

Alors je viens de voir quelque chose :

Mon template:

- name: "temps_allumage_pc_today"
        device_class: duration
        state: "{% set hours = states('sensor.temps_allumage_pc_today') | float %} 
          {% set minutes = ((hours % 1) * 60) | int %}
          {{ '%02ih %02im'%(hours // 1, minutes) }}"
        unique_id: "temps_allumage_pc_today"
        icon: mdi:desktop-tower-monitor

Cela me donne 3.34292540947596 dans état de mon entité et dans modèle j’ai bien 03h 20m.

Sur un dashboard entité j’ai 3,34h qui s’affiche. Quel est donc la meilleur solution pour que je retrouve sous la forme 03h20m par défaut partout ?

Cela m’embête de pas avoir la même forme partout, dashboard, automatisation etc…

Essaye plutôt comme ca:

      - name: "temps_allumage_pc_today"
        device_class: duration
        state: >  
          {% set hours = states('sensor.temps_allumage_pc_today') | float %} 
          {% set minutes = ((hours % 1) * 60) | int %}
          {{ '%02ih %02im'%(hours // 1, minutes) }}
        unique_id: "temps_allumage_pc_today"
        icon: mdi:desktop-tower-monitor

device_class: duration , pas sur.

Alors j’ai encore du mal à comprendre la différence entre sensor et template dans ce cas précis. C’est le quel qui va comptabilisé le temps, dans la partie sensor et la partie template va l’afficher c’est ça ? Si je modifie dans la partie template cela ne va pas me fausser le « comptage » de temps ? Juste changer la forme d’affichage du résultat ?

C’est un sensor:

- platform: history_stats

le template sensor, c’est autre chose. il doit ce mettre dans un fichier template.yaml ( dans /config ).
Tu doit ajouter la ligne template: !include template.yaml dans ton configuration.yaml.

dans le template.yaml:

  - sensor:
      - name: "temps_allumage_pc_today"
        device_class: duration
        state: >  
          {% set hours = states('sensor.temps_allumage_pc_today') | float %} 
          {% set minutes = ((hours % 1) * 60) | int %}
          {{ '%02ih %02im'%(hours // 1, minutes) }}
        unique_id: "temps_allumage_pc_today"
        icon: mdi:desktop-tower-monitor

un peu de lecture avec la doc:

Je m’exprime mal mais quand je dis sensor c’est que c’est dans sensor.yaml et template dans template.yaml, j’en ai des dizaines dans chacun mais dans ce cas précis du comptage de temps cela me retourne le cerveau. Tu pourrais m’expliquer à ta manière ce que fait ce qui est dans sensor.yaml et dans template.yaml dans ce cas précis de suivi du temps des appareils ?

Je viens de faire ta modification mais cela ne me change rien, j’ai toujours 3,7h

fait un template par le UI ( appareils et service / entrée )

enlève device_class: duration

Top ça fonctionne comme ça mais un capteur me pose soucis.

J’ai créé un sensor :

- name: "x1c_en_fonctionnement"
        unique_id: "x1c_en_fonctionnement"
        state: >
          {% if states('sensor.x1c_power') | int(0) >= 12 %}
            on
          {% else %}
            off
          {% endif %}

Donc ce sensor affiche bien on ou off (sensor.x1c_en_fonctionnement, j’ai donc créé dans template :

- name: "temps_allumage_x1c_today"
        state: >
          {% set hours = states('sensor.temps_allumage_x1c_today') | float %} 
          {% set minutes = ((hours % 1) * 60) | int %}
          {{ '%02ih %02im'%(hours // 1, minutes) }}
        unique_id: "temps_allumage_x1c_today"

et dans sensor :

- platform: history_stats
    name: temps_allumage_x1c_today
    entity_id: sensor.x1c_en_fonctionnement
    state: 'on'
    type: time
    start: "{{ now().replace(hour=0, minute=0, second=0, microsecond=0) }}"
    end: "{{ now() }}"
    unique_id: temps_allumage_x1c_today

Cela ma donne un capteur en unavailable :

Tout fonctionne sauf celui-ci, il doit y avoir un truc tout con

Tu utilise le même unique_id et le même name, faut des name et unique_id différent.
Dans name avec espaces et ne mets pas de _. Majuscule, accent OK
Dans unique_id pas d’espaces, mettre des _ a la place d’espace. Pas de Majuscule, accent.