Créer un mode présence / absence dans Home Assistant

La première étape, selon moi, lorsque l’on début en domotique est assez simple : exécuter des actions automatiquement lorsque vous quittez ou arrivez à votre domicile. Aujourd’hui, je vais vous expliquer comme configurer 2 automatisations simples pour gérer un mode présence/absence dans Home Assistant.
Avant de commencer à exécuter des actions, il va tout d’abord falloir que l’on réussisse à savoir si vous êtes présents chez vous ou non. Nous allons donc configurer pour cela un device tracker. Il en existe plusieurs dizaines comme le Wi-Fi ou le bluetooth de votre smartphone, votre position GPS via Google Maps ou OwnTracks ou encore la localisation de votre voiture.
Configurer un device tracker
Je vous recommande dans un premier temps de commencer avec un tracking simple basé sur le Wi-Fi de votre téléphone. À l’utilisation vous verrez que ce n’est peut-être pas le plus fiable (surtout avec les smartphones récents qui coupent le Wi-Fi pour optimiser la batterie), mais c’est relativement simple à mettre en oeuvre.
Voici ce que l’on retrouve dans mon fichier configuration.yaml. Un device tracker avec mon routeur Netgear Orbi et Google Maps également.
device_tracker:
# Netgear Orbi
- platform: netgear
password: !secret orbi_pwd
host: 192.168.1.XX
port: 80
accesspoints: node
interval_seconds: 15
consider_home: 180
new_device_defaults:
track_new_devices: true
# Google Maps
- platform: google_maps
username: !secret email
password: !secret google_pwd
Après un redémarrage de Home Assistant (vérifiez bien votre configuration avant tout de même via le bouton disponible en back), un nouveau fichier va apparaitre avec la liste des appareils découverts : know_devices.yaml. On retrouve ainsi mon téléphone ainsi que celui de ma copine.
pixel3_wifi:
hide_if_away: false
icon:
mac: XX:XX:XX:XX:XX:XX
name: Pixel 3
picture:
track: true
oneplus7_wifi:
hide_if_away: false
icon:
mac: XX:XX:XX:XX:XX:XX
name: OnePlus 7 Pro
picture:
track: true
Parfait, maintenant nous allons devoir créer un groupe d’utilisateurs avec ces appareils. L’idée étant que si tous les appareils sont absents, alors cela signifie que la maison est vide. Dès que un appareil apparait à nouveau, quelqu’un est à la maison.
Créer un groupe d’utilisateurs
Copier simplement ce bout de code suivant dans votre fichier configuration.yaml. Bien entendu, adaptez la partie avec vos appareils en reprenant le nom que vous avez défini dans la partie know_devices.yaml.
group:
all_users:
name: all users
entities:
- device_tracker.pixel3_wifi
- device_tracker.oneplus7_wifi
J’ai donc un groupe qui se nomme « all users » qui tracke la connexion Wi-Fi du Pixel 3 et du OnePlus 7 Pro. Il nous reste plus qu’à créer deux automatisations pour gérer le mode présence/absence de la maison.
Automatisation : Mode présence
Le fonctionnement est simple : dès qu’un des appareils présent dans le groupe « all users » passe du statut « not_home » à « home », alors l’automatisation se déclenche, c’est ce qui va nous servir de trigger. Ajoutez le code ci-dessous dans automations.yaml.
- id: mode_presence
alias: Mode presence
trigger:
platform: state
entity_id: group.all_users
from: 'not_home'
to: 'home'
action:
- service: alarm_control_panel.alarm_disarm
entity_id: alarm_control_panel.somfy_home_alarm
#Macbook de Antoine
- service: switch.turn_on
entity_id: switch.XXX
#Macbook de Magali
- service: switch.turn_on
entity_id: switch.XXX
#Macbook de Magali
- service: switch.turn_on
entity_id: switch.XXX
#Envoi message Telegram
- service: notify.telegram
data:
message: 'Mode présence activé'
Dans mon cas, je désactive l’alarme Somfy et rallume mes prises connectées : MacBook Antoine, MacBook Magali et le bloc TV. Enfin, j’envoie une petite notification Telegram pour être averti que tout fonctionne bien dans un channel dédié. J’aurais pu aussi activer la ré-ouverture de mes volets, l’allumage de lumières, etc.
C’est simple mais ça fonctionne bien. Il faut environ entre 10 et 40 secondes pour que l’automatisation s’exécute !
Automatisation : Mode absence
Même chose maintenant avec le mode absence. On attend alors que TOUS les appareils du groupe « all users » soit considérés comme « not_home » pour déclencher l’automation.
- id: mode_absence
alias: Mode absence
trigger:
platform: state
entity_id: group.all_users
from: 'home'
to: 'not_home'
action:
#Alarme Somfy
- service: alarm_control_panel.alarm_arm_away
entity_id: alarm_control_panel.somfy_home_alarm
#Lumières
- service: light.turn_off
entity_id: group.all_lights
#Sonos
- service: media_player.turn_off
entity_id: media_player.salon
#Riva
- service: media_player.turn_off
entity_id: media_player.riva
#Macbook de Antoine
- service: switch.turn_off
entity_id: switch.XXX
#Macbook de Magali
- service: switch.turn_off
entity_id: switch.XXX
#Multimédia
- service: switch.turn_off
entity_id: switch.XXX
#Envoi message Telegram
- service: notify.telegram
data:
message: 'Mode absence activé'
Cette fois, je fais un peu plus de choses en activant l’alarme Somfy et en éteignant les lumières, enceintes connectées et les prises. La routine s’exécute généralement 2 à 3 minutes après mon départ de la maison.
Conclusion
Grâce à ce petit tutoriel, vous avez maintenant les bases pour gérer un mode présence/absence chez vous grâce à Home Assistant. Libre à vous ensuite d’ajouter des actions supplémentaires, des trackers supplémentaires pour améliorer la précision, etc.
De mon côté, je l’utilise depuis environ 1 mois et demi et je n’ai du avoir que 1 ou 2 faux positifs. Avant je me basais sur le système de Nest avec le Home/Away mais le délai, surtout au retour à la maison, était beaucoup plus long.
J’espère que ce tutoriel vous a plu. N’hésitez pas à me donner vos idées d’améliorations ou vos questions dans les commentaires. À bientôt !

Salut,
Merci pour cet article et ton blog, très enrichissant. Je débute aussi sous HA (je viens de Jeedom) et je dois manquer une subtilité entre le mode présence et absence.
L'automation du mode présence doit se déclencher dès qu'un appareil (le premier) est détecté, alors que le mode absence, lui, ne doit se déclencher que lorsque tous les appareils ne sont plus détectés.
Tu l'indique bien dans le texte, mais je ne vois aucune différence dans le fichier yaml.
Peux-tu m'éclairer ?
Merci
Salut Jopa,
C’est directement dans l’automatisation via le trigger sur le group. C’est HA qui gère la conditions que tu as décrite !
Si tu as un groupe, alors le premier qui apparait déclenche l’automatisation
Bonne journée
Bonjour,
Comment faites vous pour intégrer votre somfy home protect à home assistant svp ?
Bonjour,
Comment faites vous pour intégrer votre somfy home protect à home assistant svp ?
Hello, merci Antoine pour ce tuto que je vais tester de ce pas 😊. En terme de suggestion, savez-vous si l’on peut exploiter ces trackings pour définir des états « marche » « vélo » « voiture »?
Techniquement, c’est possible mais reste à avoir un capteur pour ces états. Genre par exemple le « marche », pas simple simple à obtenir. Peut-être via une app connectée à Home Assistant qui est sur le téléphone et remonte tes 3 états.. à creuser !
Hello, merci Antoine pour ce tuto que je vais tester de ce pas 😊. En terme de suggestion, savez-vous si l’on peut exploiter ces trackings pour définir des états « marche » « vélo » « voiture »?
Techniquement, c’est possible mais reste à avoir un capteur pour ces états. Genre par exemple le « marche », pas simple simple à obtenir. Peut-être via une app connectée à Home Assistant qui est sur le téléphone et remonte tes 3 états.. à creuser !
J’aurai souhaité mettre en place cela mais ma livebox n’est pas reconnue dans home assistant. Et vu que c’est du 100% Français j’ai bien peur qu’elle ne le soit jamais. Une idée ?
Il faut que tu utilises un moyen de détection au choix dans la liste suivante : https://www.home-assistant.io/integrations/#presence-detection
Je pense qu’il y a bien une solution possible (ex : la géolocalisation de ton téléphone).
Ne sachant pas trop comment elle fonctionne, j’ai peur que la géoloc me bouffe trop de batterie. Je pense passer par l’achat de NUT finalement…
C’est quoi ‘NUT’ stp ? :)
C’est un tracker GPS de très petite taille que tu peux glisser dans un portefeuille, une veste, un sac:
https://www.amazon.fr/Nut-Bluetooth-Télécommande-Localisation-Smartphone/dp/B01M4L7GHY
https://www.youtube.com/watch?v=rj7cbNvp3A8
A l’origine ça servait surtout à ne pas perdre son téléphone, son portefeuille, ou tout autre chose mais c’est souvent contourné en domotique en étant glissé dans le portefeuille pour permettre de savoir si oui ou non tu es chez toi.
Ca me semble un bon compromis dans tout ce qui existe.
Ok merci pour ta réponse ! a voir sur le plan autonomie..
Tu peux utiliser NMAP
nmap n’est pas la solution la plus fiable malheureusement
J’aurai souhaité mettre en place cela mais ma livebox n’est pas reconnue dans home assistant. Et vu que c’est du 100% Français j’ai bien peur qu’elle ne le soit jamais. Une idée ?
Il faut que tu utilises un moyen de détection au choix dans la liste suivante : https://www.home-assistant….Je pense qu’il y a bien une solution possible (ex : la géolocalisation de ton téléphone).
Ne sachant pas trop comment elle fonctionne, j’ai peur que la géoloc me bouffe trop de batterie. Je pense passer par l’achat de NUT finalement…
C’est quoi ‘NUT’ stp ? :)
C’est un tracker GPS de très petite taille que tu peux glisser dans un portefeuille, une veste, un sac:https://www.amazon.fr/Nut-B…élécommande-Localisation-Smartphone/dp/B01M4L7GHYhttps://www.youtube.com/wat…A l’origine ça servait surtout à ne pas perdre son téléphone, son portefeuille, ou tout autre chose mais c’est souvent contourné en domotique en étant glissé dans le portefeuille pour permettre de savoir si oui ou non tu es chez toi.Ca me semble un bon compromis dans tout ce qui existe.
Ok merci pour ta réponse ! a voir sur le plan autonomie..
Tu peux utiliser NMAP
nmap n’est pas la solution la plus fiable malheureusement
Bonsoir,
Super tuto mais étant débutant sous HASSIO et venant de Jeedom je rame un peu. Ayant en plus un iPhone j’ai l’impression que cela ne fonctionne pas tout a fait comme sous Android et donc déjà je rame pour activer l’option icloud sur HASSIO qui a priori à une bonne configuration vu que mon iPhone m’envoie bien un code à 6 chiffres mais HASSIO ne veux pas du code donc avant de jouer avec les présences c’est pas gagné ;-)
Je n’ai pas d’iPhone donc difficile de t’aider pour la partie iCloud. Tu peux éventuellement regarder sur la communauté, elle est assez active (en anglais) : https://community.home-assistant.io/search?q=iCloud
Merci pour ta réponse Antoine, je vais creuser un peu ;-)
Bonsoir,
Super tuto mais étant débutant sous HASSIO et venant de Jeedom je rame un peu. Ayant en plus un iPhone j’ai l’impression que cela ne fonctionne pas tout a fait comme sous Android et donc déjà je rame pour activer l’option icloud sur HASSIO qui a priori à une bonne configuration vu que mon iPhone m’envoie bien un code à 6 chiffres mais HASSIO ne veux pas du code donc avant de jouer avec les présences c’est pas gagné ;-)
Je n’ai pas d’iPhone donc difficile de t’aider pour la partie iCloud. Tu peux éventuellement regarder sur la communauté, elle est assez active (en anglais) : https://community.home-assi…
Merci pour ta réponse Antoine, je vais creuser un peu ;-)
Je rajouterai pour être exhaustif qu’il ne faut pas oublier de passer les devices que l’on souhaite tracker à true dans known_devices.yaml. Étant donné que track_new_devices est à false. Ayant suivi le tuto ça m’a bloqué un bout de temps :)
Article mis à jour (au cas où). Merci ! 😘
Je rajouterai pour être exhaustif qu’il ne faut pas oublier de passer les devices que l’on souhaite tracker à true dans known_devices.yaml. Étant donné que track_new_devices est à false. Ayant suivi le tuto ça m’a bloqué un bout de temps :)
Article mis à jour (au cas où). Merci ! 😘