C’est la rentrée et afin de travailler mon anglais, je vous propose ici la traduction d’un article tiré du wiki anglophone et écrit par un de nos contributeurs français : jml. Merci de son autorisation de traduction.
Cet article détaille donc la mise en place de la détection de présence via des « beacons » ces petit capteurs bluetooth low energy que l’on peut attacher à nos clés de voiture, ou à nos enfants pour ne pas les perdre.
Voici le lien du forum ou l’annonce de son tuto est faite https://easydomoticz.com/forum/viewtopic.php?f=17&t=2047
et le le lien du wiki https://www.domoticz.com/wiki/Presence_detection_%28Bluetooth_4.0_Low_energy_Beacon%29
Je reprends éhontément les images issues du wiki.
But
Faire de la détection de présence d’un ou plusieurs beacon via BlueTooth Low Energy V4.0 dans Domoticz afin de savoir si le porteur du beacon en question est à proximité. Ainsi on pourra armer/désarmer les alarmes Domoticz en testant la présence/absence du/des beacons ou bien d’autres choses.
La présence d’un ou plusieurs beacons sera testée par un script qui affecte une valeur à une variable Domoticz.
Ce script possède 2 modes de fonctionnement. On peut choisir pour chaque beacon le mode préféré
- REPEAT MODE : Pour un beacon à portée, le script met à jour la variable Domoticz à « HOME » toutes les 3 secondes suivant la puissance du signal RSSI, sinon c’est « AWAY » qui est mis dans la variable.
- SWITCH_MODE : Pour un beacon à proximité la variable est mise à « HOME » seulement une fois, sinon c’est « AWAY » .
La détection est vraiment rapide (moins de 10 secondes), ensuite la présence/absence est vérifiée toutes les 5 secondes par comparaison à l’heure de la dernière présence de chaque beacon
Nous aurons donc besoin d’une variable de type string par beacon.
Puis des scripts Lua, Blocky ou autres pourront donc tester la valeur de la variable pour déclencher des actions Domoticz.
Matériel
Ce tuto à été réalisé à l’aide d’un Raspberry Pi.
La clé USB Bluetooth BLE.
Les beacons utilisant bluetooth il faudra une clé USB Bluetooth 4.0 compatible avec le PI.
J’utilise celui ci : http://www.amazon.fr/SODIAL-Adaptateur-Bluetooth-Dongle-Ordinateur/dp/B00L317IL4/277-2648083-3402713?ie=UTF8&redirect=true&ref_=pe_386181_37038081_TE_3p_dp_1
– https://www.amazon.co.uk/gp/product/B00XTU53A0/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1
– Plugable USB-BT4LE adapter: http://plugable.com/products/usb-bt4le (uses BCM20702 chipset)
– CSR chipset adapter http://www.amazon.co.uk/Version-Bluetooth-Adapter-Compatible-Windows/dp/B00A0CBOTE
Beacon
Ce type de beacon fonctionne correctement :
Vous les trouvez pour environ 10€
– http://www.aliexpress.com/item/New-Nut-2-update-Nut-3-Nut-mini-Smart-Finder-Itag-Bluetooth-WiFi-Tracker-Locator-Luggage/32477579557.html
– http://www.aliexpress.com/item/2015-Nut-2-Smart-Tag-Bluetooth-Tracker-Child-Pet-Key-Finder-Locator-Alarm-for-iphone-Android/32477066584.html
– http://eu.banggood.com/Wholesale-Warehouse-Mini-Smart-Patch-Alarm-Tag-Bluetooth-GPS-Tracker-Locator-For-iPhone-Android-etc-wp-Uk-988462.html
La présence est détectée en 4 à 8 secondes. L’absence est décidée en moins de 15 sec quand le tracker s’éloigne et tombe hors de portée.
La clé USB SODIAL BLE détecte à 12m (en vue directe) ou à 2 étages.
– http://www.banggood.com/Mini-Smart-Patch-Alarm-Tag-Bluetooth-GPS-Tracker-Locator-For-iPhone-Android-etc-p-988462.html
– https://www.amazon.co.uk/gp/product/B014P9VK5K/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
Ils ne fonctionnent pas :
Je n’ai pas réussi à les faire fonctionner. Ils arrêtent d’émettre lorsque ils sont déconnectés de leur téléphones.
– http://www.banggood.com/Sfd-p-985626.html .
– http://www.banggood.com/Bluetooth-4_0-Self-Portrait-Remote-Control-Anti-Lost-Electronic-Finder-p-974320.html
– http://www.banggood.com/Wifi-Smart-Bluetooth-4_0-Tracker-GPS-Locator-Tag-Alarm-Anti-lost-Device-GPS-Track-for-iPhone-Android-p-1028944.html – TI SensorTag
Le bluetooth avec bluez et sans blues 🙂
Il nous faudra bluez pour le bluetooth
Bluez nécessite un kernel > 3.5
Un petit
sudo apt-get update sudo apt-get install -y libusb-dev libdbus-1-dev libglib2.0-dev libudev-dev libical-dev libreadline-dev
Et BLE à besoin d’un bluez >5.3
Vérifiez la version avec un
apt-cache policy bluez
Vérifiez la dernière version ici : http://www.kernel.org/pub/linux/bluetooth/ (et changez les numeros de versions en conséquence ). La compilation prends aux alentours de 20 minutes, il faudra rebooter ensuite.
sudo mkdir bluez cd bluez sudo wget "http://www.kernel.org/pub/linux/bluetooth/bluez-5.39.tar.xz" sudo tar -xJf bluez-5.39.tar.xz cd bluez-5.39 sudo ./configure --disable-systemd sudo make sudo make install sudo apt-get install python-bluez python-requests sudo cp attrib/gatttool /usr/local/bin/ sudo shutdown -r now
TODO check the right of gatttool. (set execution right chmod +x ?)
Premier Test
Pour être sur que la clé USB Bluetooth est bien reconnue, lancez un
lsusb
On voit apparaitre une ligne Cambrige Silicon Radio:
Bus 001 Device 002: ID 0424:9514 Standard Microsystems Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. Bus 001 Device 004: ID 04d8:f55e Microchip Technology, Inc. Bus 001 Device 005: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC Bus 001 Device 006: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode)
Bien, l’adaptateur USB est sur le Bus 001 Device 006.
Pour en savoir plus prenez le numéro ID 0a12: et faites
sudo lsusb -v -d 0a12:
Il y a quelques pages de caractéristiques qui s’affichent.
lancez maintenant hciconfig.
hci0: Type: BR/EDR Bus: USB BD Address: 00:1A:7D:DA:71:11 ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:2772 acl:0 sco:0 events:120 errors:0 TX bytes:1109 acl:0 sco:0 commands:91 errors:0
on voit que l’adaptateur Bluetooth est sur hci0, si cela n’était pas le cas vous devez adapter les scripts python dont il est question ci-dessous avec votre configuration.
Récupérez les fichier test_beacon.py et check_beacon_presence.py ici https://raw.githubusercontent.com/jmleglise/mylittle-domoticz/master/Presence-detection-beacon/test_beacon.py
ou copiez/collez dans votre terminal :
sudo wget https://raw.githubusercontent.com/jmleglise/mylittle-domoticz/master/Presence-detection-beacon/test_beacon.py
sudo python test_beacon.py
Cela lance la détection des beacons à proximité.
Il FAUT noter la MAC Address et la fréquence à laquelle le beacon émet , nous en aurons besoin pour la suite.
Si j’ai un conseil, si vous avez plusieurs beacons, mettez les en route un par un, pas tous ensemble, et notez pour chacun sa MAC address.
pi@domoticz ~ $ sudo ./test_beacon.py 2016-09-23 11:30:24,859 - root - DEBUG - Ok hci0 interface Up n running ! 2016-09-23 11:30:24,861 - root - DEBUG - Connect to bluetooth device 0 2016-09-23 11:34:22,639 - root - DEBUG - New Beacon c0:1d:75:4a:68:80 Detected 2016-09-23 11:34:26,494 - root - DEBUG - Tag c0:1d:75:4a:68:80 is back after 3 sec. (Max 3). RSSI -90. DATA (-128,) 2016-09-23 11:34:45,792 - root - DEBUG - Tag c0:1d:75:4a:68:80 is back after 19 sec. (Max 19). RSSI -89. DATA (-128,) 2016-09-23 11:35:01,236 - root - DEBUG - Tag c0:1d:75:4a:68:80 is back after 15 sec. (Max 19). RSSI -92. DATA (-128,) 2016-09-23 11:35:12,823 - root - DEBUG - Tag c0:1d:75:4a:68:80 is back after 11 sec. (Max 19). RSSI -93. DATA (-128,)
Installer le script
sudo wget https://raw.githubusercontent.com/jmleglise/mylittle-domoticz/master/Presence-detection-beacon/check_beacon_presence.py sudo mv check_beacon_presence.py /usr/local/bin/ sudo chmod 755 /usr/local/bin/check_beacon_presence.py
Vous avez bien travaillé : rendez vous bientôt pour la suite de la configuration : https://easydomoticz.com/?p=3442
Bonjour,
Idée intéressante, mais les liens d’achat de Beacons semblent plutôt vers 15-20€ pièce que 5 €. A 20€ par membre de la famille, ça fait un petit budget..
Est-ce qu’il existerait des RFID « longue distance » qui seraient détectés lors du passage dans un couloir ?
Bonsoir
Oui en effet pour le prix c’est plus pres des 10 que des 5€ , j’ai corrigé.
http://eu.banggood.com/Wholesale-Warehouse-Mini-Smart-Patch-Alarm-Tag-Bluetooth-GPS-Tracker-Locator-For-iPhone-Android-etc-wp-Eu-988462.html
Mon expérience est que dans une maison récente en construction tradi (briques, pas plaques de plaques) le bluetooth porte à 10 metres en traversant 4 murs de 8cm sans aucun soucis
Est-ce que ce tuto/ces manips sont facilement adaptable sur Windows ?
Sinon, quitte à être dans la dizaine d’€, ce type de bracelet connecté pas cher devrait faire le job:
http://www.geekbuying.com/item/Original-Xiaomi-Miband-1S-2015-Xiaomi-IP67-Bluetooth-4-0-Smartband-Fitness-Bracelet-for-Android4-4-Xiaomi-Redmi-Note-2-Mi4-Mi3—iOS-Phones—Black-357888.html?source=ShareAsale
Pour ma part, j’ai également implémenté une det de présence sur un PI3 (merci le BT intégré!), via un script python perso faisant également des vérifications au delà de la simple présence à portée d’une MAC bluetooth (comptant m’en servir pour désactiver des scénarios alarme, je me suis dit qu’un truc interrogeant en permanence qq MAC connues sans autre vérif était trop aisément spoofable) notifiant Domoticz.
Pour l’instant c’est les téléphones mobiles parents qui sont détectés, ca a l’air fiable après qq jours d’essais… Et je suis à la recherche d’une solution pour les enfants, qui n’ont pas de téléphone (malgré leurs demandes répétées!) en raison de leur jeunesse!
Ca reste en fait moins cher que les solutions à base de lecteur de tag RFID Z-Wave (étant déjà équipé de ce type de modules et du controleur associé), tout en étant avec mon implémentation amha un peu plus sûr (et transparent, sans oubli possible): La plupart des lecteurs RFID utilisent des versions absolument pas sécurisées de tags qui peuvent être dumpées d’un simple passage à proximité puis imitées par beaucoup de smartphones actuels.
Combiné au fait qu’il n’y a besoin que de spoofer un ID + un tag accroché à un porte clef, on imagine immédiatement à quoi il sert contrairement à une montre connectée (+ de la liberté pour checker d’autres paramètres qu’une MAC).
Bref, le tag RFID j’ai lâché l’affaire… et BT c’est trop cher vs bracelet connecté. Les deux ayant pour moi le défaut d’être immédiatement vus comme un système de controle d’accès par qqun de mal intentionné.
Bonjour,
Il semble que le script test_beacon.py ne soit plus disponible en ligne. Si vous l’avez conservé, serait-il possible de le mettre en ligne par ailleurs, ou d’en retranscrire ici le contenu ?
Merci d’avance
Bonsoir
Je viens de contacter l’auteur du script …
A suivre
Bonsoir
ils ont en effet été déplacés
ici
sudo wget https://github.com/jmleglise/mylittle-domoticz/blob/master/Presence-detection-beacon/test_beacon.py
sudo wget https://github.com/jmleglise/mylittle-domoticz/blob/master/Presence-detection-beacon/check_beacon_presence.py
L’article du blog à été modifié en conséquence
Merci de l’info
Et surtout merci pour la rectification ! 🙂
bonjour,
j’ai essaye de reproduire ce tuto avec mon raspi 3 et un nut 3 mais j’ai pas l’impression qu’il est detecte correctement (je n’ai que 4 devices qui n’ont rien a voir quand je fait lsusb… pourtant via l’interface graphique de rasbpian pixel je trouve bien mon « nut »)
ps: desole pour le manque d’accents : j’utilise un clavier us…
Bonjour, en lançant le script test_beacon.py , mon pi3 me dit qu’il y a une erreur dans le script ??? est ce que ça fonctionne chez quelqu’un avec un pi3, sachant que pour moi toutes les manip de préparation n’ont pas à être faites puisque le PI3 a le Bluetooth sous blueZ.
Merci
Je suis également sous Raspi3 avec un NUT mini et j’ai le même problème que « Robert » à savoir après avoir fait « lsusb » 4 devices dont aucun qui se rapporte au Bluetooth (normal puisque aucune cl bluetooth mais un bluetooth intégré au Rasp3.
Idem également que « Phebus06 » j’obtient l’erreur suivante :
File « test_beacon.py », line 5
<!DOCTYPE html>
^
SyntaxError: invalid syntax
après avoir fait « sudo python test_beacon.py »
Si une bonne âme à un tuto détaillé pour la marche à suivre sous Raspi3 …..
bonjour donc
Si le script te dit qu’il y a une ligne en ligne 5, pourrait tu me dire ce qu’il y a en ligne 5 ?
Parce que dans le fichier d’orgine https://github.com/jmleglise/mylittle-domoticz/blob/master/Presence-detection-beacon/test_beacon.py
en ligne 5 pas de DOCTYPE …
refais un copier coller de ce fichier dans le tien
et dis nous ce qu’il en est
Bonjour
Tu sais que avec l’erreur en question cela aurait été plus facile …
Merci Patrice pour la réponse rapide, désolé je ne l’avais pas vu immédiatement.
En ligne 5 jai :
# Author: jmleglise
Je pense qu’il s’agit donc de bon script, pour l’erreur, je ne l’ai plus pour le moment car j’avais mis l’installation en stand-by après avoir refait une installation propre de mon RPI3 suite à des problèmes de perte de connexion Wifi lorsque j’activais la connexion Bluetooth simultanément. Le problème du Wifi / Bluetooth étant semble t’il résolu (il s’agissait apparemment d’une alimentation un peu faible pour alimenter le tout en simultané, OUTPUT à 2A au lieu de 2,5A, j’ai mis une alimentation 5V avec un OUTPUT de 3A et changer ma carte micro SD par une plus compatible et de meilleur facture « Samsung EVO classe 10 »)
Je vais me re-pencher prochainement plus sérieusement sur l’installation de la détection de présence par NUT en suivant ton excellent TUTO.
Bon là je crois avoir tout essayé :
Coller le texte du fichier en différents format txt sans balises HTML dans le fichier du RPI3 = Impossible (accès refusé) via FileZilla
Supprimer le fichier du RPI3= impossible action refusé
Changer les droits d’accès du fichier = Impossible
Editer le fichier via un éditeur python pour Windows et le recopier sur le RPI3 = Se recopie toujours avec ajout de balises HTLM
Bonjour
OK, j’ai compris,c’est depuis le changement de github
il faut donc faire un
sudo wget https://raw.githubusercontent.com/jmleglise/mylittle-domoticz/master/Presence-detection-beacon/test_beacon.py
J’ai modifié l’article
Merci et désolé du temps passé à galérer
Merci Patrice, aucun soucis pour le temps passé à galérer pour moi, au contraire si cela peux en aider d’autres par la suite, merci pour la modification, je testerais cela prochainement car je ne suis plus chez moi durant quelques jours.
Sinon, je pense qu’il y’aura également le même problème avec le fichier « Presence-detection-beacon » car j’ai également des balises HTML dessus exactement comme le fichier « test_beacon.py »
Laisser un commentaire
oui
j’ai aussi modifié le lien
Super tuto, je l’avais réalisé il y a quelques mois mais c’est maintenant qu’il prend tout son intérêt. Le fiston a le nut accroché à son jeu de clé et nous avons droit à un mail de départ et d’arrivée à la maison, maman est rassurée ! J’ai dû utiliser le script temporisé du forum pour avoir pour le moment 1 fiabilité à 100% de détection.
Bonjour,
Concernant le module nut (beacon), est ce qu’il se met en veille au bout d’un certain temps? faut il penser à l’activer (réveiller) avant de rentrer chez soi?
Merci pour vos retours
Bonjour
Oui il se met en veille sauf si tu as installé l’appli sur ton smartphone qui te permet de localiser le nut, cela le maintient reveillé
Bonjour,
Super tuto. J’utilise maintenant cette installation au quotidien. Mon système de surveillance prend une photo de la porte d’entrée dès lors que celle-ci s’ouvre et qu’aucun beacon n’est détectée auparavant (autrement dit : c’est un intrusion !).
Par contre petit soucis : a priori dès que le beacon est connectée à un appareil (par exemple un smartphone), il n’est plus détectable par le script…
C’est dommage car ça veut dire que le beacon est constamment visible par tous et n’importe qui peut le connecter à son smartphone…
Vous avez une solution pour éviter ça ?
Merci !!