PebbleBee Honey et domotique

Étiquettes:

pebblebee_smallLes PebbleBee Honey sont de petits tags Bluetooth 4.0 Low Energy qui sont commercialisés par une startup créée par deux ingénieurs de Boeing. J’ai acheté les miens (un pack de 5) grâce à la campagne Kickstarter et les ai reçu en octobre 2014, avec l’intention de les utiliser d’une part normalement (retrouver son trousseau de clefs…) mais aussi en domotique (détection de présence avec FHEM).

PebbleBee Honey

Dans la boite

Chaque PebbleBee Honey est livré avec :

  • une petite clef en plastique destinée à ouvrir le compartiment de pile (ne la perdez pas, vous en aurez besoin souvent !)
  • un adhésif double-face permettant de coller le tag sur une surface plane
  • un anneau de couleur ou fluorescent permettant de personnaliser le tag

PebbleBee Honey boite et éléments

La boite, un PebbleBee, son sticker et sa clef

Caractéristiques et utilisation de base

pebblebee

Le modèle que j’ai acheté est le plus basique : un bouton, une LED et c’est tout. Les autres modèles ont des capteurs supplémentaires.

Fonctionne sur piles de type 2430 (accepte 1.8V à 3V). C’est le gros point faible de la solution : la durée des piles est donnée pour aller jusqu’à 5 ans, mais de l’expérience générale, elle est très décevante (je n’ai personnellement pas dépassé 2 mois).

En principe les tags sont étanches, mais je n’ai pas testé (certains retours indiquent même que ça ne supporte pas de rester dans une buanderie …)

A l’heure actuelle, une application iphone et une application Android sont disponibles. Je ne rentrerai pas dans le détail de leur fonctionnement, qui est détaillé dans cette vidéo. A priori elles marchent de mieux en mieux mais il vaut mieux un OS très récent car les fonctions Bluetooth 4 des OS plus anciens sont parait-il très buggées. Une application Windows Phone devrait être disponible plus tard.

La campagne kickstarter promettait les applications Android et iOS en open-source mais rien à l’horizon pour l’instant. Le support m’a indiqué qu’il y avait encore trop de changements dans l’API et les sources.

Sur 5 tags, j’en ai un en panne qui n’est pas reparti au changement de pile. Le support me propose de le renvoyer : je vais voir si ça vaut le coup avec les frais de port pour les US … [EDIT 16/7/15] Je l’ai renvoyé pour quelques euros et en ai reçu un tout neuf, de la deuxième série (la batterie tient toujours en janvier 2016…).

Aide-mémoire

    • Reset : enlever les piles
    • Eteindre (pour économiser la pile) : appuyer 5 s sur le bouton, jusqu’au simple beep
    • Allumer : appuyer 5 s sur le bouton, jusqu’au double beep
    • Si ça ne beep pas, c’est que la pile est morte ! Quand on la remplace, il y a un simple beep quand le jus renvient.
    • Pour économiser la pile, éviter de faire beeper depuis l’application. Il y a aussi moyen de régler la fréquence d’émission du dispositif pour le rendre plus économe (recommandé !):
      • dans le mode HIGH (High Performance), le PebbleBee envoie un broadcast toutes les secondes,
      • dans le mode MED (Medium Performance), toutes les secondes pendant 5 secondes puis recommence après 10s d’inactivité,
      • dans le mode LOW (Low Performance), toutes les secondes pendant 5 secondes puis recommence après 20s d’inactivité

Durée de vie de l batterie (toute théorique, on est bien loin de ça dans les faits)

Test de présence Bluetooth 4.0 Low Energy (BLE) avec FHEM

Le nécessaire

Une machine Linux avec un dongle Bluetooth 4.0 et le logiciel serveur domotique FHEM

Remarque : Même si ça a l’air faisable dans l’absolu (bluez with simultaneous classic and low energy devices), il ne sera pas possible d’utiliser ce dongle Bluetooth 4.0 à la fois pour faire des tests de présence bluetooth « classique » (comme décrit dans cet article de Sébastien Joly) et des tests de présence BLE (comme décrit ci-après). Il est toutefois possible d’utiliser deux clefs Bluetooth, une pour chaque usage.

Configuration Linux

Il est préférable d’avoir une version récente de la stack Bluetooth BlueZ : on la compilera donc. Voir  le paragraphe Installing blueZ on the Raspberry Pi dans l’article très intéressant iBeacon Raspberry Pi Scanner in Python

Si on veut installer d’autres utilitaires (e.g. gattool), lancer la commande install dans le répertoire des sources blueZ :

$ sudo /usr/bin/install -c attrib/gatttool /usr/local/bin/gatttool

Tester le fonctionnement de son dongle et d’un PebbleBee

Trouver l’identifiant de device de son dongle Bluetooth :

$ sudo 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:161652 acl:9 sco:0 events:4793 errors:0
      TX bytes:7307 acl:2 sco:0 commands:449 errors:0

hci0 est l’identifiant à utiliser par la suite.

Initialiser le dongle bluetooth :

$ sudo hciconfig hci0 down

$ sudo hciconfig hci0 up

Lancer la commande de scan BT4 :

$ sudo hcitool -i hci0 lescan --duplicates
LE Scan ...
0E:0A:14:09:12:34 (unknown)
0E:0A:14:09:12:34 PebbleBee

Défile alors la liste de tous les devices bluetooth 4 qui broadcastent leur présence dans les airs. On reconnaît notre PebbleBee dont on note l’adresse …

Le module FHEM

Voici la configuration qui fonctionne maintenant chez moi (sur une ibox (cubieboard 2) sous Debian) après quelques tâtonnements

Préalable

Les commandes hcitool et hciconfig demandent à être exécutées en root. On va devoir modifier la configuration de sudo de manière à permettre à l’utilisateur fhem de les utiliser.

$ sudo visudo

La fin du fichier doit avoir cette tête :

# Cmnd alias specification
Cmnd_Alias BT4=/usr/local/bin/hciconfig,/usr/local/bin/hcitool,stdbuf -oL -eL hcitool lescan --duplicates
# See sudoers(5) for more information on "#include" directives: %dialout ALL=(ALL) ALL
fhem ALL=NOPASSWD:BT4

Le module FHEM

Vieille méthode (tuto initial)

(Sauter ce paragraphe pour la méthode up to date; celui-ci n’est là que pour mémoire…)

justme1968 a modifié le module PRESENCE en ajoutant une nouvelle option « local-PRESENCED » qui permet de se mettre en attente des broadcasts Bluetooth 4 identifiés. Pour l’utiliser il faut télécharger les modules modifiés 97_PRESENCE.pm et 97_PRESENCED.pm sur le forum FHEM (attention, risque d’être écrasé par une nouvelle version de 97_PRESENCE.pm)

PRESENCED permet de définir quelle est la ou les commandes Linux à utiliser pour faire le scan Bluetooth 4. J’ai eu un peu de mal à trouver le bon réglage, au moyen de deux commandes :

  1. je fais d’abord un reset de l’interface bluetooth (hci0) car lors d’un arrêt/relance de FHEM elle ne se relance pas bien
  2. je lance ensuite la commande donnée par Steffen sur le forum pour fiabiliser le résultat donné par PRESENCE (j’avais des bagottements présent/absent alors que le PebbleBee envoyait bien ses notifications de manière régulière).

define pd PRESENCED sudo hciconfig hci0 reset ;; sudo stdbuf -oL -eL hcitool lescan --duplicates

Puis on définit chaque tag bluetooth 4 avec son adresse :

define mes_clefs PRESENCE local-PRESENCED 0E:0A:14:09:12:34 60 120
attr mes_clefs event-on-change-reading state

define fileLog_mes_clefs FileLog /var/log/fhem/clefs_maison-%Y.log mes_clefs.*

Nouvelle méthode (plus simple)

Il est possible maintenant d’utiliser le module standard PRESENCE dans le mode lan-bluetooth. Il va interroger un petit démon lepresenced qui lui-même se met en écoute des broadcasts bluetooth LE.

On peut télécharger presenced sur  http://forum.fhem.de/index.php/topic,28753.msg333802.html#msg333802 et l’installer dans /opt/fhem/ puis changer ses droits :

# chmod +x /opt/fhem/lepresenced

Puis installer une librairie perl prérequise :

# apt-get install libnet-server-perl

On peut le lancer tel quel ou utiliser les options :

usage:
 --bluetoothdevice <bluetooth device> --listenaddress <listen address> --listenport <listen port> --daemon
 -b <bluetooth device> -a <listen address> -p <listen port> -d
example:
 lepresenced --bluetoothdevice hci0 --listenaddress 127.0.0.1 --listenport 5333 --daemon

Voici un script de démarrage à mettre dans /etc/init.d si vous souhaitez lancer le script en tant que service au démarrage de la machine : fhem-ble (il faut le rendre exécutable puis passer la commande update-rc.d fhem-ble defaults pour l’activer )

Le device bluetooth LE se définit maintenant comme ça dans FHEM :

define mes_clefs PRESENCE lan-bluetooth 0E:0A:14:09:12:34 localhost:5333 60

Reste à régler

Comme les batteries ne tiennent pas la charge, il faut régler le mode de performance à LOW avec l’application mobile, en attendant de pouvoir le faire par API. Je vais recontacter le support pour qu’ils m’envoient les API gatt

Un peu de lecture

PebbleBee

BLE

 FHEM et BLE