Bonjour,
Savez-vous comment comparer la valeur d’une entité entre aujourd’hui à l’instant T ( par exemple à 13h55) & hier à la même heure (13h55) ?
Merci
Bonjour,
Savez-vous comment comparer la valeur d’une entité entre aujourd’hui à l’instant T ( par exemple à 13h55) & hier à la même heure (13h55) ?
Merci
Oui, tu peux en utilisant history_stats
, history.get_state
dans un script Python, ou une requête SQL
Merci ! ça na pas l’air simple ça. Aurais-tu un exemple ?
Autrement une méthode via node Red ?
Utiliser history.get_state
dans un template
utiliser un template Jinja pour récupérer la valeur d’une entité à un moment précis « hier ».
{% set entity_id = 'sensor.ton_entite' %}
{% set now = now() %}
{% set yesterday = now - timedelta(days=1) %}
{% set state_yesterday = states(entity_id, yesterday) %}
{% set state_now = states(entity_id) %}
Valeur actuelle: {{ state_now }}
Valeur hier à la même heure: {{ state_yesterday }}
Si tu veux un capteur qui compare en continu, ajout de sensor dans configuration.yaml
:
sensor:
- platform: history_stats
name: "Valeur hier"
entity_id: sensor.ton_entite
state: "on"
type: mean
start: "{{ now().replace(hour=13, minute=55, second=0) - timedelta(days=1) }}"
end: "{{ now().replace(hour=13, minute=55, second=0) - timedelta(days=1) + timedelta(minutes=1) }}"
Cela récupère la valeur moyenne hier à 13h55.
tu a apexcharts card
pour le graph et le suivi en fonction du temps
Merci pour tes précisions.
Sur le template Jinja , à partir d’un exemple sur la base du ‹ sensor.temp_ext_nord_temperature ›
Valeur Actuelle == Valeur d’hier ; alors que ce n’était pas le cas… (?)
Le problème vient du fait que states(entity_id, timestamp)
ne fonctionne pas dans Home Assistant nativement en Jinja.
Solution : Utiliser history.get_state
dans un script ou une automation.
OK .
Comment appelle-t-on history.get_state
dans une automation ou un script ?
(Je n’ai jamais fait de script …)
Encore Merci !
avec une automation ou un script, tu peux utiliser history.get_state
en appelant le service python_script
ou history
.
Méthode 1 : Utiliser history.get_state
dans un script HA (facile)
Ajoute cette action dans ton automation ou script YAML :
action:
- service: history.get_state
data:
entity_id: "sensor.ton_entite"
timestamp: "{{ (now() - timedelta(days=1)).isoformat() }}"
response_variable: state_yesterday
- service: persistent_notification.create
data:
title: "Valeur d'hier"
message: "Hier à la même heure, {{ state_yesterday.state }} (actuel: {{ states('sensor.ton_entite') }})"
Explication :
history.get_state
récupère l’état de l’entité hier à la même heure.response_variable: state_yesterday
stocke la valeur récupérée.persistent_notification.create
affiche une notification pour vérifier la valeur récupérée.Méthode 2 : Stocker la valeur d’hier dans un input_number
(pour la comparer plus tard)
Si tu veux comparer cette valeur avec celle d’aujourd’hui dans une autre automation, stocke-la dans un input_number.
input_number
pour stocker la valeur d’hierinput_number:
valeur_hier:
name: Valeur Hier
min: 0
max: 10000
step: 0.1
automation:
- alias: "Sauvegarde de la valeur d’hier"
trigger:
- platform: time
at: "23:59:00"
action:
- service: history.get_state
data:
entity_id: "sensor.ton_entite"
timestamp: "{{ (now() - timedelta(days=1)).isoformat() }}"
response_variable: state_yesterday
- service: input_number.set_value
target:
entity_id: input_number.valeur_hier
data:
value: "{{ state_yesterday.state | float(0) }}"
automation:
- alias: "Comparer valeur actuelle et hier"
trigger:
- platform: state
entity_id: sensor.ton_entite
condition:
- condition: template
value_template: "{{ states('sensor.ton_entite') | float(0) > states('input_number.valeur_hier') | float(0) }}"
action:
- service: persistent_notification.create
data:
title: "Alerte : Valeur en hausse"
message: "La valeur actuelle est plus élevée qu'hier !"
Quelle méthode choisir ?
Méthode 1 (history.get_state
dans l’action) → Pour récupérer la valeur et l’afficher immédiatement.
Méthode 2 (input_number
+ automation) → Si tu veux comparer la valeur d’hier avec aujourd’hui dans d’autres scénarios.
Astuce : Une fois que tu maîtrises ça, tu peux utiliser history.get_state
pour comparer plusieurs jours en arrière !
Merci pour tous ces détails ! Je vais regarder tout ça.