[apexcharts-card] Valeurs incorrectes dans un graphique histogramme (bar chart)

Bonjour à tous,

Après avoir épluché le forum de long en large depuis quelques jours (et d’autres pages sur Internet), j’avoue ne toujours pas avoir trouvé la solution à mon problème, voire même n’avoir pas trop compris la logique de la librairie apexcharts-card :sweat_smile: :joy:

J’essaie tant bien que mal de faire correspondre les valeurs obtenues entre l’application, la page énergie (où je retrouve les mêmes données :face_exhaling:) et un graphique que j’aimerai obtenir sur un autre dashboard (où les valeurs sont incorrectes :sob:).

Pour remettre en situation, j’ai un sensor pour le chauffe-eau qui cumule le nombre de kwh (je n’ai pas de données forcément toutes les heures) :

Voici les données que j’ai aujourd’hui dans l’application Smart Life :

J’ai ainsi :

  • Consommation de 2,74 kWh entre 01:00 et 02:00
  • Consommation de 0,33 kWh entre 02:00 et 03:00
  • Consommation de 1,01 kWh entre 13:00 et 14:00
  • Consommation de 0,42 kWh entre 14:00 et 15:00
    soit un total de 4,5 kWh sur la journée.

Dans le tableau de bord énergie, le graphique renvoie bien les mêmes informations (je ne remets pas toutes les captures mais c’est bien pareil :wink:) :

Par contre, dans mon autre dashboard, j’essaie en vain d’avoir ce même graphique via une card apexcharts-card mais les résultats…

On a ainsi :

  • Consommation de 2,76 kWh entre 01:00 et 02:00 (au lieu de 2,74)
  • Consommation de 0,31 kWh entre 02:00 et 03:00 (au lieu de 0,33)
  • Consommation de 1,02 kWh entre 13:00 et 14:00 (au lieu de 1,01)
  • Consommation de 0,43 kWh entre 14:00 et 15:00 (au lieu de 0,42)

Voici le code que j’utilise, notamment les variables :

group_by:
      func: diff
      start_with_last: true

Code complet

type: custom:apexcharts-card
graph_span: 24h
span:
  start: day
header:
  show: true
  colorize_states: true
now:
  show: true
series:
  - entity: sensor.water_heater_total_kwh
    type: column
    show:
      in_header: raw
    float_precision: 2
    group_by:
      func: diff
      start_with_last: true

J’ai également testé de créer un compteur de services publics journalier tel que :

mais pareil, valeurs incorrectes :slightly_frowning_face:

type: custom:apexcharts-card
graph_span: 24h
span:
  start: day
header:
  show: true
  title: Daily Water Heater Total
  show_states: true
  colorize_states: true
now:
  show: true
series:
  - entity: sensor.daily_water_heater_total
    type: column
    show:
      in_header: raw
    float_precision: 2
    group_by:
      func: diff
      start_with_last: true

J’avoue ne plus avoir trop d’idées sur ce qu’il faudrait faire (j’ai testé un grand nombre d’options de cette librairie sans arriver à ce que ça fonctionne correctement :face_with_diagonal_mouth:).

Voici les informations de mon sensor :

J’ai lu qu’il fallait passer l’intégrale de Riemann en mode « gauche » (et non trapèzes, bien que ça ne change rien chez moi :thinking:).

Pour rappel, ce sensor renvoie le nombre de kWh en constante évolution :

Voici également mes entités :

et mes entrées :

Je pense vous avoir fourni toutes les informations, si quelqu’un pouvait m’aider à solutionner mon problème, je lui en serai grandement reconnaissant :grin:

A moins que les données du graphique apexcharts-card ne soient réellement correctes (mais dans ce cas, pourquoi celles du dashboard ne le seraient pas et pourquoi l’app n’aurait pas non plus les mêmes valeurs ??).

Merci par avance de votre aide !

PS : N’hésitez pas si vous avez besoin de plus d’informations :+1:

Salut

Donc dans les deux cas tu as 3.07 kWh entre 1h et 3h

Et pareil pour l’autre tranche.

Effectivement, j’avais noté la même chose.Cela pourrait venir d’une façon différente de traiter les bornes des intervalles sur les différents graphes.
Par exemple, si le table au de bord énergie fait les graphes [1:00 - 2:00[ et que apexcharts fait les graphes sur la base de ]1:00 - 2:00], les consommations à 1:00 et à 2:00 n’apparaissent pas dans sur le même intervalle entre les deux solutions.

Bonjour Gilles2,

Oui, j’ai lu votre post sur ce sujet (quand je dis que j’ai vraiment épluché Internet avant de venir importuner tout le monde :sweat_smile::joy:)

OK je comprend mieux, par contre, c’est vraiment dommage qu’il n’y ait pas une option pour gérer ça (je ne pense pas qu’on soit les seuls concernés par ce problème).
J’ai testé le :

group_by:
      func: diff
      start_with_last: true

sans trop de succès (un peu aléatoire tout ça).

Et maintenant comment faites-vous, vous utilisez une autre librairie ? Vous faites avec ?

N’y aurait-il pas un autre moyen (via template par exemple) pour un peu outrepasser ce comportement (si le dashboard énergie y arrive, c’est que les values sont stockées dans la base de données, je ne pense pas que ces dernières soient stockées à plusieurs reprises et dans différentes tables mais je peux me tromper :thinking:) ?

Merci de votre retour en tout cas !! :+1:

Tu pourrais essayer avec les cartes History-Explorer-Card.
GitHub - SpangleLabs/history-explorer-card: A card for Home Assistant Lovelace for exploring the history of your entities interactively and in real time.
Je ne sais pas si elles ont un fonctionnement plus proche du tableau de bord énergie. Je les utilise, mais j’avoue ne pas avoir comparé.

Bonjour Tochy,

Je suis d’accord avec vous mais j’essaie de « coller » au mieux aux données de l’app Smart Life et à celles du dashboard énergie.

Si d’un côté on a 2,74 et 0,33, ce n’est pas la même chose que 2,76 et 0,31 (même si le cumul reste OK, je suis d’accord :grin:).

C’est mon côté « relou » qui ressort… :joy::rofl:

Merci de votre retour !!

Bah tu compares des choux et des carottes. Vu que smartlife et HA ne sont très certainement pas synchronisé il suffit que l’un calcule un poil avant l’autre pour avoir ces différences.

Alors j’ai aussi lu des posts sur ce sujet mais je ne trouve pas cette librairie dans HACS :

Testé aussi avec seulement history, je ne la vois pas :

A moins que je n’ai zappé quelque chose…

Merci.

Tu ne sais pas quelle valeur est la vraie. Les deux façons de calculer sont correctent, elles sont juste différentes…

Bizarre que tu ne la trouve pas dans HACS, je l’ai bien dans HACS chez moi. Je t’ai mis le lien direct vers le dépot, donc au pire tu l’intègre par le lien dans HACS.

Oui mais ce que j’ai du mal à comprendre, c’est que le dashboard énergie a les mêmes valeurs (j’ai testé sur plusieurs jours, c’est identique) que l’app Smart Life.

En fait, HA est OK, ce sont les graphiques apexcharts-card qui ne le sont pas.

Et je ne pense pas que les développeurs de HA s’amusent à stocker les données à différents endroits dans la base de données donc c’est plutôt le calcul fait coté de cette librairie qui ne correspond pas à ce qu’on devrait avoir.

Merci !

Je vais creuser le sujet mais je pense que cette librairie ne fait pas le bon calcul (HA et l’app Smart Life ont les mêmes valeurs donc je partirai plutôt du principe qu’elles sont correctes :grin:).

C’est plutôt le calcul fait par la librairie qui ne « colle » pas…

Je vais voir pour tester History-Explorer-Card.

Merci encore !

Vu qu’au bout de la journée tu te retrouves avec le même nombre ce n’est pas très grave :grin:

Bonjour,
il faut ajouter le dépôt dans HACS. Sur la page de HACS aller sur les 3 points et ajouter dépôt.

Mettre https://github.com/SpangleLabs/history-explorer-card et choisir tableau de bord et ajouter.
Maintenant, elle apparaitra et vous pourrez l’installer.

Pas faux non plus… :crazy_face:

Trop fort WarC0zes, on sent le pro, ça fonctionne nickel :+1::+1:

Merci !

Pour apex-chart, si tu veux du temps réel, il faut ajouter update_interval: 60sec pour actualiser toutes les minutes.

Par contre, le tableau de bord énergie est actualisé toutes les heures.

Très bonne question d’ailleurs… :wink:

HA fait une update toutes les heures (donc stocke genre 1 valeur par heure dans la BDD).

Quel impact sur l’option update_interval: 60sec ?

Ça fait un appel toutes les minutes et stocke une valeur à chaque fois dans la BDD ? (1440 enregistrements par jour…).
Ou bien ne permet-elle pas plutôt pas de mettre à jour le graphique avec les données, cela toutes les minutes ?

Merci !

Aucun impacte, ça actualise ta carte toutes les minutes où ce que tu choisis. Les données sont envoyées par les sensors et ce sont eux qui sont stockés dans la BDD. La carte affiche juste les infos.

Et quelle est la fréquence de mise à jour des données envoyées par les sensors ?
Toutes les heures ou plus ?

Combien d’entrées dans la BDD HA pour une entité par jour du coup ?

C’est réglable quelque part ?

Désolé de toutes ces questions, j’essaie de comprendre un peu la logique de HA :wink:
Parce que dans mon cas, je n’ai pas forcément besoin d’avoir des données actualisées toutes les minutes (un appel par heure suffit).

Merci !