# Verifié l’état précédent d’une entité dans un scripts

**URL:** <https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064>\
**Category:** Entraide Home Assistant\
**Tags:** script, aide\
**Created:** [Juillet 21, 2024, 6:33 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064 "2024-07-21T06:33:19Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 21, 2024, 6:33 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/1 "2024-07-21T06:33:19Z")

</div>

Bonjour,

Je bloque actuellement sur la réalisation de plusieurs scripts.

En effet, je ne parviens pas à faire contrôler l’état précédent d’une entité par le script à la place de l’État actuel.

DSL mais impossible de vous afficher le morceau de script, mon iPad remplace systématiquement tous les espaces par des signes bizarre, quand je colle ça dans le texte préformaté!  
Je vous partage donc une photo du code qui pose problème.

 ![IMG_2471](https://forum.hacf.fr/uploads/default/original/3X/0/c/0cb34fd8ab6b95a21f7f52f1cb774d48d1a12ed1.jpeg)

Merci d’avance

---

<div class="post-metadata">

**Author:** ![Cloom](https://forum.hacf.fr/user_avatar/forum.hacf.fr/cloom/32/51762_2.png) [@Cloom](https://forum.hacf.fr/u/Cloom)\
**Post date:** [Juillet 21, 2024, 8:06 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/2 "2024-07-21T08:06:19Z")

</div>

Hello,

Je ne comprends pas trop ce que tu veux faire, là tu as l’air de vouloir juste regarder ton activité en cours et envoyer une command on/off à ta TV et ta box TV.

Pas besoin de regarder le status d’avant? Apparemment on peut rechercher avec une query SQL la valeur d’une entité à un moment donné:

> **[Get temperature from yesterday](https://community.home-assistant.io/t/get-temperature-from-yesterday/146494/13)**
>
> After a lot of trial and error I taped this SQL query together: # Get the sensor value at a specified time - platform: sql queries: - name: Temp. piscina ontem query: "SELECT \* FROM states WHERE entity\_id =...

Mais dans les automatisations tu peux trigger sur from state to state qui serait bien plus simple.

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 21, 2024, 8:31 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/3 "2024-07-21T08:31:40Z")

</div>

Oui tout à fait, le script présenté n’est pas bon parce qu’il vérifie l’état actuel de l’entité alors que je souhaiterais qu’il vérifie l’état précédent de l’entité.

Le but étant de contrôler mon système multimédia, l’action à réaliser n’est pas la même suivant l’état dans lequel il était et l’état dans lequel je souhaite qu’il soit.

L’action à réaliser n’est pas la même si je passe HCPC à Shield que si je passe de Regarder la TV à Shield

Il me faut donc bien récupérer l’état précédent pour pouvoir ordonner les bonnes actions.

Merci

---

<div class="post-metadata">

**Author:** ![Bob](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bob/32/64908_2.png) [@Bob](https://forum.hacf.fr/u/Bob)\
**Post date:** [Juillet 21, 2024, 10:21 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/4 "2024-07-21T10:21:10Z")

</div>

Bonjour,  
Une piste, quand j’ouvre une fenêtre j’enregistre dans un input\_txt le preset\_mode de mon thermostat et je passe mon preset\_mode à away, quand je referme la fenêtre je remets dans le preset\_mode la valeur de l’input\_text.  
Tu peux peut être utiliser le même principe.  
Bob

---

<div class="post-metadata">

**Author:** ![GDX2](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/g/3be4f8/32.png) [@GDX2](https://forum.hacf.fr/u/GDX2)\
**Post date:** [Juillet 21, 2024, 5:54 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/5 "2024-07-21T17:54:02Z")

</div>

Salut,  
Je m’avance peut-être…  
Si «&nbsp;HCPC&nbsp;» & «&nbsp;TV&nbsp;» & «&nbsp;Shield&nbsp;» sont des états, alors une automatisation avec 2 trigger:

- le 1er → Si l’état passe de «&nbsp;HCPC&nbsp;» à «&nbsp;Shield&nbsp;»
- le 2nd → Si l’état passe de «&nbsp;TV&nbsp;» à «&nbsp;Shield&nbsp;»  
Un ID sur chaque trigger… Le reste c’est de la programmation.  
Mais peut-être que je n’ai pas tout compris ?!

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 21, 2024, 6:20 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/6 "2024-07-21T18:20:17Z")

</div>

Tout à fait possible le problème ici c’est le nombre de combinaisons possible.

J’ai 5 états possible:  
-PowerOff  
-Regarder la Tv  
-Shield  
-HCPC  
-AirPlay

Ce qui donne 20 possibilités et du coup je cherchais quelque chose de plus smart.

Merci

---

<div class="post-metadata">

**Author:** ![GDX2](https://forum.hacf.fr/letter_avatar_proxy/v4/letter/g/3be4f8/32.png) [@GDX2](https://forum.hacf.fr/u/GDX2)\
**Post date:** [Juillet 21, 2024, 8:09 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/7 "2024-07-21T20:09:59Z")

</div>

OK, je comprends mieux.

---

<div class="post-metadata">

**Author:** ![Tochy](https://forum.hacf.fr/user_avatar/forum.hacf.fr/tochy/32/41667_2.png) [@Tochy](https://forum.hacf.fr/u/Tochy)\
**Post date:** [Juillet 21, 2024, 9:47 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/8 "2024-07-21T21:47:09Z")

</div>

Salut

Je vais être con et basique mais moi je vois 5 états.

Exemple :  
1 power off j’éteins tout  
2 j’allume la TV et j’éteins le reste  
3 j’allume la TV et la shield et j’éteins le reste  
4 j’allume la TV l’ampli et j’éteins le reste  
5 j’allume le périphérique AirPlay et l’ampli et j’éteins le reste

Ce que je veux dire, sur chaque état du demande à allumer ce que tu veux et éteindre le reste. Ce qui est déjà allumé ou éteint ne changera pas d’état et le reste s’allumera ou s’éteindra.

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 22, 2024, 6:57 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/9 "2024-07-22T06:57:27Z")

</div>

Je vais donc lister les possibilités:  
1 PowerOff vers Regarder la TV  
2 PowerOff vers Shield  
3 PowerOff vers HCPC  
4 PowerOff vers AirPlay  
5 Regarder la TV vers PowerOff  
6 Regarder la TV vers Shield  
7 Regarder la TV vers HCPC  
8 Regarder la TV vers AirPlay  
9 Shield vers PowerOff  
10 Shield vers Regarder la TV  
11 Shield vers HCPC  
12 Shield vers AirPlay  
13 HCPC vers PowerOff  
14 HCPC vers Regarder la TV  
15 HCPC vers Shield  
16 HCPC vers AirPlay  
17 AirPlay vers PowerOff  
18 AirPlay vers Regarder la TV  
19 AirPlay vers Shield  
20 AirPlay vers HCPC

Il y en a bien 20 et chacune d’entre elles demande des actions différentes suivant l’état précédent voici 2 exemple:  
Regarder la TV: Allume la TV l’ampli et la Bbox, HDMI2 sur TV et HDMI 5 sur ampli.  
Shield: Allume la TV l’ampli et la Shield, HDMI2 sur TV et HDMI3 sur ampli.

Comme vous le faite remarquer il faut éteindre le reste mais encore faut-il le définir, **les boutons de télécommande c’est du toggle** (si c’est éteint ça s’allume et inversement) d’où l’importance de savoir ce qui est allumé et donc l’état précédent.

Merci @+

---

<div class="post-metadata">

**Author:** ![Cloom](https://forum.hacf.fr/user_avatar/forum.hacf.fr/cloom/32/51762_2.png) [@Cloom](https://forum.hacf.fr/u/Cloom)\
**Post date:** [Juillet 22, 2024, 7:34 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/10 "2024-07-22T07:34:55Z")

</div>

> [@Alkynao](#):
>
> Comme vous le faite remarquer il faut éteindre le reste mais encore faut-il le définir, **les boutons de télécommande c’est du toogle** (si c’est éteint ça s’allume et inversement) d’où l’importance de savoir ce qui est allumé et donc l’état précédent.

Je pense qu’on est un peu perdu sur ce que tu veux faire 🙂

Peux-tu expliquer le but final? Peut-être il y a une meilleur solution que de regarder le dernier état d’une entité.

> [@Alkynao](#):
>
> Tout à fait possible le problème ici c’est le nombre de combinaisons possible.

C’est ta réponse à la proposition d’utiliser des trigger ID de @GDX2 mais si tu veux avoir les 25 cas possibles, il faudra que tu aies quelque part cette logique quoi qu’il arrive? As-tu un des cas que tu as présenté où il y a une logique très différente? Avec les template et les trigger ID des automatisations on peut faire des choses puissantes, maintenant il faut de la logique et c’est parfois compliqué de faire quelque chose qui puisse être modifié et qui fonctionne bien tout en étant lisible sans avoir fait un master en Jinja2 et Home Assistant 😃

> [@Alkynao](#):
>
> les boutons de télécommande c’est du toogle

Qu’entends-tu par là? Tu utilises une télécommande dans HA ou une télécommande physique?

Est-ce pour mapper les touches de ta télécommande en fonction de ce que tu fais sur ton système multimédia?

---

<div class="post-metadata">

**Author:** ![Bob](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bob/32/64908_2.png) [@Bob](https://forum.hacf.fr/u/Bob)\
**Post date:** [Juillet 22, 2024, 9:04 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/11 "2024-07-22T09:04:20Z")

</div>

Bonjour @Alkynao,

> [@Alkynao](#):
>
> si je passe HCPC à Shield que si je passe de Regarder la TV à Shield

Juste pour moi… qu’entends tu par HCPC et Shield 😊  
Bob

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 22, 2024, 9:23 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/12 "2024-07-22T09:23:04Z")

</div>

Shield =\> Box TV Nvidia Shield  
HCPC =\> Home Cinéma PC

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 22, 2024, 9:28 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/13 "2024-07-22T09:28:55Z")

</div>

Alors je souhaiterai que mes Scripts vérifie l’état précédent de l’entité.

A la place de ceci:

```auto
if:
  - condition: state
    entity_id: input_select.activitees
    state: PowerOff

```

Qui vérifie l’état actuelle de «&nbsp;input\_select.activitees&nbsp;», je souhaiterai quelque chose qui resemble au trigger d’une automatisation

```auto
trigger:
  - platform: state
    entity_id:
      - input_select.activitees
    from: PowerOff
    to: Regarder la TV

```

Merci

---

<div class="post-metadata">

**Author:** ![Bob](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bob/32/64908_2.png) [@Bob](https://forum.hacf.fr/u/Bob)\
**Post date:** [Juillet 22, 2024, 9:37 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/14 "2024-07-22T09:37:11Z")

</div>

> [@Cloom](#):
>
> Qu’entends-tu par là? Tu utilises une télécommande dans HA ou une télécommande physique?

Il serait important je crois de répondre à la question de @Cloom  
Si c’est depuis HA tu pourrais le faire avec une pseudo télécommande ou chaque bouton ferait appel à un script ou automatisation, 20 quand même mais ça donnerai quelque chose comme ça:

> [@Je recapitule le probleme + copies d'ecran](https://forum.hacf.fr/t/je-recapitule-le-probleme-copies-decran/44975/12):
>
> J’utilise aussi Node Red dans HA pour piloter mon Ampli par exemple et des animations lumineuses. Donc @patrickL, pour ce que tu veux faire, tu n’as pas besoins d’un dashboard Node Red, c’est mon avis, @jean-luc1203 confirmera je pense. Tu peux dans HA, créer des input\_button.monbouton, que tu pilotes via des button card par exemple, tu écoutes tes input\_button ou tout autres entités dans NR pour piloter tes appareils. Exemple de bouton qui sont, via les input\_button écoutés par Node Red pour…

Bob

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 22, 2024, 10:28 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/15 "2024-07-22T10:28:28Z")

</div>

J'utilise un RM4 Pro pour envoyé les commandes en IR depuis HA.

J'utilise des scripts pour les enchainements.

 ![HA](https://forum.hacf.fr/uploads/default/original/3X/f/6/f6785275a36ba5b00686509bb4bb823c7b6bda5f.jpeg)

---

<div class="post-metadata">

**Author:** ![Bob](https://forum.hacf.fr/user_avatar/forum.hacf.fr/bob/32/64908_2.png) [@Bob](https://forum.hacf.fr/u/Bob)\
**Post date:** [Juillet 22, 2024, 11:11 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/16 "2024-07-22T11:11:59Z")

</div>

Je ne connais pas le RM4 Pro mais ça semble assez large en utilisation.  
J’ai un Home Cinéma mais qu’appelles-tu un «&nbsp;Home Cinéma PC&nbsp;» ?  
Perso je ne suis pas pour la factorisation du code à outrance, c’est comme ça, comme je ne suis pas «&nbsp;Cloud&nbsp;», donc je partirai sur un script par cas + un pour tout OFF, après je n’ai pas du tout ton approche sur le pilotage, tout passe par mon Ampli et je pilote que la source puisque mon ampli associe déjà la source au bon HDMI et que toutes les fonctions de mon ampli sont accessible depuis Node Red par exemple.  
Mon approche : «&nbsp;Mieux vaut un peu de labeur que trop de prise de tête&nbsp;» 😇  
Bob

---

<div class="post-metadata">

**Author:** ![Cloom](https://forum.hacf.fr/user_avatar/forum.hacf.fr/cloom/32/51762_2.png) [@Cloom](https://forum.hacf.fr/u/Cloom)\
**Post date:** [Juillet 22, 2024, 2:07 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/17 "2024-07-22T14:07:24Z")

</div>

Petite note: le terme HTPC pour Home Theater Personal Computer est répandu alors que HCPC… je crois que ça n’existe pas, du moins ce n’est pas répandu.

Ces scipts que tu présentes c’est pour, par exemple, allumer la SHIELD (super produit d’ailleurs 😉 ) via Home assistant par l’intégration AndroidTV, allumer l’ampli Home Cinéma en passant par l’intégration broadlink ansi qu’allumer la TV via Broadlink aussi etc

Ton problème c’est que si tu dis à l’intégration broadlink de simuler la touche «&nbsp;power TV&nbsp;» c’est un toggle (on a pas une touche on et une touche off sur la télécommande de la TV.

Je rejoins @Bob sur simplifier le schmilblik, mais j’ai la même problèmatique, quand ma Shield allume bien la TV et le home cinéma quand je l’allume mais si j’ai éteint l’écran pour juste cast ma musique dessus, elle rallume pas l’écran quand je veux ensuite mater un film.

Pour faire ce que tu veux, il faut utiliser SQL et ton cas est exactement documenté:

> **[SQL](https://www.home-assistant.io/integrations/sql/#previous-state-of-an-entity)**
>
> Instructions how to integrate SQL sensors into Home Assistant.

Sinon tu peux utiliser la solution de @Bob :

> [@Bob](#):
>
> quand j’ouvre une fenêtre j’enregistre dans un input\_txt le preset\_mode de mon thermostat et je passe mon preset\_mode à away, quand je referme la fenêtre je remets dans le preset\_mode la valeur de l’input\_text.

Il n’y a pas, à ma connaissance, un moyen plus simple que la requête SQL pour obtenir le dernier état d’une entité.

---

<div class="post-metadata">

**Author:** ![Alkynao](https://forum.hacf.fr/user_avatar/forum.hacf.fr/alkynao/32/70785_2.png) [@Alkynao](https://forum.hacf.fr/u/Alkynao)\
**Post date:** [Juillet 23, 2024, 12:46 UTC](https://forum.hacf.fr/t/verifie-l-etat-precedent-d-une-entite-dans-un-scripts/45064/18 "2024-07-23T12:46:13Z")

</div>

Finalement j’ai contournée mon souci de script en créant une seconde entité activités renomé «&nbsp;activitées +10&nbsp;» mise à jour par l’automatisation qui lance mes scripts à t+10s, j’utilise donc la seconde entité dans mes scripts pour connaitre l’état précédent de l’entité activités (puisqu’elle se met à jour 10s après l’entité qui lance l’automatisation).

Merci pour votre aide.  
Bonne journée
