Créer une condition à l'aide l'historique d'un état

Bonjour,

Mon problème

Je souhaite lorsque je rentre dans ma zone geolocalisée via mon portable, déclencher une action de type script à la seule condition que j’ai été absent depuis 1h.
J’ai créé une automatisation avec un déclencheur smparthone qui dit que lorsque le portable rentre dans la zone il exécute l’action.

Mon problème c’est que la condition ne se réalise jamais car le changement d’état présent/absent dépend du même déclencheur smartphone.
En effet, au déclenchement de l’automatisation, l’état « personn.johndoe » passe à home et la condition si « personn.johndoe est absent depuis 1h » est toujours fausse, puisque le changement d’état s’effectue avant la vérification de la condition.

Vous auriez des idées sur comment contourner ce problème ?

Ma configuration


System Information

version core-2025.2.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.13.1
os_name Linux
os_version 6.6.73-haos
arch x86_64
timezone America/Guadeloupe
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
HACS Data ok
GitHub API Calls Remaining 5000
Installed Version 2.0.5
Stage running
Available Repositories 1596
Downloaded Repositories 2
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 14.2
update_channel stable
supervisor_version supervisor-2025.02.1
agent_version 1.6.0
docker_version 27.2.0
disk_total 30.8 GB
disk_used 5.5 GB
healthy true
supported true
host_connectivity true
supervisor_connectivity true
ntp_synchronized true
virtualization kvm
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.16.0), Mosquitto broker (6.5.0), Zigbee2MQTT (2.1.1-1), Z-Wave JS UI (3.20.0), File editor (5.8.0)
Dashboards
dashboards 3
resources 1
views 1
mode storage
Network Configuration
adapters lo (disabled), enp0s18 (enabled, default, auto), hassio (disabled), docker0 (disabled), veth26a1a2e (disabled), veth418c6bb (disabled), vethecb9125 (disabled), veth2bcb09d (disabled), veth71dffc2 (disabled), vethb622393 (disabled), veth44194b6 (disabled), vethd8478a8 (disabled), veth7ac7db5 (disabled)
ipv4_addresses lo (127.0.0.1/8), enp0s18 (192.168.1.18/24), hassio (172.30.32.1/23), docker0 (172.30.232.1/23), veth26a1a2e (), veth418c6bb (), vethecb9125 (), veth2bcb09d (), veth71dffc2 (), vethb622393 (), veth44194b6 (), vethd8478a8 (), veth7ac7db5 ()
ipv6_addresses lo (::1/128), enp0s18 (2a01:cb20:418c:5f00:99f1:5e83:bd8c:76a2/64, fe80::deff:7b62:9d9f:99dd/64), hassio (fe80::42:adff:fe3c:7110/64), docker0 (fe80::42:58ff:fe28:70b7/64), veth26a1a2e (fe80::1c67:64ff:fe14:ef21/64), veth418c6bb (fe80::fc4b:22ff:fe13:f3ad/64), vethecb9125 (fe80::8c39:5fff:fe08:2e40/64), veth2bcb09d (fe80::24c9:44ff:fe82:c507/64), veth71dffc2 (fe80::28d0:c2ff:fe3a:7ddb/64), vethb622393 (fe80::b43c:69ff:fe82:e2ca/64), veth44194b6 (fe80::1038:76ff:fe32:dfcb/64), vethd8478a8 (fe80::5c85:7cff:feb7:e413/64), veth7ac7db5 (fe80::f069:10ff:fecc:336f/64)
announce_addresses 192.168.1.18, 2a01:cb20:418c:5f00:99f1:5e83:bd8c:76a2, fe80::deff:7b62:9d9f:99dd
Recorder
oldest_recorder_run 2 février 2025 à 16:45
current_recorder_run 13 février 2025 à 21:26
estimated_db_size 28.28 MiB
database_engine sqlite
database_version 3.47.1

Bonjour,
pour résoudre ton problème il faut créer une nouvelle automatisation qui se lance dès que tu pars de chez toi (passage de home à not home) et lancer un timer ou un délai d’une heure puis aller mettre un input number (que tu auras créé avant) à 1.

à ton retour tu lanceras ta propre automatisation (not home vers home) avec en condition l’input_number soit à 1 au lieu « personn.johndoe est absent depuis 1h » tu lances tes actions et surtout en dernière action tu n’oublies pas de remettre l’input number à 0.

on fabrique, en fait, une mémoire temporaire.

n’hésites pas à publier tes automatisations pour y jeter un coup d’oeil et t’aider si nécessaire.

Salut,

ça fonctionne mais c’est lourd comparé à ce qui est déjà prévu directement !

trigger: state
entity_id:
  - person.xxxxxxxxx
to: not_home
for:
  hours: 1
  minutes: 0
  seconds: 0

Bonjour, si j’ai bien compris cela remplace ceci

merci de tes lumières.

ça remplace tout …
Un trigger unique, qui n’est déclenché qu’après une heure

Si j’ai bien compris la demande initiale c’est au retour qu’il veut déclencher l’action que s’il est parti plus d’une heure. c’est pour cela que je proposais une mémoire

OK, donc plus précisément :

description: ""
mode: single
triggers:
  - trigger: state
    entity_id:
      - person.xxxxxx
    to: not_home
    for:
      hours: 1
      minutes: 0
      seconds: 0
conditions: []
actions:
  - wait_for_trigger:
      - trigger: zone
        entity_id: person.xxxxxx
        zone: zone.home
        event: enter
    timeout:
      hours: 24
      minutes: 0
      seconds: 0
      milliseconds: 0
    continue_on_timeout: false

Le trigger ne se déclenche que quand on est parti depuis plus d’une heure.
Et la suite des actions (à remplir) ne se déroulent que si on revient (optionnellement en moins de 24H) grace à continue_on_timeout: false

1 « J'aime »

Merci @Pulpy-Luke ça a le mérite d’etre, on ne peut plus clair et simple, ici on apprend tous les jours. :ok_hand:

1 « J'aime »

Tu as raison de poser la question, c’est plus explicite au final

Bonjour,

Merci de m’apporter vos aides.

Compte tenu que je suis débutant (3 mois d’HA), ce code (yaml je suppose) je dois le mettre où dans HA ? Je demande pour être sûr, mais vous allez probablement me dire dans le fichier automations.yaml ?

Oui mais pas en mettant ça directement dans le fichier, tu risque de tout casser.

Tu crées une nouvelle automisation. Tu la laisses vide
Tu bascules en mode yaml (en haut à droite) et tu remplace tout pas ce bout d’exemple.
Et tu rebascules en mode UI

Et pour la suite tu fais comme d’habitude.

Penses à corriger les entités person et zone

Eh bien je dois dire que ce code fonctionne super bien.
C’est tout ce que je voulais. Et au passage j’ai appris comment insérer un code yaml dans l’interface UI.
Bon il reste me à comprendre sur HA, les concepts de variable temporaire, de template, apprendre la syntaxe de jinja2, les évènements, etc. Dans 6 mois, je devrais me sentir plus à l’aise.

Merci à tous pour vos lumières.
Bon je vais voir si je peux aider quelqu’un à mon tour le forum.
Bye

1 « J'aime »