Détection de présence par beacon : partie 2

Dans l’article précédent https://easydomoticz.com/?p=3408 nous avions vu toute la partie préalable de la mise en place de détection de présence.

Voyons ici comment mettre en place la détection dans Domoticz.

Configurer le script

(Lisez les commentaires dans le script check_beacon_presence)

On peut adapter le niveau de log pour les tests et pour l’utilisation quotidienne en commentant/décommettant les lignes logLevel :
– Pour tester activez .DEBUG , le log de /var/log/check_beacon_presence.log est alors très bavard.

– Ensuite passez en .CRITICAL en commentant la première ligne

Domoticz et les variables

Rendez vous dans Domoticz et ajoutez une variable texte par beacon à gérer.

variables

Je vous conseille d’acheter des beacons de couleur différente pour chaque membre de la famille puis de nommer vos variables soit par couleur ou par prénom du possesseur, ou un mix des deux si vous avez deux fois la même couleur.

Par exemple

variables-texte

Adaptation du script

Ouvrez le script

Adaptez la partie URL_DOMOTICZ si vous ne travaillez pas en localhost ou avec le port par défaut

 

Descendez dans la partie des beacons et configurez les vôtres  sous la forme suivante dans  TAG_DATA : [Nom_de_la_variable_domoticz,MacAddress,Timeout,0,idx,mode]

  • Nom_de_la_variable_domoticz: C’est le nom EXACT de la variable texte de Domoticz, attention aux majuscules/minuscules !
  • macAddress : la Mac adress de ce beacon.
  • Timeout est le temps qu’il faut pour que le beacon soit considéré en AWAY (parti). Si le beacon émets toutes les 3 à 8 secondes , un bon timeout est  15 seconds. Pour définir cela utilisez les valeurs données par test_beacon.py voir plus haut).
  • – 0 : pas touche.
  •  l’idx Domoticz de cette variable texte, c’est le nombre en face du nom de la variable.
  • mode : SWITCH_MODE = une mise a jour unique lorsque le statut change / REPEAT_MODE = mise à jour continuelle de l’état toutes les 3 secondes

Second Test : Lançons le script à la main et voyons.

A l’écran des information s’affichent , le log se remplit à :

Vérifiez que vos variables texte sont mises à jour correctement en regardant leur contenu (AWAY ou HOME) et la date de mise à jour en fonction de ce que vous voyez passer à l’écran.

Repassez le debug à critical quand tout fonctionne et activons tout cela automatiquement en tant que service.

Installation du service

Troisième test

Lancez le service manuellement :

Vérifiez qu’il fonctionne par :

On peut y utiliser les commandes : start, stop, restart, status

Si le service est bien lancé activons le au boot du Raspberry

Démarrage du service automatique

Pour le supprimer du démarrage du Raspberry  :

Test final (avec le démarrage automatique activé)

Vous devez voir un « check_beacon_presence.py » quelque part

Utilisation dans Domoticz

Vous avez vu que ce sont des uservariables texte qui passent de AWAY à HOME, vous pouvez donc utiliser tous les moyens offerts par Domoticz pour exploiter cela à votre convenance (Lua, Blocky, API JSON…)

Exemple Lua

script_variable_autoArmAlarm.lua

 

D’autres exemples : https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640&start=100#p86310

Blocky

https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640&start=140#p86725

Références

Le topic du forum :https://www.domoticz.com/forum/viewtopic.php?f=28&t=10640
Une page de référence pour les beacons ble : https://www.beaconzone.co.uk/allbeacons
https://wiki.tizen.org/wiki/Bluetooth
https://storage.googleapis.com/google-code-archive-source/v2/code.google.com/pybluez/source-archive.zip => pybluez\examples\advanced\inquiry-with-rssi.py

Mémo d’autres commandes

Reset  de l’adapttateur bluetooth (hci0 dans cet exemple) :

Trouver une  MacAdress d’un beacon avec hcitool

 

Voila vous pouvez maintenant détecter les arrivées/départs de tous les membres de la famille, faites en bon usage.

big-brother-is-watching-you1

 

Pour toute question technique concernant cet article, veuillez utiliser les forum situés à https://easydomoticz.com/forum/
Posted in domoticz.

16 Comments

  1. Bonjour

    Merci pour ce super tuto.

    J’ai un petit pb avec la mise en place du service.

    pi@raspberrypi:~ $ sudo /etc/init.d/check_beacon_presence start
    [….] Starting check_beacon_presence (via systemctl): check_beacon_presence.serviceFailed to start check_beacon_presence.service: Unit check_beacon_presence.service failed to load: No such file or directory.
    failed!

    Avez-vous une idée ?

    Merci de  votre aide.

  2. Bonsoir
    Une idée ?
    Oui
    Regardes la dernière ligne , elle dit « no such file » donc pas de fichier
    A mon avis tu as raté au moins ca du tuto

    sudo wget https://raw.githubusercontent.com/jmleglise/mylittle-domoticz/master/Presence%20detection%20%28beacon%29/check_beacon_presence
    sudo mv check_beacon_presence /etc/init.d/
    sudo chmod 755 /etc/init.d/check_beacon_presence

    Essaye et dis nous si c’est OK

  3. Merci pour votre réponse.

    J’ai bien fait cette étape du tuto

    pi@raspberrypi:~ $ sudo /etc/init.d/check_beacon_presence

    Usage: /etc/init.d/check_beacon_presence {start|stop|restart|force-reload|status}

     

    Je pensai que cela pouvais venir du fichier check_beacon_presence.py.

    Mais il est bien dans le repertoire /usr/local/bin/

  4. le fait qu’il dise

    Usage: /etc/init.d/check_beacon_presence {start|stop|restart|force-reload|status}

    est plutot bon signe
    fais

    sudo /etc/init.d/check_beacon_presence start

    pour voir

  5. Bonjour Patrice

    Merci pour ce fabuleux tuto .

    J’ai bien suivie les étapes une à une jusqu’au moment ou, problème :

    Starting check_beacon_presence (via systemctl): check_beacon_presence.serviceFailed to start check_beacon_presence.service: Unit check_beacon_presence.service failed to load: No such file or directory.
    failed!

    le fichier est bien présent, les droits accordés mais comme notre ami « sjteddy » impossible de le lancer.

    Merci de toute aide apporté.

    Cordialement.

     

  6. Je me répond : ;-))

    Un simple reboot m’a permis de lancer le fameux « check_beacon ».

    Encore un énorme MERCI à Patrice pour ce superbe partage.

    Et une pierre de plus a Domoticz

  7. Bonjour,

    Merci pour ce super tuto que j’ai réussi à mettre en place mais mon nut 2 ne reste pas « éveillé », je dois appuyer longtemps sur le bouton de celui-ci pour le réveiller et là il est vu par mon PI 3, avez-vous rencontrer le problème ?

    Merci par avance
    Sylvain

  8. Bonjour,

    un grand merci pour ce tuto, qui devrait me faciliter la vie.
    Par contre j’ai le même soucis que Sylvain, mon nut 2 est visible uniquement lorsque j’appuie sur le bouton d’appairage, et cela durant 1 minute pile.
    Ai je raté une étape !?

     

    Merci d’avance pour votre aide, j’y suis presque mais pas encore.

  9. Bonsoir
    Je ne pense pas que tu ai raté qq chose, en ce qui me concerne le nut reste actif tout le temps.
    Est ce que c’est parce que je les ai reliés à mon/nos smartphone aussi via l’appli nut avec les jeux de clé de chacun/chacune ?

  10. Bonjour,

    merci pour ta réponse patrice, je viens d’appairer mon nut à mon smartphone, apparemment il répond présent à mon raspi depuis déjà 5 minutes, il semblerait que cela marche.
    Reste à voir combien de temps, et ce qu’il se passe si mon smartphone s’éloigne du nut.

    En tout cas merci pour ta réponse. Affaire à suivre…

  11. Bon, après plusieurs test, le problème semble être résolu.
    Meme si je coupe mon BT de mon smartphone, pas de soucis, le nut continue d’émettre pendant dèja 30minutes.
    Par contre j’ai un nouveau soucis  :/
    Impossible de lancer le script
    pi@raspberrypi:~$ sudo /etc/init.d/check_beacon_presence start
    [….] Starting check_beacon_presence (via systemctl): check_beacon_presence.serviceJob for check_beacon_presence.service failed. See ‘systemctl status check_beacon_presence.service’ and ‘journalctl -xn’ for details.
    failed!

    Si quelqu’un a une idée…

  12. J’ai trouvé, pour ceux qui ont fait la même erreur que moi.
    j’avais la première ligne du script vide, et en 2ème ligne #! /bin/sh
    Suffit juste de supprimer la 1ère ligne vide et d’avoir le #! /bin/sh à la place.
    tout simplement…

  13. Bonjour à tous et merci pour ce tuto,

    J’ai réussi toutes les étapes avec un NUT mini (qui est vraiment petit soit dit en passant 😉

    Je reste bloqué sur le démarrage automatique du service.

    Le démarrage manuel fonctionne correctement :
    pi@raspberrypi:~$ sudo /etc/init.d/check_beacon_presence start
    [ ok ] Starting check_beacon_presence (via systemctl): check_beacon_presence.service.

    Tout ce passe bien lorsque je saisi
    sudo update-rc.d check_beacon_presence defaults

    Mais après le reboot, le service n’est pas listé dans ps et le status est « étrange »…
    pi@raspberrypi:~$ sudo /etc/init.d/check_beacon_presence status
    ● check_beacon_presence.service - LSB: This daemon manages the bluetooth low energy device detector : check_beacon_presence.py
    Loaded: loaded (/etc/init.d/check_beacon_presence)
    Active: active (exited) since Sat 2017-01-14 13:37:05 CET; 1min 16s ago
    Process: 317 ExecStart=/etc/init.d/check_beacon_presence start (code=exited, status=0/SUCCESS)

    Jan 14 13:37:05 raspberrypi systemd[1]: Started LSB: This daemon manages the bluetooth low energy device detector : check_beacon_presence.py.
    Jan 14 13:37:07 raspberrypi sudo[509]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/local/bin/hciconfig hci0 down
    Jan 14 13:37:07 raspberrypi sudo[509]: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan 14 13:37:07 raspberrypi sudo[509]: pam_unix(sudo:session): session closed for user root
    Jan 14 13:37:07 raspberrypi sudo[526]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/local/bin/hciconfig hci0 up
    Jan 14 13:37:07 raspberrypi sudo[526]: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan 14 13:37:07 raspberrypi sudo[526]: pam_unix(sudo:session): session closed for user root
    Jan 14 13:37:07 raspberrypi sudo[541]: root : TTY=unknown ; PWD=/ ; USER=root ; COMMAND=/usr/local/bin/hciconfig
    Jan 14 13:37:07 raspberrypi sudo[541]: pam_unix(sudo:session): session opened for user root by (uid=0)
    Jan 14 13:37:07 raspberrypi sudo[541]: pam_unix(sudo:session): session closed for user root

  14. Bonjour, merci pour ce tuto.

     

    J’ai un soucis lorsque j’arrive au second test, je tape  la commande « sudo python /usr/local/bin/check_beacon_presence.py »

     

    Dans la console j’ai se méssage qui tourne en boucle

    Exception in thread Thread-4:
    Traceback (most recent call last):
    File « /usr/lib/python2.7/threading.py », line 810, in __bootstrap_inner
    self.run()
    File « /usr/lib/python2.7/threading.py », line 763, in run
    self.__target(*self.__args, **self.__kwargs)
    File « /usr/local/bin/check_beacon_presence.py », line 126, in request_thread
    logging.critical(‘ %s Request Failed %s – %s’ % (threading.current_thread(), e, url) )
    TypeError: __str__ returned non-string (type Error)

     

    Avez vous une idée?

    Merci

  15. Bonjour,

    Merci pour ce super tuto par contre je me demande comment connaître le niveau de batterie du NUT ?

    Merci par avance.

    Sylvain

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *