Tu veux recevoir une alerte si une porte s’ouvre chez toi pendant ton absence, avec une photo prise automatiquement par ta caméra ? Voici comment mettre en place ce système avec Home Assistant, des capteurs Zigbee et l’application Companion sur Android.
Cet article fait partie de la série Domotique avec Home Assistant.
Prérequis : Home Assistant installé et accessible depuis l’extérieur via une URL sécurisée (https), Zigbee2MQTT opérationnel, application Home Assistant Companion installée sur ton téléphone Android, service d’envoi d’email déjà configuré dans HA (voir Détecter une coupure de courant avec Home Assistant).
Les capteurs d’ouverture de porte
Les capteurs d’ouverture Zigbee doivent être appairés et visibles dans Home Assistant avant de commencer. Si ce n’est pas encore fait, consulte l’article Étendre son réseau Zigbee dans Home Assistant qui couvre l’appairage et le maillage Zigbee.
Une fois appairés, chaque capteur expose une entité de type binary_sensor dans HA. Pour retrouver leurs identifiants exacts, va dans Paramètres > Appareils et services > Entités et filtre sur « contact ». Tu obtiendras des identifiants de la forme :
binary_sensor.ouverture_porte_a_garage_cote_nord_contact
binary_sensor.ouverture_porte_b_garage_cote_sud_contact
binary_sensor.ouverture_porte_c_entree_nord_contact
binary_sensor.ouverture_porte_d_vers_garage_contact
Note : certains capteurs bon marché (comme les MOES ZG-1027L utilisés ici) mesurent aussi la luminosité en plus de l’ouverture. Les deux fonctions coexistent sans se gêner – l’entité contact reste bien celle qui détecte l’ouverture.
Créer le groupe de capteurs
Plutôt que de surveiller chaque capteur individuellement dans l’automatisation, on les regroupe dans un seul capteur virtuel. Ce groupe passe à « activé » dès qu’une seule porte s’ouvre, et revient à « désactivé » quand toutes sont fermées. Ajouter une nouvelle porte plus tard se résume à ajouter une ligne dans ce groupe.
Va dans Paramètres > Appareils et services > Entrées, clique sur + Créer une entrée, puis choisis Groupe > Groupe binaire.
- Nom :
Groupe ouvertures surveillées - Membres : ajoute tes capteurs d’ouverture
- Option « Toutes les entités » : désactivée (logique « au moins un »)
Enregistre. HA crée automatiquement l’entité binary_sensor.groupe_ouvertures_surveillees.
Détecter la présence par téléphone
Créer l’entité Personne
Dans HA, va dans Paramètres > Personnes, crée une entrée pour chaque personne à suivre et associe-lui le téléphone correspondant. HA crée automatiquement une entité person.personne_1 qui passe à home ou not_home selon la position du téléphone.
Configurer l’application Companion
La détection de présence ne fonctionne correctement que si l’application est bien configurée. Deux points sont critiques.
L’URL du serveur : l’app doit pouvoir joindre HA aussi bien depuis le réseau local que depuis l’extérieur. Dans l’app, va dans ≡ > Paramètres > Companion app > Serveur et configure :
- URL de Home Assistant :
https://ha.ton-domaine.com(ton URL externe) - URL de connexion interne :
http://192.168.x.x:8123(l’IP locale de ton mini PC)
Si seule l’IP locale est renseignée, le téléphone perd le contact avec HA dès qu’il quitte le Wi-Fi maison et ne remonte plus aucune donnée – y compris sa position.
Les capteurs de localisation : dans ≡ > Paramètres > Companion app > Capteurs > Capteurs de localisation, active :
- Localisation en arrière-plan
- Zone de localisation
Sans ces deux options, HA ne reçoit aucune information de position.
Dans les paramètres Android, vérifie aussi que l’app Home Assistant dispose de la permission de localisation réglée sur « Toujours autoriser », et que l’optimisation de batterie est désactivée pour cette app.
Le capteur Wi-Fi comme filet de sécurité
La détection GPS peut être lente ou imprécise selon les conditions. On ajoute donc un deuxième critère : si le téléphone n’est plus connecté au Wi-Fi maison, on considère la personne comme absente.
L’entité à utiliser est sensor.telephone1_wi_fi_connection (remplace par l’identifiant correspondant à ton téléphone). Sa valeur est le nom du réseau Wi-Fi connecté (par exemple MON_RESEAU_WIFI) quand tu es à la maison, et <not connected> quand tu es dehors.
Pour activer ce capteur, va dans Paramètres > Appareils et services > Entités, recherche ton téléphone et active l’entité « Wi-Fi connection » si elle est désactivée.
L’automatisation
L’automatisation se déclenche quand le groupe de capteurs passe à « ouvert », à condition qu’au moins l’une des deux conditions suivantes soit vraie : person.personne_1 est not_home, ou le Wi-Fi du téléphone n’est pas le réseau maison.
Elle prend alors un snapshot de la caméra avec un nom horodaté, puis envoie un email avec la photo en pièce jointe.
Note sur la caméra : cette configuration fonctionne avec une caméra intégrée dans HA via l’intégration Tuya. Cette intégration cloud est limitée – elle ne permet pas l’enregistrement local continu ni la gestion avancée des flux vidéo. Le snapshot (photo statique au moment du déclenchement) est la seule action fiable disponible depuis HA avec ce type de caméra.
Le snapshot est sauvegardé dans le dossier /media du container Home Assistant. Ce dossier doit être mappé explicitement dans le docker-compose.yml de Portainer :
volumes:
- /home/USER/docker/home-assistant/config:/config
- /home/USER/docker/home-assistant/media:/media
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
Crée le dossier sur le mini PC avant de redémarrer le container :
mkdir /home/USER/docker/home-assistant/media
Va dans Paramètres > Automatisations, clique sur + Créer une automatisation, choisis Créer une automatisation vide, puis passe en mode YAML et colle le code suivant :
alias: "[home AL] Alerte ouverture en absence"
description: >-
Alerte si une porte s'ouvre alors qu'aucune personne autorisée n'est à la
maison. Automatisation : alerte_ouverture_absence_v2
triggers:
- entity_id: binary_sensor.groupe_ouvertures_surveillees
to: "on"
trigger: state
conditions:
- condition: or
conditions:
- condition: state
entity_id: person.personne_1
state: "not_home"
- condition: not
conditions:
- condition: state
entity_id: sensor.telephone1_wi_fi_connection
state: "MON_RESEAU_WIFI"
actions:
- variables:
snapshot_file: >
/media/alerte_ouverture_{{ now().strftime('%Y%m%d_%H%M%S') }}.jpg
- action: camera.snapshot
data:
filename: "{{ snapshot_file }}"
target:
entity_id: camera.ma_camera
- action: notify.email_alertes
data:
title: "[home AL] Ouverture détectée en absence"
message: >
Une porte ou fenêtre surveillée vient de s'ouvrir alors qu'aucune
personne autorisée n'est détectée à la maison.
Heure : {{ now().strftime('%d/%m/%Y à %H:%M:%S') }}.
(Automatisation : alerte_ouverture_absence_v2)
data:
images:
- "{{ snapshot_file }}"
mode: single
Adapte les identifiants suivants à ta configuration :
binary_sensor.groupe_ouvertures_surveillees: l’identifiant de ton groupe de capteursperson.personne_1: l’entité Personne de ton téléphonesensor.telephone1_wi_fi_connection: le capteur Wi-Fi de ton téléphone- MON_RESEAU_WIFI : le nom de ton réseau Wi-Fi maison
camera.ma_camera: l’identifiant de ta caméranotify.email_alertes: le nom de ton service d’email
Tester
Pour tester sans sortir de chez toi, désactive le Wi-Fi de ton téléphone. L’entité sensor.telephone1_wi_fi_connection passe alors à <not connected>, ce qui satisfait la condition d’absence.
Ouvre ensuite une porte surveillée. Tu dois recevoir un email avec la photo en pièce jointe dans les secondes qui suivent, et un fichier horodaté doit apparaître dans /home/USER/docker/home-assistant/media/.
Pour vérifier le détail d’une exécution, va dans Paramètres > Automatisations > [home AL] Alerte ouverture en absence > Historique des exécutions.
Ajouter un deuxième téléphone
Pour surveiller un deuxième téléphone, ajoute son entité Personne et son capteur Wi-Fi dans les conditions. L’alerte ne se déclenche que si les deux personnes sont absentes :
conditions:
- condition: or
conditions:
- condition: and
conditions:
- condition: state
entity_id: person.personne_1
state: "not_home"
- condition: state
entity_id: person.personne_2
state: "not_home"
- condition: and
conditions:
- condition: not
conditions:
- condition: state
entity_id: sensor.telephone1_wi_fi_connection
state: "MON_RESEAU_WIFI"
- condition: not
conditions:
- condition: state
entity_id: sensor.telephone2_wi_fi_connection
state: "MON_RESEAU_WIFI"
Pour aller plus loin
Retrouve tous les articles de la série Domotique avec Home Assistant et de la série Projets Ubuntu.
Commentaires récents