Détection de présence par Bluetooth BLE sur eedomus
Souhaitant optimiser les règles régissant mon habitation en fonction des occupants qui s’y trouvent, je souhaitais pouvoir détecter la présence individuelle de chacun des membres de la famille.
Une méthode souvent employée dans ce cas est la détection de présence d’objets Bluetooth Low Energy (BLE) comme des trackers d’activité, des boutons BLE, des beacons, … Ces derniers en particulier existent sous différentes formes (porte-clé, élément à coller), ils sont petits et facilement transportables.
Malheureusement l’eedomus n’est pas (encore ?) compatible BLE. La détection sera donc réalisé par un appareil externe (serveur, raspberry pi) et les informations fournies à l’eedomus.
Installation du détecteur
J’ai utilisé le plugin « Presence detection« , prévu initialement pour domoticz afin de réaliser la fonction détection bluetooth.
Ce plugin est indépendant de domoticz et ne nécessite pas l’installation de ce dernier. Il s’installe sur tout système fonctionnant sous Linux : serveur linux, synology, raspberry pi, etc… Dans mon cas je l’ai installé dans une machine virtuelle Ubuntu 16 dédiée domotique.
Il est bien sûr nécessaire d’avoir une interface bluetooth sur ce système linux. Un dongle bluetooth BLE avec chipset CSR est la solution recommandée car largement compatible et très peu chère. Pour ma part j’ai acheté ce modèle ci pour 5,83€.
L’installation du dongle est à réaliser correctement de façon à optimiser la portée de détection :
- Le bluetooth fonctionne dans la même bande de fréquence que le Wifi, il est donc préférable de l’éloigner de tout élément wifi (routeur, box adsl, …).
- Je conseillerai de l’installer au bout d’une rallonge USB de façon à pouvoir le positionner de façon optimale.
- Comme tout élément RF, il est souhaitable que le câble possède une ferrite de filtrage permettant d’éviter que des perturbations générées par le serveur n’arrivent jusqu’au dongle bluetooth.
J’ai personnellement utilisé un câble USB fourni initialement avec un dongle USB Wifi, sur lequel j’ai rajouté une ferrite. Trois tours de câble dans la ferrite permet d’améliorer l’efficacité de filtrage.
Je ne vais pas décrire l’installation du plugin Presence Detection, car la page consacrée a une description détaillée de l’ensemble de la procédure. Cette description est bien faite, elle inclut les spécificités particulières aux différentes plateforme sur laquelle vous pouvez l’installer. Je le redis, Domoticz n’a pas besoin d’être installé, les informations spécifiques à domoticz ne sont donc pas à prendre en compte. La partie Autorun est également à mettre en fonctionnement. Pour ubuntu 16 c’est la méthode 2 d’Autorun qui doit être appliquée.
L’installation se serait passée sans encombre de mon côté si j’avais appliqué méthodiquement les instructions, elles sont en effet complètes et claires. En réalité, j’ai sauté quelques lignes … et puis j’ai du revenir en arrière.
Nous reviendrons un peu plus tard sur la configuration spécifique à appliquer dans le script pour l’eedomus. Pour le moment il faut configurer cette dernière pour recevoir les informations.
Préparation de l’eedomus
Pour chaque périphérique BLE à détecter, il est nécessaire de créer un périphérique virtuel de type Actionneur http.
Cette actuateur doit pouvoir prendre deux valeurs : « HOME » et « AWAY ».
Configuration du script pour eedomus
L’API domoticz n’est pas si éloigné de celle de l’eedomus, et le script est suffisamment configurable pour s’adapter facilement à l’eedomus.
Tout se passe au niveau de la variable « URL_DOMOTICZ » qui est à changer en ligne 37 avec le contenu suivant :
URL_DOMOTICZ = 'http://LOCAL_IP_OF_EEDOMUS/api/set?action=periph.value&api_user=YOUR_USER&api_secret=YOUR_SECRET_KEY&periph_id=PARAM_IDX&value=PARAM_CMD'
LOCAL_IP_OF_EEDOMUS, YOUR_USER et YOUR_SECRET sont à remplir avec vos informations personnelles. La mise à jour des données de présence est envoyée directement vers la box eedomus sur le réseau local .
Configuration des périphériques BLE
Tous les appareils Bluetooth ont une adresse MAC. Parfois elle change dans le temps mais la majorité des objets bluetooth ont une adresse fixe. Par ailleurs beaucoup d’objets BLE émettent régulièrement des trames indiquant leur présence il s’agit donc de détecter ces trames pour détecter la présence de l’objet.
La configuration des objets à détecter est réalisé dans le script à partir de la ligne 53 :
Chaque objet est indiqué sur une ligne du tableau avec les paramètres suivants :
["Nom_de_l_objet", Adresse_Mac, Tempo, 0, Id_Periph_Virtuel, SWITCH_MODE]
- Nom_de_l_objet : nom indicatif (pas utilisé par la box eedomus)
- Adresse_Mac : Adresse MAC de l’objet BLE à détecter
- Tempo : délai de non détection avant de faire passer le statut de Home à Away
- Id_Periph_Virtuel : ID du périphérique virtuel eedomus qui a été créé au préalable
L’adresse MAC de l’objet peut être déterminée en utilisant le script spécifique fournit avec ce plugin et disponible ici : Presence Detection, First step.
Il existe également un certains nombre d’applications pour smartphone plus ou moins fonctionnelles, comme celle-ci : Android Bluetooth LE Scanner
Test d’objets BLE
J’ai testé pour le moment le fonctionnement avec les objets suivants :
Ticatag Tibe connect (beacon BLE)
Portée d’environ 10 mètres en intérieur au même étage. Les signaux BLE traversent difficilement les dalles en béton, on ne détecte donc pas les objets BLE à un autre étage.
Misfit flash (tracker d’activité)
Portée vraiment très faible de moins de 2 mètres, pour cette raison il ne peut pas servir pour la détection de présence à l’échelle d’une maison mais pour des zones très localisées
Beacon iTAG (beacon BLE )
Portée d’environ 10-15 mètre en intérieur. Les signaux BLE traversent difficilement les dalles en béton, on détecte difficilement l’iTAG à un autre étage.
Conclusion
Ce script dédié initialement à Domoticz s’utilise facilement avec l’eedomus. La détection de multiples objets BLE est possible tant que celui-ci a une adresse MAC fixe et qu’il émet régulièrement des signaux.
Une fois ce système de détection mis en place il vous sera possible de mettre en place différentes règles permettant par exemple de passer automatiquement votre logement en mode « Absence ».
Bonjour,
Pensez-vous que ce script serait utilisable pour un smartphone iPhone ? En effet, mon épouse utilise un iPhone. Je souhaiterais que mon système domotique détecte sa présence. Des règles devront s’executer par la suite.
De mon côté, je suis sur Android et j’utilise avec bonheur Tasker. Peut-être auriez-vous une autre solution pour IOS
Merci.
Emmanuel
Bonjour, Malheureusement non ce script ne permet pas de détecter la présence d’un smartphone. Par défaut ce type d’appareil n’émet pas de signal Bluetooth (sauf lorsqu’il est en mode appairage). L’iphone se connecte t’il à votre réseau WiFi personnel ? Si oui il est possible de lui affecter une adresse IP fixe et d’utiliser la fonction ping de l’eedomus. Cela reste cependant aléatoire car suivant le smartphone et sa configuration le Wi-Fi est coupé en veille ou pas.
salut et merci pour la R&D :p
perso, j’utilise les smartphones apres les avoir mis en ip fixe. la portée est plus longue.
Bonjour,
Oui j’utilise également le smartphone avec Tasker pour ma femme et moi ( voir article http://www.vrdigitalworld.com/smarthome/localisation-avec-eedomus-part-1-cote-smartphone).
Par contre mes enfants n’ont pas (encore) de smartphone. Dans ce cas la détection BLE me semble une bonne méthode.
Il est également possible de détecter la présence d’objets ou d’animaux, personnellement les TiBE sont fixés dans mes véhicules.