Isoler la consommation d'un appareil intermédiaire ou cumuler celle de plusieurs appareils

Bonjour à tous !

J’ai été confronté à un petit casse tête et j’ai trouvé la solution que je vous partage :slight_smile:

L’ensemble de mes appareil sont branchés via une prise qui permet de suivre la consommation et je souhaitais faire 2 choses pour le suivi dans le dashboard energie (suivi par appareil) :

  • Additionner la consommation des plusieurs enceintes + barre de son pour les suivre comme un seul appareil « système son »
  • Connaitre la consommation nette de mon onduleur sur lequel sont branchés ma box internet et mon NAS (le suivi de la prise de l’onduleur incluait la conso de la box et du NAS et je souhaitait isoler celle de l’onduleur)

Au départ, je suis passé par de simples additions/soustractions via un template sensor mais cela a posé des souci dans le dashboard énergie. Au redémarrage de home assistant par exemple, la consommation passait à 0 avant de refaire le calcul ce qui était interprété comme une consommation en tant que tel : 0 => 28kWh = 28 kWh consommés alors que non.

Pour contrer cela je suis passé par la configuration yaml et j’ai crée un trigger sensor (exemple pour l’onduleur) :

  - trigger:
      - platform: state
        entity_id:
          - sensor.prise_onduleur_energy 
          - sensor.prise_box_internet_energy
          - sensor.prise_nas_energy
    sensor:
      - name: "Consommation Onduleur"
        unique_id: consommation_onduleur
        unit_of_measurement: "kWh"
        device_class: energy
        state_class: total_increasing
        state: >
          {% set onduleur = states('sensor.prise_onduleur_energy') %}
          {% set box = states('sensor.prise_box_internet_energy') %}
          {% set nas = states('sensor.prise_nas_energy') %}
          {% set last = this.state | float(0) %}

          {% if onduleur not in ['unknown','unavailable']
                and box not in ['unknown','unavailable']
                and nas not in ['unknown','unavailable'] %}
            {% set raw = onduleur|float(0) - box|float(0) - nas|float(0) %}
              {{ [raw, last] | max }}
          {% else %}
            {{ last }}
          {% endif %}

Le capteur enregistre la valeur actuelle du capteur et la compare à la nouvelle valeur calculée lors du changement d’état d’une prise. La capteur garde la valeur la plus élevée. Ainsi le capteur ne repasse jamais à 0, même en cas de redémarrage. Cela est possible grâce au trigger sensor : il archive la valeur qui précède le calcul contrairement à un template sensor.

Pour la système son c’est la même chose mais j’ai additionné au lieu de soustraire.

Cela a complétement réglé le souci et le dashboard n’enregistre plus de consommations liées au recalcul du capteur après redémarrage.

Vous pouvez réutiliser ce code en remplaçant les entités « energy » par celles que vous souhaitez et modifier le calcul au besoin.

J’epere que ce sera utile à certains d’entre vous !

Enjoy !
KptN

2 « J'aime »