Comportement étrange de la carte History Explorer Card

Bonjour à tous,
Je viens vers vous pour comprendre comment éviter un comportement étrange de la carte history-explorer-card.
Je vous expose le soucis:

  • j’ai mis en place le suivi de ma conso électrique, en créant un sensor « autre électricité » qui fait la différence entre la remontée du Linky et les consommations de prises connectées sur crtain appareils.
  • sur le dashboar énergie, celà fonctionne correctement (voir ci-dessous)
  • par contre, en faisant le même graph avec History Explorer Card, j’obtiens le graph suivant, avec les mêmes entités:

    Comme vous le voyez, bien que ce soit la même entité, il ne semble pas prendre en compte que le sensor « aure électricité » est calculé. Il semble prendre la consommation totale.

Une explication?

Bonjour,

Bien que je ne sois pas novice sur Home Assistant, je suis nouveau sur ce forum, principalement en raison d’une problématique liée au suivi de la consommation énergétique.

Plus précisément, je cherche à reproduire l’affichage détaillé de la consommation des appareils individuels, une fonctionnalité qui, à première vue, ne semble pas intégrable à un tableau de bord personnalisé.

Avez-vous pu progresser de votre côté concernant les erreurs de présentation des données ?

Par exemple, dans l’exemple ci-dessous, à 07h30, les valeurs affichées sont :

  • Cumulus : 0.57 kWh
  • Chauffage : 0.04 kWh
  • Prises : 0.01 kWh
  • Total : 0.74 kWh

Cependant, la catégorie « Autres électricité » aurait dû être de 0.12 kWh conformément à mes valeurs, ce qui est bien reflété dans le panneau Energy. Les données issues de mes capteurs ont été vérifiées et remontent bien les valeurs correctes.

Je suis dans une impasse et envisage de changer de card, bien que celle-ci me convienne parfaitement. Cependant, je n’ai pas trouvé d’alternative offrant un sélecteur de date et de période aussi efficace (mes essais sous Apex n’ont pas abouti à une solution permettant une sélection simple par date ou par période).

Ci-dessous mon sensor autre électricité :

Lors de mes derniers tests, j’ai remplacé la virgule par un point, pensant que cela pourrait être une solution pertinente, mais cette approche n’a pas abouti.

- platform: template
    sensors:
      autre_elec:
        friendly_name: "Autre élec"
        unit_of_measurement: "kWh"
        device_class: "energy"
        value_template: >-
            {{ (states('sensor.linkymetter') | replace(',', '.') | float(0) 
            - states('sensor.chauffagemetter') | replace(',', '.') | float(0) 
            - states('sensor.cumulusmetter') | replace(',', '.') | float(0) 
            - states('sensor.prisesmetter') | replace(',', '.') | float(0)) | round(2) }}

J’ai en effet résolu mon problème. Il s’agissait d’un setting dans la carte history explorer card si je me souviens bien.
Je te mets ici le code de cette carte chez moi:

type: custom:history-explorer-card
barGraphHeight: 400
defaultTimeRange: 1d
defaultTimeOffset: 1h
showCurrentValues: false
header: hide
uiLayout:
  toolbar: top
  selector: hide
graphs:
  - type: bar
    title: Conso électrique
    options:
      interval: 10m
      stacked: true
    entities:
      - entity: sensor.autre_electricite
        netBars: true
        color: grey
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_2
        name: Garage
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_3
        name: Micro-onde
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_4
        name: Bureau salon
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_5
        name: Sèche-linge
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_6
        name: Lave-linge
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_7
        name: Lave vaisselle
      - entity: sensor.tz3000_2putqrmw_ts011f_summation_delivered_8
        name: Bureau Parents
      - entity: sensor.prise_refrigerateur_summation_delivered_9
        name: Réfrigérateur
      - entity: sensor.prise_congel_et_cave_a_vin_summation_delivered_9
        name: Congel & cave à vin
      - entity: sensor.prise_baie_informatique_summation_delivered
        name: Baie Info
      - entity: sensor.nous_b2z_clim_summation_delivered
        name: Clim
      - entity: sensor.prise_nous_radiateur_agathe_summation_delivered_9
        name: Radiateur Agathe

Voici aussi le code du template pour 'Autre électricité". Les « availability » sont importants pour éviter les erreurs de calcul lorsque les sensors ne remontent pas les infos au même moment.

    - name: "Autre électricité"  #Calcul consommation électricité autre que prises connectées
      unique_id: autre_electricite
      unit_of_measurement: "kWh"
      device_class: "energy"
      state_class: "total_increasing"
      state: >-
        {% set BASE = states('sensor.lixee_zlinky_summation_delivered')|float(error) %}
        {% set GARAGE = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_2')|float(error) %}
        {% set MO = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_3')|float(error) %}
        {% set BURSALON = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_4')|float(error) %}
        {% set SL = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_5')|float(error) %}
        {% set LL = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_6')|float(error) %}
        {% set LV = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_7')|float(error) %}
        {% set CHPAR = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_8')|float(error) %}
        {% set CLIM = states('sensor.chambre_parents_energie')|float(error) %}
        {% set CLIM2 = states('sensor.nous_b2z_clim_summation_delivered')|float(error) %}
        {% set FRIG = states('sensor.prise_refrigerateur_summation_delivered_9')|float(error) %}
        {% set HCINE = states('sensor.prise_home_cinema_summation_delivered_9')|float(error) %}
        {% set CONGELCV = states('sensor.prise_congel_et_cave_a_vin_summation_delivered_9')|float(error) %}
        {% set INFO = states('sensor.prise_baie_informatique_summation_delivered')|float(error) %}
        {% set RADAGATHE = states('sensor.prise_nous_radiateur_agathe_summation_delivered_9')|float(error) %}
        {{ BASE - ( GARAGE + MO + BURSALON + SL + LL + LV + CHPAR + FRIG + HCINE + CONGELCV + INFO + CLIM2 + RADAGATHE) | float(error) }}
      availability: >
        {{ states('sensor.lixee_zlinky_summation_delivered')|is_number 
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_2')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_3')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_4')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_5')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_6')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_7')|is_number
        and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_8')|is_number
        and states('sensor.prise_refrigerateur_summation_delivered_9')|is_number 
        and states('sensor.prise_home_cinema_summation_delivered_9')|is_number
        and states('sensor.nous_b2z_clim_summation_delivered')|is_number
        and states('sensor.prise_congel_et_cave_a_vin_summation_delivered_9')|is_number
        and states('sensor.prise_baie_informatique_summation_delivered')|is_number
        and states('sensor.prise_nous_radiateur_agathe_summation_delivered_9')|is_number}}

Bonjour,

Je vous remercie pour votre retour.

J’ai adapté mon code en suivant vos recommandations.

Effectivement, la notion de disponibilité (availability) ne figurait pas dans ma version initiale.

Par ailleurs, concernant la carte, la principale différence avec mon code réside dans l’ajout de l’option netBars: true, qui, lorsqu’activée, permet d’afficher non pas les valeurs brutes, mais l’évolution entre chaque point de mesure.

- entity: sensor.autre_electricite
        netBars: true
        color: grey

Je vous ferai un retour dès que j’aurai assez de recul avec cette nouvelle configuration.

Bonjour,
Super. Je pense en effet qu’avec ces 2 modifications, ça devrait fonctionner. Le seul soucis que tu peux avoir pourrait venir de la fréquence de mise à jour des informations en fonction des sources.
Je parle d’expérience car je suisvais la consommation de ma clim qui était remontée par l’intégration web du fournisseur. Néanmoins, cette information n’était remontée que toutes les heures, du coup, j’avais un pic de consommation à certains moments, qui ne correspondait pas à la réalité, et « autre consommation » devenait négatif sur cette période.
J’ai du ajouter ma propre mesure de consommation à la place de la remontée de l’intégration web pour cette clim.

Bonjour,

Je ne rencontre pas ce problème, car je collecte les données via l’écocompteur Legrand. Celui-ci dispose d’une entrée TIC Linky ainsi que de cinq entrées supplémentaires, sur lesquelles il est possible d’installer jusqu’à deux tores par entrée. L’écocompteur est connecté en RJ45 et transmet les informations sous format JSON, que je récupère à intervalles d’une minute.

Actuellement, je dispose de trois tores fournis avec l’écocompteur, mais j’envisage d’étendre l’installation afin de mieux suivre la consommation des équipements les plus énergivores. Pour le moment, je n’utilise pas de prises connectées, bien que j’en possède une, uniquement dédiée au redémarrage matériel du serveur en cas de besoin.

Avec du recul, tout me semble désormais correct : les valeurs affichées dans le tableau de bord Energy et dans mon tableau de bord personnalisé sont identiques. Il me reste maintenant à améliorer l’aspect visuel de la carte history-explorer afin d’aligner les données d’une heure à l’autre (comme sur le dashboard energy original), plutôt que sur des intervalles de demi heure a une autre. Je n’ai pas encore trouvé de solution à cette problématique.

Beau dashboard.
J’ai cherché dans le détail de la doc de la carte et dans tous le paramètres, mais je n’ai pas trouvé de moyen d’avoir les données sur l’heure. En fait le graph donne les données toutes les demi-heures, d’où le fait que la légende pour 8h00 par exemple est entre le bar-chart de 7h30-8h00 et 8h00-8h30.
De mon côté, j’affiche le niveau de détail le plus fin (10 minutes)