Recupérer la valeur d'un compteur a n-1

bonjour,

j’aimerais récuper la valeur d’un compteur de consommation à n-1,
par moment j’ai des erreurs de rémontés du compteur ( exemple: 2150000 KWh)
donc j’aimerais récuper la valeur à n-1 pour intégrer celle-ci la place de la valeur erronée en utilisant un modèle ou un scripts

merci pour votre aide

Sans avoir aucune idée de comment tu récupères la valeur à n, donner des idées sur comment faire à n-1 parait mission impossible.
D’ailleurs, c’est quoi n et n-1 ?

C’est vrai je n’ai pas donnée beaucoup d’info
la valeur je la récupère par « ESPhome » ou par « templace » exemple de code templace pour mon onduleur:

template:
  - sensor:
      - name: Consommation Sortie Onduleur
        unit_of_measurement: "W"
        device_class: "energy"
        state_class: "total_increasing"
        state: >-
          {{ states ('sensor.puissance_import_enedis') | int + states ('sensor.puissance_du_reseau') | int | abs }}

  - sensor:
      - name: Puissance Sortie Onduleur en W
        unit_of_measurement: "W"
        device_class: "energy"
        state_class: "measurement"
        state: >-
          {% set t = states ('sensor.production_panneaux_solaires') | int %}
          {% if  t > 3600 %} 
            {{ states ('sensor.production_panneaux_solaires') | int + 300  -  states ('sensor.production_panneaux_solaires') | int }}
          {% else %}
            {{ states ('sensor.production_panneaux_solaires') | int }}
          {% endif %}

n-1 est la valeur enregister dans la base de donnée juste avant ( la dernière valeur)
donc je ne sais pas comment la récupérer dans la base de donnée
pour l’intégrer à la place de la valeur actuelle érronée
j’espère avoir été plus clair

En anglais, la méthode:

Je n’ai jamais testé ça personnellement.

je regarde et vous tiens au courant
merci

Est-ce qu’un truc du genre te conviendrait ?

template:
  - sensor:
      - name: Puissance Sortie Onduleur en W
        unit_of_measurement: "W"
        device_class: "energy"
        state_class: "measurement"
        state: |
          {%- set t = states('sensor.production_panneaux_solaires')|int(None) -%}
          {%- if t == None or t > 3600 -%}
            {%- set t = this.state.state|int(None) -%}
          {%- endif -%}
          {{ t }}

this.state.state est l’état actuel du sensor que tu définis, juste avant sa mise à jour.

De mémoire il faut bien doubler le state, parce que par exemple this.state.last_changed existe: this.state est l’objet state, pas la valeur de l’état.

J’ai testé ton code dans le modèle de homme assistant
si je mets une valeur supérieure a 3600 j’ai cette erreur:

UndefinedError: 'this' is undefined

je ne comprends pas le code malgré tes explications !!

{%- if t == None or t > 3600 -%}
       {%- set t = this.state.state|int(None) -%}

merci pour l’aide

Quelle version de Home Assistant utilises-tu ? Le this devrait fonctionner, comme indiqué ici:

EDIT: Ah j’ai compris, ça ne peut pas marcher dans les outils de développement parce que this est fourni par le sensor. Ça marchera dans le template sensor.

Déjà, il ne faut pas utiliser | int tout seul c’est déprécié. Il faut indiquer une valeur de repli si l’état n’existe pas ou n’est pas un nombre entier, d’où le | int(None).

Du coup mon code récupère la valeur, et si elle est erronée ou n’est pas un nombre (par exemple indisponible) alors on redéfinit t en récupérant la valeur précédente du sensor, donc la dernière valide.

Et enfin, on peut réutiliser {{ t }} plutôt que reprendre avec states(), ça gagne en simplicité.

Ok dans um template cà marche pas d’erreur

mais je n’ai pas la valeur a n-1 j’ai rien voir l’image ci-dessous
Capture d’écran du 2022-09-04 11-40-50

c’est normal ?
merci

et encore merci pour l’explication

Après vérification sur un sensor de test, this est déjà l’état de state, donc il faut écrire this.state (qui est un texte) au lieu de this.state.state.

Désolé pour la mémoire embrouillée. J’ai confondu avec {% for state in states.switch %}{{state.state}}{%endfor%}.

Merci je modifie mon sensor
je pars quelques jours je te tiens au courant a mon retour
bonne soirée

Bonjour

Super ça fonctionne nickel
merci

Bonjour @frnchfrgg j’ai une demande similaire que je viens de poster sur Comment récupérer l'avant dernière valeur d'une entité?

J’ai tenté de suivre tes conseil sur la console de développement Jinja2 et le code ne semble pas compatible. Est-ce qu’il y a une méthode pour contourner ce bug concernant this qui n’est pas défini ? A moins que créer un template soit l’unique solution ?