Intégration domotique ESPresense, gratuite et open source

La présence pièce par pièce d'ESPresense : qui est dans quelle pièce, pièces occupées, nœuds.
La présence pièce par pièce dans Gladys avec ESPresense : un ESP32 dans chaque pièce mesure la distance Bluetooth de vos téléphones, montres et balises et la publie sur un broker MQTT. L'intégration lit ce broker et indique à Gladys qui est dans quelle pièce.
Développée sans le matériel, avec des messages au format exact du firmware et d'ESPresense-companion : vos retours sont les bienvenus.
Ce que vous obtenez
- Un appareil par téléphone, montre ou balise suivi, avec sa Pièce (le nom de la pièce, ou « Absent »), Dans une pièce (oui/non), Présence (pour l'action de scène « Vérifier la présence d'un utilisateur » de Gladys) et la Distance au nœud le plus proche en mètres.
- Un appareil par pièce : Occupée (oui/non), Appareils dans la pièce (un nombre) et Nœud en ligne (l'ESP32 de la pièce répond).
- Un déclencheur de scène, une action de scène et un widget (plus bas).
Seuls les appareils ajoutés dans Gladys comptent dans les pièces.
Avant de commencer
- Installez ESPresense sur un ESP32 par pièce (depuis espresense.com/firmware, dans le navigateur), connectez-le à votre Wi-Fi et donnez-lui son nom de pièce et le broker MQTT. Le broker installé par Gladys convient : ses identifiants sont sur la page MQTT de Gladys.
- Rendez vos téléphones reconnaissables. Un téléphone change d'adresse
Bluetooth toutes les quelques minutes : activez un émetteur Bluetooth (le
« BLE transmitter » ou l'iBeacon de l'application Home Assistant, par
exemple) ou donnez à ESPresense l'IRK d'un iPhone, puis donnez à
l'appareil un alias comme
phone:alice(voir la documentation d'ESPresense, ou la page de l'appareil dans ESPresense-companion). Les balises (iBeacon:…,tile:…) ont déjà un identifiant stable. - Vérifiez sur la page web ESPresense d'un nœud (son adresse IP) qu'il voit vos appareils.
ESPresense-companion
ESPresense-companion est un service facultatif qui place chaque appareil sur un plan par trilatération entre tous les nœuds. Quand il tourne sur le même broker, la pièce qu'il calcule prime sur le nœud le plus proche (option Utiliser ESPresense-companion, cochée par défaut). S'il s'arrête (son message de dernière volonté), l'intégration revient d'elle-même au nœud le plus proche.
Nommez ses pièces comme vos nœuds (Living Room et le nœud living_room) :
l'intégration les réunit dans la même pièce. Une pièce que seul le companion
connaît n'a pas de Nœud en ligne.
Configuration
- Adresse du broker :
mqtt://(port 1883) oumqtts://(port 8883), avec le nom d'utilisateur et le mot de passe si le broker les demande. L'intégration s'abonne seulement, sans jamais publier. - Préfixe des sujets :
espresense, sauf si vos nœuds publient ailleurs. - Distance maximale : plus loin de tous les nœuds, un appareil n'est dans aucune pièce.
- Marge avant de changer de pièce : un appareil ne quitte sa pièce que pour un nœud plus proche d'au moins cette marge, pour ne pas sauter d'une pièce à l'autre quand il est entre les deux.
- Absent après : durée sans qu'aucun nœud n'entende un appareil sous la distance maximale avant qu'il soit absent.
- Afficher les appareils anonymes : les adresses MAC seules
(
0a1b2c3d4e5f) et les empreintes d'annonces (md:…,ad:…,sd:…) changent ou sont partagées par beaucoup d'appareils : elles sont masquées de l'onglet Découverte sauf si la case est cochée. - Langue des textes : noms des fonctionnalités à l'ajout d'un appareil, texte « Absent », phrases des scènes et messages des actions.
Vérifier la connexion indique si le broker répond, combien de nœuds sont en ligne et combien d'appareils ils entendent.
Appareils et pièces
Ouvrez l'onglet Découverte de l'intégration : les pièces apparaissent dès
que leur nœud est en ligne, les appareils dès qu'un nœud les entend (ceux
entendus dans les 15 dernières minutes, 100 au plus). Ajoutez les pièces et
les appareils à suivre. Le nom d'un appareil vient de son alias
(phone:alice affiche le nom donné dans les réglages d'ESPresense) ;
renommez-le dans Gladys à votre guise.
La pièce d'un appareil suit le nœud le plus proche qui l'entend sous la distance maximale, avec la marge ci-dessus, ou la pièce d'ESPresense-companion. Les changements arrivent dans Gladys en deux secondes.
Présence d'un utilisateur Gladys
Chaque appareil suivi a une fonctionnalité Présence, celle qu'utilise la présence Bluetooth de Gladys : elle est « vue » quand l'appareil entre dans une pièce, puis toutes les 5 minutes tant qu'il y reste. Dans une scène, l'action Vérifier la présence d'un utilisateur de Gladys la relie à un utilisateur : choisissez l'utilisateur et cette fonctionnalité, et un délai de plus de 5 minutes (10 minutes pour commencer). L'utilisateur est alors marqué à la maison ou absent comme avec les autres sources de présence.
Scènes
- Appareil entré dans une pièce (déclencheur) : un appareil suivi est
entré dans une pièce, depuis une autre pièce ou en revenant. Choisissez
l'appareil et la pièce, ou laissez l'un ou l'autre vide pour tous. Les
actions suivantes lisent
{{triggerEvent.data.device_name}}et{{triggerEvent.data.room_name}}. - Où est un appareil (action) : la pièce d'un appareil suivi, en une
phrase prête pour un message (« Téléphone d'Alice est dans la pièce
Cuisine (1,2 m). ») et en valeurs (
present,room,distance). - « Pièce vide », « personne à la maison » ou « nœud hors ligne » : utilisez les fonctionnalités Occupée, Dans une pièce ou Nœud en ligne dans un déclencheur « état d'un appareil » de Gladys.
Tableau de bord
Le widget Pièces ESPresense liste les pièces ajoutées à Gladys, pièces occupées en tête, avec le nom des appareils qui s'y trouvent (10 pièces au plus). Le réglage Masquer les pièces vides ne garde que les pièces occupées.
Limites
- L'intégration n'utilise pas le Bluetooth elle-même : ce sont les nœuds.
- La distance est une estimation tirée du signal Bluetooth : murs, corps et
poches la modifient. Calibrez les nœuds dans ESPresense (
rx_adj_rssi, la référence à 1 m de chaque appareil) avant de régler les seuils ici. - Un téléphone sans alias, sans iBeacon ni application émettrice change d'adresse : il ne peut pas être suivi.
- Aucun ESP32 n'a servi au développement ; l'intégration a été testée contre un broker MQTT avec les messages du firmware et du companion.
Dépannage
- Aucune pièce dans la Découverte : vérifiez le préfixe des sujets et que les nœuds utilisent le même broker (Vérifier la connexion les compte).
- Un appareil manque : il est peut-être anonyme (voir l'option), ou pas entendu dans les 15 dernières minutes.
- Un appareil change trop souvent de pièce : augmentez la marge, ou baissez la distance maximale.
- Absent trop tôt : augmentez Absent après ; un téléphone en veille émet moins souvent.
- Journaux détaillés : réglez
LOG_LEVEL=debugsur le conteneur de l'intégration.
Paramètres de configuration
Voici les paramètres demandés par ESPresense dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Connecter ESPresense | section | Non | Les nœuds ESPresense (un ESP32 par pièce) mesurent la distance Bluetooth des téléphones, montres et balises et la publient sur un broker MQTT. L'intégration lit ce broker : elle s'abonne seulement, sans jamais publier. |
| Adresse du broker | string | Oui | Le broker où publient les nœuds : mqtt:// (port 1883) ou mqtts:// pour TLS (port 8883). Le broker installé par Gladys convient aussi : ses identifiants sont sur la page MQTT de Gladys. |
| Nom d'utilisateur | string | Non | Laissez vide si le broker accepte les clients anonymes. |
| Mot de passe | secret | Non | |
| Accepter un certificat auto-signé | boolean | Non | mqtts:// seulement : le certificat du broker n'est alors pas vérifié. |
| Préfixe des sujets | string | Non | espresense, sauf si vos nœuds publient ailleurs (pont, firmware modifié). |
| Pièces | section | Non | Sans ESPresense-companion, un appareil est dans la pièce du nœud le plus proche qui l'entend sous la distance maximale. Il n'en change que pour un nœud plus proche d'au moins la marge, et devient absent quand aucun nœud ne l'entend pendant le délai choisi. |
| Distance maximale | select | Non | Plus loin de tous les nœuds, un appareil n'est dans aucune pièce. |
| Marge avant de changer de pièce | select | Non | Évite qu'un appareil saute d'une pièce à l'autre quand il est entre les deux. |
| Absent après | select | Non | Durée sans qu'aucun nœud n'entende un appareil avant qu'il soit absent. |
| Utiliser ESPresense-companion | boolean | Non | Quand le companion tourne, sa pièce (trilatération sur le plan) prime sur le nœud le plus proche. |
| Afficher les appareils anonymes | boolean | Non | Les adresses MAC seules et les empreintes d'annonces changent ou sont partagées : masquées de la Découverte sauf si coché. |
| Langue des textes | select | Non | Noms des fonctionnalités à l'ajout d'un appareil, texte « Absent », phrases des scènes et messages des actions. |
Comment installer ESPresense dans Gladys
- Dans Gladys, ouvrez Intégrations : ESPresense apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/guim31/gladys-espresense:1.0.0), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-espresense.
ESPresense nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
ESPresense est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation