Energie - Consommation non suivie

Bonjour,

Mon problème

J’ai récemment commencé à utiliser la partie « Energie » de Home Assistant.
En soi, très pratique et intuitif pour ajouter ses consommations globales, par appareil.

Je dispose d’un compteur EcoCompteur LEGRAND (première génération avec les pages .json dispo). Je récupère à partir de celui-ci :

  • Consommation globale heures pleines/creuses depuis le Linky
  • 5 circuits pour mesurer les différents postes de consommation (le cumul de ces 5 circuits correspond à l’entièreté des consommations de la maison même si le nom ne le laisse pas toujours penser)

J’ai créé les sensors nécessaires et ils sont bien pris en compte.

Mon problème est que j’ai de la consommation non suivie qui apparaît de manière régulière de ~0.2 kWh/heure (et 2 cas étonnants de valeurs négatives !) alors que mes consommations par appareil sont censées prendre toute la consommation.
Qu’il y ait une très légère différence je conçois mais là c’est trop.

Quelqu’un aurait il une idée ?

Tests :

  • Les index HP/HC sont bien les bons en comparant avec le json et sur le linky directement.
    En additionnant les postes, il faut bien ajouter la part non suivie pour retomber sur la valeur de consommation globale.
  • La précision des index linky sont au Wh ce qui est pas mal. Je partais d’une actualisation des consommations à 5 secondes. J’ai passé à 1 seconde sans amélioration.
  • J’avais revérifié que toutes les phases étaient prises dans un des 5 tores.
  • J’ai essayé plusieurs ajustements dans les sensors mais sans amélioration.

Screenshots :

Configuration YAML des sensors

---
## Energy
# HP/HC & CX
- platform: rest
  resource: http://eco.home/info.json
  name: Power ECO All
  value_template: 0
  scan_interval: 1
  json_attributes:
    - data_inst_c1
    - data_inst_c2
    - data_inst_c3
    - data_inst_c4
    - data_inst_c5
    - conso_hc
    - conso_hp
# C1
- platform: integration
  source: sensor.power_c1_chauffage
  name: conso_c1_chauffage
  round: 3
  method: trapezoidal
  max_sub_interval:
    minutes: 1
# C2
- platform: integration
  source: sensor.power_c2_electromenager
  name: conso_c2_eletromenager
  round: 3
  method: trapezoidal
  max_sub_interval:
    minutes: 1
# C3
- platform: integration
  source: sensor.power_c3_eau_chaude
  name: conso_c3_eau_chaude
  round: 3
  method: trapezoidal
  max_sub_interval:
    minutes: 1
# C4
- platform: integration
  source: sensor.power_c4_prises_de_courant
  name: conso_c4_prises_de_courant
  round: 3
  method: trapezoidal
  max_sub_interval:
    minutes: 1
# C5
- platform: integration
  source: sensor.power_c5_baie
  name: conso_c5_baie
  round: 3
  method: trapezoidal
  max_sub_interval:
    minutes: 1
---
## Energy
# HC
- name: Index Heures Creuses
  unit_of_measurement: Wh
  device_class: energy
  state_class: total_increasing
  state: "{{ state_attr('sensor.power_eco_all', 'conso_hc') }}"
# HP
- name: Index Heures Pleines
  unit_of_measurement: Wh
  device_class: energy
  state_class: total_increasing
  state: "{{ state_attr('sensor.power_eco_all', 'conso_hp') }}"
# C1
- name: Power C1 Chauffage
  unit_of_measurement: W
  device_class: power
  state_class: measurement
  state: "{{ state_attr('sensor.power_eco_all', 'data_inst_c1') }}"
# C2
- name: Power C2 Electromenager
  unit_of_measurement: W
  device_class: power
  state_class: measurement
  state: "{{ state_attr('sensor.power_eco_all', 'data_inst_c2') }}"
# C3
- name: Power C3 Eau Chaude
  unit_of_measurement: W
  device_class: power
  state_class: measurement
  state: "{{ state_attr('sensor.power_eco_all', 'data_inst_c3') }}"
# C4
- name: Power C4 Prises de Courant
  unit_of_measurement: W
  device_class: power
  state_class: measurement
  state: "{{ state_attr('sensor.power_eco_all', 'data_inst_c4') }}"
# C5
- name: Power C5 Baie
  unit_of_measurement: W
  device_class: power
  state_class: measurement
  state: "{{ state_attr('sensor.power_eco_all', 'data_inst_c5') }}"

Ma configuration


System Information

version core-2024.10.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.4
os_name Linux
os_version 6.6.54-haos
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.1
Stage running
Available Repositories 1444
Downloaded Repositories 7
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 13.2
update_channel stable
supervisor_version supervisor-2024.10.2
agent_version 1.6.0
docker_version 27.2.0
disk_total 28.5 GB
disk_used 9.2 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization
board odroid-c2
supervisor_api ok
version_api ok
installed_addons File editor (5.8.0), Advanced SSH & Web Terminal (19.0.0), Z-Wave JS UI (3.16.0), Samba Backup (5.2.0), Nginx Proxy Manager (1.0.1)
Dashboards
dashboards 3
resources 5
views 9
mode storage
Recorder
oldest_recorder_run 12 octobre 2024 à 17:02
current_recorder_run 21 octobre 2024 à 00:01
estimated_db_size 307.71 MiB
database_engine sqlite
database_version 3.45.3
___

Bonsoir,

naïvement j’aurai plutôt fait l’inverse en tant que test de stabilité, à savoir rallonger le temps entre deux prises en compte du JSON pour voir si l’erreur survient moins souvent.
On pourrait penser à un problème de lecture alors que le fichier est en cours d’écriture qui te donnerait un écart sur ce que prend HA par rapport au fichier final que tu consultes le soir.

Salut,

tu es à 100% certain que tu n’as pas une phase qui traine quelque part sans mesure ?
Pour les valeurs négatives, dans les 2 cas ça semble être un souci de mesure, car ta conso totale est moins élevée que ce que tes circuits remontent et le circuit jaune semble en être la cause.
As-tu essayé de voir les consos en W de ce circuit ces jours-là à l’heure en question ?

Avec la méthode de calcul d’intégrale, j’ai déjà vu des cas où la première mesure après un certain temps sans valeur part en latte… Et si je ne me trompe pas avec la méthode « Left » ça n’arrive pas autant qu’avec la « trapezoidale »… peut-être un truc à essayer…

@xTG
C’est vrai que ça a son sens.
J’avais en logique qu’en augmentant la fréquence de prise de métriques, ça limiterait les cas de consommation brèves.
Mais bon si c’est très bref ça ne doit pas représenter 0.2kWh par heure …

Je vai réduire de nouveau la fréquence vu que de toute façon ça ne corrige pas mon souci.

@AlexHass
Le seul élément qui n’est pas pris c’est le disjoncteur qui mène vers le tableau secondaire de mon abri de jardin.
Vu que j’y vais rarement, le disjoncteur est off.
Sinon le reste j’avais normalement bien tout pris.

Ton indication sur le circuit jaune (~Electromenager) a piqué ma curiosité.
Je me demande si un des éléments passant par le tore ne mettrait pas la grouille.

On peut faire un début de corrélation pour les valeurs négatives. A voir s’il y a causalité…

J’ai un doute, je ne suis plus certain pour le fonctionnement du tore.
Si j’ai pris un des fils de phase en sens inverse dans le tore, est ce que la somme totale mesurée par le tore sera biaisée (car le fils inversé fera une valeur considérée négative) ?
De souvenir oui et j’avais mis toutes les phases dans le même sens, mais j’ai peut être fait un loupé.

Je vais essayer de regarder si j’ai pas loupé une phase, voir ce qui est inclus dans le tore jaune (je me souviens plus complètement) et regarder si des mélanges de sens.

Egalement, je vais modifier la méthode d’intégral pour voir.

Merci en tout cas pour votre aide.

Bon ça semble expliquer les valeurs pas correctes. Du coup ça passe négatif à cause cette incohérence, ce n’est pas un souci de sens de tore je pense, mais plus des valeurs incohérentes remontées… 30 ou 40 kW ce n’est pas réaliste à moins que tu fasses tourner une petite usine au fond du jardin :wink:
Peut-etre une erreur de conversion dans le JSon de la page de l’ecocompteur?

J’ai fait un ptit regard rapide côté tableau et tout semble en ordre.
Le sens est le même à chaque fois, j’ai bien toutes les phases dans les tores.
Je n’ai pas remonté tout ce que prenait le tore jaune (il est un peu tard pour manipuler trop dans un tableau électrique :sweat_smile: ) mais ça reste du classique frigo/four/micro onde /etc.

Oui la valeur est assez démentielle même si ponctuelle.
Difficile de savoir ce qu’il y avait vraiment dans le json a un moment précis.
Il y a des fichiers csv de dispo mais sauf erreur, le plus fin c’est par heure.
Je peux peut être comparer les heures du csv avec ce qui est indiqué par HASS.

En soi, le retour json est instantané et le contenu simple :

{
	"option_tarifaire": 1,
	"tarif_courant": 1,
	"tarif_hc": 0.151300,
	"tarif_hp": 0.204000,
	"isousc": 45,
	"conso_hc": "000487860",
	"conso_hp": "001068172",
	"label_c1": "Chauffage",
	"label_c2": "Electromenager      ",
	"label_c3": "Eau chaude",
	"label_c4": "Prises de Courant",
	"label_c5": "Baie                ",
	"label_c6": "Gaz",
	"label_c7": "Eau",
	"data_inst_c1": 8.000000,
	"data_inst_c2": 0.000000,
	"data_inst_c3": 0.000000,
	"data_inst_c4": 246.000000,
	"data_inst_c5": 202.000000,
	"data_inst_c6": 0.000000,
	"data_inst_c7": 0.000000,
	"data_sum_0": 0.000000,
	"data_sum_1": 0.000000,
	"data_sum_2": 0.000708,
	"data_sum_3": 0.000000,
	"data_sum_4": 0.000020,
	"data_sum_5": 0.000081,
	"jour": 21,
	"mois": 10,
	"annee" :24,
	"heure": 23,
	"minute": 39,
	"sec": 14,
	"fuseau": 1,
	"Date_Time": 1729553954
}

Petites news concernant mes soucis :

J’avais apporté les modifications suivantes :

  • integration (integral) :
    • round : passage de 3 à 2
    • method : passage à left
  • scan interval : passage à 10s

Bonne nouvelle, je n’ai plus de valeurs négatives depuis, c’est déjà un bon point.
Concernant la part consommation non suivie, j’en ai toujours (en moyenne ~0.2kWh par heure).

Je continue mes investigations à mes heures perdues.
Si vous avez des idées, je suis bien entendu preneur :wink:

Hello,

J’ai le même soucis avec la méthode trapezoidale (à priori c’est ça la source).
La courbe du haut c’est le capteur de puissance, et la courbe du bas, c’est l’énergie qui en ressort. On voit un décrochement tous les matins au moment de l’allumage, ca sent le bug ou la limitation dans le calcul trapezoidale. Je repasse en left comme indiqué par @AlexHass .

J’étais passé en trapezoidale car j’avais beaucoup d’écart entre les mesures annoncées par EDF et les miennes.

EDIT: la doc dit ça:

Trapezoidal

The trapezoidal method follows the Trapezoidal rule. This method is the most accurate of the currently implemented methods, if the source updates often, since it better fits the curve of the intrinsic source.

Left

The left method follows the Left rule. The method underestimates the intrinsic source, but is extremely accurate at estimating rectangular functions which are very stable for long periods of time and change very rapidly (e.g. such as the power function of a resistive load can jump instantly to a given value and stay at the same value for hours). If your source keeps its state for long periods of time, this method is preferable to the trapezoidal.

Donc dans mon cas, avec des créneaux, la recommandation c’est ‹ left › (ou ‹ right › car left sous-estime la valeur).

2 « J'aime »