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
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
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.
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é.
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%}.