Problemes avec les kWh et le tableau Energie

Bonjour,

j’ai un petit souci dans mon template de redefinition d’un de mes capteurs…

comme j’ai un capteur sensor.capt_four_ecs qui est positionné au niveau du tableau électrique, il mesure tout ce qui passe par ce disjoncteur.
malheureusement, il y a déjà trois autres équipements qui sont équipés d’une prise qui mesure leur consommation, à savoir sensor.prise_girier_09, sensor.prise_frigidaire et sensor.prise_onduleur_chambre

afin de ne pas comptabiliser deux fois la consommation, je soustrait ces trois valeurs à la valeur donnée par le capteur situé dans le tableau électrique, via le template suivant:

######### For Calcul four ######################################################
- sensor:
    - name: "capteur four Current"
      unique_id: capteur_four_current
      availability: "{{ is_number(states('sensor.capt_four_ecs_current_a')) }}"
      device_class: current
      state_class: measurement
      unit_of_measurement: A
      state: "{{ (states('sensor.capt_four_ecs_current_a') | float(0) - states('sensor.prise_girier_09_current') | float(0) - states('sensor.prise_frigidaire_current') | float(0) - states('sensor.prise_onduleur_chambre_current') | float(0))| round(5)}}"
    - name: "capteur four Energy"
      unique_id: capteur_four_energy
      availability: "{{ is_number(states('sensor.capt_four_ecs_energy_a')) }}"
      device_class: energy
      state_class: total_increasing
      unit_of_measurement: kWh
      state: "{{ (states('sensor.capt_four_ecs_energy_a') | float(0) - states('sensor.prise_girier_09_energy') | float(0) - states('sensor.prise_frigidaire_energy') | float(0) - states('sensor.prise_onduleur_chambre_energy') | float(0))| round(5)}}"
    - name: "capteur four Power"
      unique_id: capteur_four_power
      availability: "{{ is_number(states('sensor.capt_four_ecs_power_a')) }}"
      device_class: power
      state_class: measurement
      unit_of_measurement: W
      state: "{{ (states('sensor.capt_four_ecs_power_a') | float(0) - states('sensor.prise_girier_09_power') | float(0) - states('sensor.prise_frigidaire_power') | float(0) - states('sensor.prise_onduleur_chambre_power') | float(0))| round(5)}}"
######### END Calcul four ######################################################

ce qui me donne un nouveau capteur sensor.capteur_four que je présente au tableau de bord Energy en lieu et place du sensor.capt_four_ecs.

tout ce mic-mac me donne des valeurs bien plus conformes à la réalité, mais me pose deux problemes. d’une part l’erreur suivante:

Enregistreur: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:302
intégration: Capteur (documentation, problèmes)
S'est produit pour la première fois: 17:25:10 (1 occurrences)
Dernier enregistrement: 17:25:10

Entity sensor.capteur_four_energy from integration template has state class total_increasing, but its state is not strictly increasing. Triggered by state 856.98 (868.46) with last_updated set to 2024-06-14T15:22:42.419804+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

Le second souci est que quand je reboote, mon tableau energie est biaisé pour la journée:


jour 1, tout baigne

jour 2, un reboot vers 16h00


Jour 3, OK


aujourd’hui 2 reboots…

c’est couillon, le tableau Energy veut imperativement des kWh, unité dont je me contrefiche, en sachant depuis longtemps que 50W pendant 10 heures, ca fait pareil que 500W pendant 1heure.

Salut,
je pense que le soucis du reboot, c’est qu’il faut ajouter tout les sensors utiliser dans state , a ajouter aussi dans availability.
exemple:

      - name: 'Energie vmc mensuel consommée'
        unique_id: energy_vmc_total_montly
        unit_of_measurement: "Wh"
        state: "{{ (states('sensor.energie_mensuelle_vmc_hp')|float(0) + states('sensor.energie_mensuelle_vmc_hc')|float(0))|round(2) }}"
        availability: "{{ states('sensor.energie_mensuelle_vmc_hp')|is_number and states('sensor.energie_mensuelle_vmc_hc')|is_number }}"

Salut!
J’ai creer un sensor du même type la semaine dernière, et il se trouve que j’ai justement la meme erreur que ta première.
Je n’ai pour ma part pas constater d’erreur au reboot de la machine. Seulement le soucis de state_class
Je vais suivre ton fil pour voir si une solution est possible ^^

Pour unefo, mon sensor est celui ci

- sensor:
    - name: lixee_consommation_autres_energy
      unique_id: lixee_consommation_autres_energy
      icon: mdi:home-lightning-bolt
      state: >
        {{ (float(states('sensor.lixee_base')) - 10029.630
            - float(states('sensor.smartplug_elia_energy'))
            - float(states('sensor.smartplug_1_energy'))
            - float(states('sensor.smartplug_2_energy'))
            - float(states('sensor.google_home_mini_energy'))
            - float(states('sensor.aqara_light_bulb_energy'))
            - float(states('sensor.light_mi_bulb_1s_energy'))
            - float(states('sensor.mi_bedside_lamp2_energy'))
            - float(states('sensor.chauffe_eau_energy')))  | round(5) }}
      availability: >
        {{ has_value('sensor.smartplug_elia_energy')
            and has_value('sensor.smartplug_1_energy')
            and has_value('sensor.smartplug_2_energy')
            and has_value('sensor.google_home_mini_energy')
            and has_value('sensor.aqara_light_bulb_energy')
            and has_value('sensor.light_mi_bulb_1s_energy')
            and has_value('sensor.mi_bedside_lamp2_energy')
            and has_value('sensor.chauffe_eau_energy') }}
      device_class: energy
      state_class: total_increasing
      unit_of_measurement: "kWh"

Salut,
c’est normal , ta ajouter toutes les entités utiliser dans le template dans availability:

Chose qu’il n’a pas fais. :wink:

@bentou et @Frosh,
vous avez essayer avec des parenthèses ?

      device_class: "energy"
      state_class: "total_increasing"

peu être le | round(5) qui est pas apprécier, mettre plutôt | round(3).

Alors…

j’ai tout Warc0zé mon système.

j’ai ajouté tout le monde dans availlability, mis des «  » sur les classes et les unités. et 3 à round.

j’ai rebooté et …

Enregistreur: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:302
intégration: Capteur (documentation, problèmes)
S'est produit pour la première fois: 19:10:10 (1 occurrences)
Dernier enregistrement: 19:10:10

Entity sensor.capteur_four_energy from integration template has state class total_increasing, but its state is not strictly increasing. Triggered by state 774.68 (774.69) with last_updated set to 2024-06-14T17:07:51.081053+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

eh non, j’ai fait mentir l’adage " WarC0zes un jour, WarC0zes toujours !!!" :scream:

peut etre que ca fera du bien à mon tableau, je verrai ca demain, mais ca a l’air en bonne voie…

Après le reboot, les données sont correcte avec l’ajout de tout les sensors dans availability ?

difficile à dire


faudra attendre demain pour être certain.

OK, tu pourra tester ce template voir si c’est bon pour le state_class.

      - name: "capteur four Energy"
        unique_id: capteur_four_energy
        device_class: energy
        state_class: total_increasing
        unit_of_measurement: "kWh"
        state: >-
            {% set FO = states('sensor.capt_four_ecs_energy_a')|float(0) %}
            {% set GI = states('sensor.prise_girier_09_energy') |float(0) %}
            {% set FR = states('sensor.prise_frigidaire_energy') |float(0) %}
            {% set ON = states('sensor.prise_onduleur_chambre_energy') |float(0) %}
            {{ FO - ( GI + FR + ON ) |float(0) |round(3) }}
        availability: "{{ states('sensor.capt_four_ecs_energy_a')|is_number and states('sensor.prise_girier_09_energy')|is_number }} and states('sensor.prise_frigidaire_energy')|is_number }} and states('sensor.prise_onduleur_chambre_energy')|is_number }}"

je viens de le changer. je reboote et je vais manger. a tout de suite.

    # - name: "capteur four Energy"
    #   unique_id: capteur_four_energy
    #   availability: >
    #     {{ states('sensor.capt_four_ecs_energy_a')|is_number and 
    #     states('sensor.prise_girier_09_energy') | is_number and 
    #     states('sensor.prise_frigidaire_energy') | is_number and 
    #     states('sensor.prise_onduleur_chambre_energy') | is_number }}
    #   device_class: "energy"
    #   state_class: "total_increasing"
    #   unit_of_measurement: "kWh"
    #   state: > 
    #     {{ (states('sensor.capt_four_ecs_energy_a') | float(0) - 
    #     states('sensor.prise_girier_09_energy') | float(0) - 
    #     states('sensor.prise_frigidaire_energy') | float(0) - 
    #     states('sensor.prise_onduleur_chambre_energy') | float(0))| round(3)}}
    - name: "capteur four Energy"
      unique_id: capteur_four_energy
      device_class: energy
      state_class: total_increasing
      unit_of_measurement: "kWh"
      state: >-
          {% set FO = states('sensor.capt_four_ecs_energy_a')|float(0) %}
          {% set GI = states('sensor.prise_girier_09_energy') |float(0) %}
          {% set FR = states('sensor.prise_frigidaire_energy') |float(0) %}
          {% set ON = states('sensor.prise_onduleur_chambre_energy') |float(0) %}
          {{ FO - ( GI + FR + ON ) |float(0) |round(3) }}
      availability: "{{ states('sensor.capt_four_ecs_energy_a')|is_number and states('sensor.prise_girier_09_energy')|is_number }} and states('sensor.prise_frigidaire_energy')|is_number }} and states('sensor.prise_onduleur_chambre_energy')|is_number }}"

comme ca c’est tout bon !!! :+1:
pas de message d’erreur. !!!

1 « J'aime »

Bonsoir,
J’ai le même soucis, que je corrigeais d’habitude en corrigeant les statistiques.
Je vais donc mettre la même ligne d’availability.
Par contre, avec beaucoup de sensors, la ligne dans le fichier de configuration deveint très longue. Quelqu’un saurait-il comment faire des retours à la ligne? J’avoue que la syntaxe du Yaml est encore parfois étrange pour moi.
Ci-dessous mon template pour illustrer le problème:

    - 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(0) %}
        {% set GARAGE = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_2')|float(0) %}
        {% set MO = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_3')|float(0) %}
        {% set BURSALON = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_4')|float(0) %}
        {% set SL = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_5')|float(0) %}
        {% set LL = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_6')|float(0) %}
        {% set LV = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_7')|float(0) %}
        {% set CHPAR = states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_8')|float(0) %}
        {% set CLIM = states('sensor.chambre_parents_energie')|float(0) %}
        {% set FRIG = states('sensor.prise_refrigerateur_summation_delivered_9')|float(0) %}
        {% set HCINE = states('sensor.prise_home_cinema_summation_delivered_9')|float(0) %}
        {% set CONGELCV = states('sensor.prise_congel_et_cave_a_vin_summation_delivered_9')|float(0) %}
        {% set INFO = states('sensor.prise_baie_informatique_summation_delivered')|float(0) %}
        {{ BASE - ( GARAGE + MO + BURSALON + SL + LL + LV + CHPAR + FRIG + HCINE + CONGELCV + INFO) | float(0) }}
      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_4')|is_number and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_4')|is_number and states('sensor.tz3000_2putqrmw_ts011f_summation_delivered_4')|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.prise_congel_et_cave_a_vin_summation_delivered_9')|is_number  and states('sensor.prise_baie_informatique_summation_delivered')|is_number}}"

Salut,
j’ai fais comme telle:

      - name: 'Energie home instentané'
        unique_id: energy_home_instentane
        unit_of_measurement: "W"
        state: >-
          {% set SUM = states('sensor.zlinky_current_summation_derived_one_minute')|int(0) |round(0) %}
          {% set VMC1 = states('sensor.shellyplus2pm_e465b8b25d94_switch_0_power')|int(0) |round(0) %}
          {% set VMC2 = states('sensor.shellyplus2pm_e465b8b25d94_switch_1_power')|int(0) |round(0) %}
          {% set FP = states('sensor.0xa4c1383a5eeb5542_power')|int(0) |round(0) %}
          {% set PP = states('sensor.0xa4c138244f6e91e3_power')|int(0) |round(0) %}
          {% set TP = states('sensor.0xa4c138d4c17833b3_power')|int(0) |round(0) %}
          {% set MLP = states('sensor.0xa4c138c9cc1b6472_power')|int(0) |round(0) %}
          {{ SUM - ( VMC1 + VMC2 + FP + PP + TP + MLP ) |int(0) |round(0) }}
        availability: > 
          {{ states('sensor.zlinky_current_summation_derived_one_minute')|is_number
          and states('sensor.shellyplus2pm_e465b8b25d94_switch_0_power')|is_number
          and states('sensor.shellyplus2pm_e465b8b25d94_switch_1_power')|is_number
          and states('sensor.0xa4c138c9cc1b6472_power')|is_number
          and states('sensor.0xa4c138244f6e91e3_power')|is_number
          and states('sensor.0xa4c138d4c17833b3_power')|is_number
          and states('sensor.0xa4c138c9cc1b6472_power')|is_number }}
1 « J'aime »

Les nouvelles du front:

m’a fait fait passer mon capteur_four_energy à indisponible, la faute aux " }}" en trop.
c’est corrigé, c’est rebooté à 9h23.
tableau energie OK mais à 09h30, le message revient.

Enregistreur: homeassistant.components.sensor.recorder
Source: components/sensor/recorder.py:302
intégration: Capteur (documentation, problèmes)
S'est produit pour la première fois: 09:30:10 (1 occurrences)
Dernier enregistrement: 09:30:10

Entity sensor.capteur_four_energy from integration template has state class total_increasing, but its state is not strictly increasing. Triggered by state 775.72 (775.73) with last_updated set to 2024-06-15T07:26:46.146590+00:00. Please create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

pourquoi tu écrit
state: >-
et
availability: >
il y a une différence entre les 2 ou c’est juste la même chose ?

sinon mon tableau commence à ressembler à quelque chose, il faut juste lui laisser le temps de calculer mon capteur_four_energy

C’est pareil, les deux fonctionnent.

edit:

ton sensor a un état qui a diminué ?
peu être changer en measurement au lieu de total_increasing.

  • measurement, the state represents a measurement in present time, for example a temperature, electric power, etc. For supported sensors, statistics of min, max and average sensor readings are updated periodically.
  • total, the state represents a total amount that can both increase and decrease, e.g. a net energy meter. When supported, the accumulated growth or decline of the sensor’s value since it was first added is updated periodically.
  • total_increasing, a monotonically increasing total, e.g. an amount of consumed gas, water or energy. When supported, the accumulated growth of the sensor’s value since it was first added is updated periodically.
2 « J'aime »

Et bien de mon coté j’ai mis round(3) au lieu de round(5). Et j’ai toujours le même soucis.
Alors je me suis fais la reflexion:
En l’etat mon capteur se met a jour a chaques actualisation de l’un des capteurs présent dans state.
Imaginons qu’à l’instant T mon state soit state: Entité0 - Entité1 - Entité2 - Entité3
Si E2 s’actualise à la hausse à T+1, alors que E0 lui n’a pas été actualiser, alors il est logique que state(T+1) < state(T)
J’ai donc une valeure de state qui peut augmenter et diminuer et ca ne correspond pas aux valeurs possible pour un total_increasing
J’ai donc ajouter un trigger à mon sensor comme ca il n’est actualiser que si E0 change

Seulement j’ai encore eu le même message d’avertissement dans les logs :confused:

C’est ce que j’allais vous dire, car j’utilise le même genre de template et l’état peu passer négatif car l’entité principal est actualisé moins vite que les autres. Mais je n’est pas configurer de device et state class, donc aucune erreur.

tester avec state_class: measurement .

on fait comme les polytechniciens: on raisonne juste sur une base fausse…

soustraire des données c’est bien, mais ces données sont actualisées avec le temps.
et chaque capteur n’envoie pas ses données au même moment.
forcément, la soustraction ne devrait pas donner de résultat négatif. il faudrait laisser à 0 quand il y a un résultat négatif, ce delta sera repris naturellement plus tard dans la chaine du temps.

Pour aujourd’hui je vais me contenter de cette solution ^^
Et a l’avenir, peut etre qu’il faudra que je vois si je veux vraiment mettre ce state_classe, faire un capteur qui s’actualise en fonction le chaques valeure selon leurs last-update… Mais ca me semble un peut compliquer pour pas grand choses tout ca ^^

EDIT: ha bah non j’ai un nouveau soucis

Entity sensor.lixee_consommation_autres_energy (<class 'homeassistant.components.template.sensor.TriggerSensorEntity'>) is using state class 'measurement' which is impossible considering device class ('energy') it is using; expected None or one of 'total_increasing', 'total'; Please update your configuration if your entity is manually configured, otherwise create a bug report at https://github.com/home-assistant/core/issues?q=is%3Aopen+is%3Aissue+label%3A%22integration%3A+template%22

j’ai fait la modif, jusque là j’ai pas de message.
Moët and see…