Temps fonctionnement en fonction de la consommation

Bonjour,

J’aimerais avoir le temps de fonctionnement de mon chauffe-eau lorsque celui est activé.

Je n’ai pas de sensor on/off mais uniquement la consommation. J’ai tenté :

- platform: history_stats
    name: "Temps fonctionnement chauffe-eau"
    entity_id: sensor.puissance_eau_chaude_2
    state: "5"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}" 
    

Mais sans succès, j’aimerais que le state corresponde dès qu’il y’a 5w de consommation, comment faire ?

Salut,

j’ai bien peur que ce ne soit pas possible de cette façon là.
history_stats traque la durée dans une état précis… ton chauffe-eau ne sera surement jamais à 5W précisément… et à ma connaissance ils n’y a pas de comparaison possible non plus, on ne peu pas comptabiliser le temps passé au dessus de 5W. En tous ca ce n’est pas mentionné dans la doc.

La seule solution que je verrais c’est faire une entité template de type binary_sensor donc la valeur est on si ton chauffe-eau consomme des W et off s’il ne consomme rien.
Et ensuite faire un history_stats ce cette entité avec l’état « on »

1 « J'aime »

Bonjour,

C’est possible mais il faut faire 2 étapes :

  • 1/ crée un template sensor basé sur la consommation
- sensor:
    - name: "portail_en_fonctionnement"
      state: >
        {% if states('sensor.circuit_12_power') | int >= 10 %}
          on 
        {% else %}
          off
        {% endif %}
  • 2/ l’utiliser sur history_stats
- platform: history_stats
  name: Portail Ouvert recement
  entity_id: sensor.portail_en_fonctionnement
  state: 'on'
  type: count 
  end: "{{ now() }}"
  duration:
    minutes: 5

Merci,

        {% if states('sensor.circuit_12_power') | int >= 10 %}

De mon coté j’ai le sensor en W, ton « 10 » est en quelle unité ?

C’est des watt, l’exemple donner me sert a détecter quand mon portail est en fonctionnement.

Utile pour affiner mon automatisations qui détecte la présence devant la porte d’entrée afin de savoir si j’arrive ou si je part…

Ça marche en tout cas merci.

J’ai par contre le temps affiché qui n’est pas top, j’ai 0.10 pour 10mn vue que c’est en heure.

Tu as une idée pour changer ça ?

Oui, j’ai bien des idées.

L’affichage et la conversion de temps est vite compliqué mais surtout fastidieuse …

Tu peut :
1/ regarder comment j’ai fait sur ce topic : Obtenir le temps d'utilisation d'un appareil électrique sur une période donnée - #45 par roumano
2/ Et/ou installer easy-time pour t’aider a afficher du temps : GitHub - Petro31/easy-time-jinja: Easy Time calculations for Home Assistant templates

Dans les 2 cas, il est fortement recommander de passer par Outils de développement / Modèle pour faciliter l’édition et tester tout ça.

Je te joint un exemple de temps via easy-time :

ha_bus_horaire

Le code pour faire ça :

{% from 'easy_time.jinja' import custom_time, custom_time_attr  %}
* Départ immédiat {% if states('sensor.bus_23_0') != "unavailable" %}{{ (strptime(states('sensor.bus_23_0'), '%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_0', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_0", "retard") }}mm retard{% else %} N/A{% endif %}

{% if state_attr("sensor.bus_23_0", "bus_restant_pour_aujourd_huit") != none %}
* {{ state_attr("sensor.bus_23_0", "bus_restant_pour_aujourd_huit") }} Bus restants, suivant :
{% if states('sensor.bus_23_1') != "unavailable" %}  * {{ (strptime(states('sensor.bus_23_1'),'%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_1', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_1", "retard") }}mm retard{% endif %}
{% if states('sensor.bus_23_2') != "unavailable" %}  * {{ (strptime(states('sensor.bus_23_2'),'%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_2', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_2", "retard") }}mm retard{% endif %}
{% if states('sensor.bus_23_3') != "unavailable" %}  * {{ (strptime(states('sensor.bus_23_3'),'%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_3', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_3", "retard") }}mm retard{% endif %}
{% if states('sensor.bus_23_4') != "unavailable" %}  * {{ (strptime(states('sensor.bus_23_4'),'%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_4', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_4", "retard") }}mm retard{% endif %}
{% if states('sensor.bus_23_5') != "unavailable" %}  * {{ (strptime(states('sensor.bus_23_5'),'%Y-%m-%dT%H:%M:%S%z')|as_local).strftime('%Hh%M') }} ({{ custom_time('sensor.bus_23_5', 'hour, minute',language='fr') }}), {{ state_attr("sensor.bus_23_5", "retard") }}mm retard{% endif %}
{% endif %}

J’ai installé easy-time-jinja mais c’est une usine à gaz à comprendre.

Tu ferais comment pour mon sensor ? {{ states(‹ sensor.temps_fonctionnement_chauffe_eau ›) }}

J’aimerais prendre ce sensor et changer l’affichage de 0.10 à 10mn (et si 3.0, affiché 3h)

Tu pourrais m’aider ?

Salut,
Je peut pas te dire ça comme ça car je connaît pas le format de ton sensor sensor.temps_fonctionnement_chauffe_eau :

C’est un vrai champ datetime au sens python ? en seconde depuis 01/01/1970 ? en seconde depuis 0h00 d’aujourd’hui ? une chaîne de caractère qui ressemble a une date sans en être totalement une ? … ?

Il faut que tu regarde/test des choses dans Outils de développement / Modèle

C’est la sortie du history_stats :

 - platform: history_stats
    name: "Temps fonctionnement chauffe-eau"
    entity_id: sensor.chauffe_eau_fonctionnement
    state: "on"
    type: time
    start: "{{ now().replace(hour=0).replace(minute=0).replace(second=0) }}"
    end: "{{ now() }}" 
    

ça me donne ça :

j’ai des doutes si c’est en heure (60mn) ou autre