Détection de présence avec HomeKit et Home Assistant
Sans accès distant à ma box domotique, j'utilise HomeKit et l'app Maison pour détecter la présence de chacun et la remonter dans Home Assistant.
Comme indiqué dans l'article décrivant ma box domotique, nous n'avons pas accès à la box domotique à distance et, par conséquent, nous n'utilisons pas la localisation de l'application mobile Home Assistant. Une solution simple et fiable consiste à passer par HomeKit, à l'aide de l'application Maison, depuis nos iPhone.
⚠️ Cet article a été publié initialement en 2022 et le mécanisme décrit ci-dessous est désormais déprécié. L'action device_tracker.see, qui fait le lien entre HomeKit et Home Assistant, sera supprimée avec la version 2027.5 ; elle génère déjà un avertissement dans les journaux. Le remplaçant officiel est le device tracker de type template, disponible depuis la version 2026.6. Le principe général reste valable, mais il vous faudra adapter les exemples à votre version.
Prérequis
- Un iPhone sous iOS 11 ou supérieur
- Un concentrateur HomeKit : HomePod, HomePod mini, Apple TV ou iPad laissé branché en permanence
- Home Assistant avec l'intégration HomeKit configurée
Pour gérer la présence d'autres personnes, il suffit de les inviter et de partager le contrôle de votre domicile.
Configuration sur Home Assistant
Dans un premier temps, il va falloir créer un input_boolean pour chacune des personnes dont vous souhaitez suivre la présence (en remplaçant xxx par le prénom de la personne, par exemple) :
input_boolean:
presence_at_home_xxx:
name: xxx à la maison
icon: mdi:account
Si vous n'utilisez aucun device_tracker, vous pouvez l'activer en ajoutant cette ligne à votre fichier de configuration :
device_tracker: []
Nous allons maintenant ajouter l'automatisation qui fera la liaison entre l'input_boolean (HomeKit) et le device_tracker (Home Assistant).
Pour gérer la présence d'une seule personne :
automation:
- description: Homekit to Device Tracker
alias: homekit_to_device_tracker
id: be7d19d0-0671-464c-9a45-01d7af3f854c
mode: queued
max: 10
trigger:
- platform: state
entity_id: input_boolean.presence_at_home_xxx
- platform: homeassistant
event: start
action:
- service: device_tracker.see
data:
dev_id: homekit_presence_at_home_xxx
location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx', 'on') else 'not_home' }}"
Pour gérer la présence d'au moins 2 personnes (à adapter pour davantage de personnes) :
automation:
- description: Homekit to Device Tracker
alias: homekit_to_device_tracker
id: be7d19d0-0671-464c-9a45-01d7af3f854c
mode: queued
max: 10
trigger:
- platform: state
entity_id: input_boolean.presence_at_home_xxx1
id: presence_at_home_xxx1
- platform: state
entity_id: input_boolean.presence_at_home_xxx2
id: presence_at_home_xxx2
- platform: homeassistant
event: start
id: homeassistant_start
action:
- if:
or:
- condition: trigger
id: presence_at_home_xxx1
- condition: trigger
id: homeassistant_start
then:
- service: device_tracker.see
data:
dev_id: homekit_presence_at_home_xxx1
location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx1', 'on') else 'not_home' }}"
- if:
or:
- condition: trigger
id: presence_at_home_xxx2
- condition: trigger
id: homeassistant_start
then:
- service: device_tracker.see
data:
dev_id: homekit_presence_at_home_xxx2
location_name: "{{ 'home' if is_state('input_boolean.presence_at_home_xxx2', 'on') else 'not_home' }}"
Ces deux automatisations sont des alternatives : n'en conservez qu'une seule, elles partagent le même identifiant.
Si vous filtrez les entités que vous envoyez sur HomeKit, n'oubliez pas d'ajouter les input_boolean de gestion de présence :
homekit:
name: Home Assistant
filter:
include_entity_globs:
- input_boolean.presence_at_home_*
Vous pouvez à présent redémarrer Home Assistant et vérifier que le ou les interrupteurs correspondants ont bien été créés !
Configuration sur Maison
Répétez les opérations pour chacune des personnes dont vous gérez la présence. Dans les étapes qui suivent, « touchez » sur iPhone et iPad correspond à « cliquez » sur Mac.
Gestion de l'arrivée d'une personne
- Dans l'application Maison, accédez à l'onglet Automatisation. Touchez le bouton + en haut à droite, puis sélectionnez Ajouter une automatisation
- Touchez Des personnes arrivent
- Dans Quand, touchez Quelqu'un arrive et ne choisissez qu'une seule personne. Laissez le Lieu sur Domicile et l'Heure sur Tout, puis touchez Suivant en haut à droite
- Sélectionnez l'interrupteur xxx à la maison, puis touchez Suivant
- Réglez l'interrupteur sur Allumer
- Touchez OK
Gestion du départ d'une personne
- Dans l'application Maison, accédez à l'onglet Automatisation. Touchez le bouton + en haut à droite, puis sélectionnez Ajouter une automatisation
- Touchez Des personnes partent
- Dans Quand, touchez Quelqu'un part et ne choisissez qu'une seule personne. Laissez le Lieu sur Domicile et l'Heure sur Tout, puis touchez Suivant en haut à droite
- Sélectionnez l'interrupteur xxx à la maison, puis touchez Suivant
- Réglez l'interrupteur sur Éteindre
- Touchez OK
Chaque automatisation dispose d'un bouton Tester l'automatisation : appuyez dessus pour observer le changement d'état de l'interrupteur et du device_tracker dans Home Assistant. Une fois le fonctionnement validé, vous pouvez rattacher le device_tracker à la personne concernée (Settings ➔ People).

Conclusion
J'utilisais déjà cette méthode sur Jeedom et nous n'avons jamais eu le moindre problème de géolocalisation. Cette solution me sert pour beaucoup d'automatisations, comme l'activation de l'alarme ou l'extinction des lumières quand la maison est vide.