Hello,
J'utilise un raspberry PI3, qui a le BT d'intégré. Donc pas de clef BT nécessaire.
Pour ma part, la détection de présence est faite via un script python qui est hors Domoticz (démarré en service Linux, car il faut conserver les étas présence/absence de chaque tel/personne en continu, ce qui serait un peu pénible en Lua+variables utilisateurs pour conserver ces états d'un appel à l'autre du script... sans compter qu'un script time, c'est une périodicité non configurable de 1mn: trop long) et s'interface avec ce dernier via l'API HTTP, qui permet de remonter les états de présences individuelles et globale (au moins un présent, ce qui agit sur le security panel/alarme) dans des switchs virtuels Domoticz.
Les points auxquels il faut faire attention sont les suivants:
-Nombre d'essais consécutifs (partant d'un état présent, pour éviter les fausses infos d'absence si un tel n'est pas vu de trmps en temps car un peu loin/bouge) & timeout: Prévoir de les régler indépendamment pour chaque tel (pour ma part, un fichier YML a une section de configuration globale et par appareil BT pour ces paramètres ainsi que l'adresse MAC à chercher...), il faut expérimenter un peu...
-Périodicité des essais: Pour ma part, toutes les 10mn partant d'un état "présent" (auquel s'ajoutera le délai du security panel, 2mn, soit activation de l'alarme entre 2 et 12mn après un départ selon comment on tombe) pour ne pas vider les batteries... et toutes les 20s si absents (peut dépendre du nb de tel a checker en boucle/retry configurés): Le BT semble saturer si on fait trop de scan par unités de temps, menant à des détections ne se faisant pas si trop d'essais trop proches.
Je ne fait pour ma part pas une inclusion BT totale, mais des scans. C'est à la fois une faiblesse (sécurité: une adresse MAC est à considérer comme une info publique pour qui est en capacité de l'écouter passivement à proximité) et une force (essayer un appairage complet de plusieurs appareils, avec gestion des retry, sur une boucle de 20s ca ne marche pas... Il faudrait sans doute 1mn ou plus, inutilisable, ca sonnerait à chaque fois qu'on rentre alors que là on est parfois topé devant le portillon, le plus souvent avant de passer la porte d'entrée... et toujours avant d'être à porté du 1er PIR placé un peu en retrait: Cela permet d'écouter si le message d’accueil, via synthèse vocale espeak, pour le possesseur du tél détecté passe tardivement... on attends alors qq secondes avant d'avancer de 2m et être à portée PIR).
Le 1er problème se limite en vérifiant d'autre(s) info(s) liées à l'appareil, pas forcément aisément anticipables par un attaquant malin qui aura spoofé une adresse MAC bluetooth.
Mais c'est aussi ce qui m'empêche de publier un script complet prêt à utiliser... qui gagnerait sans doute à devenir un plugin pour installation automatique des switch en dépendance côté Domoticz etc. Car ca marche bien, mais c'est manuel et sans l'avoir fait soit-même ca peut être un peu difficile. Par contre, c'est stable depuis 1an 1/2 et ajouter un tél c'est une modif du fichier texte yml de config et redémarrer le service...
Le coeur de la détection utilise le module python "bluetooth" et sa fonction bluetooth.lookup_name(MAC, TIMEOUT).