Bluetooth en domotique IOT – Mais comment ça marche

Alors en ce lundi rose, bleu ou noir je ne sais pas. En effet je rédige cet article avant le résultat du premier tour des élections. Aujourd’hui je vais mettre un premier pied dans une explication qui devrait en intéresser plus d’un et qui devrait être à minima explicative pour d’autres. Il s’agit du Bluetooth en domotique IOT. Oui c’est un nouveau concept que je viens d’inventer. Il s’agit ici des objets connectés communiquant en Bluetooth et pouvant s’interfacer en domotique. Alors ce thème pourra fournir un ensemble d’articles “ludo-instructifs”. Oui je m’appelle Ludovic et j’aime bien présenter les choses de façon ludique.

Bluetooth en domotique

Ben quoi c’était marrant comme jeu de mots !!!

Le Bluetooth en domotique

Le Bluetooth

Bluetooth en domotique

Alors le Bluetooth commence à prendre une place de plus en plus grande dans la domotique. Et selon moi ce n’est que le début. Il y a plusieurs raisons à cela :

  • le coût
  • la consommation
  • la quantité d’objets

La plus importante selon moi est le coût du Bluetooth. En effet c’est probablement avec le Zigbee un des protocoles où le ticket d’entrée pour un fabricant d’objets connectés est le moins cher. Ensuite le Bluetooth est en effet un des protocoles de communication qui consomme le moins. C’est bien  pour cela que les oreillettes, les kits mains libres etc … utilisent celui-ci. Et le dernier point que j’ai cité est la quantité d’objets, celui-ci découle directement des deux autres. En effet mettons nous à la place d’un constructeur d’un objet, il peut pour quasiment pas grand chose et sans pénaliser la consommation de son objet le transformer en un objet connecté. Pourquoi se priver ? Bon j’ai un petit message personnel pour ces fabricants :

“OK ça coûte pas cher, ça consomme pas, mais ce n’est pas une raison pour ne pas investir sur une équipe de développement”

Bluetooth en domotique

Et oui le gros point noir c’est que très (TROP) souvent on a des applications presque inutilisables pour ces objets. Oui un développeur coûte bien plus cher qu’une puce Bluetooth. Mais selon moi un objet connecté doit avoir les deux choses suivantes :

  • la connectivité
  • de quoi utiliser le potentiel de cette connectivité

Le Bluetooth en domotique

Pour en revenir à la domotique, il était dommage de ne pas pouvoir profiter du nombre incalculable d’objets connectés Bluetooth en effet on retrouve de tout :

  • des brosses à dents
  • des cafetières
  • même des bouilloires
  • des ampoules
  • des prises
  • certains afficheurs
  • des trackers de présence ou d’activités
  • etc …

Et je pense qu’avec l’arrivée du Bluetooth 5.0 ce n’est pas près de s’arrêter. J’ai ouïe dire qu’un plugin côté Jeedom s’était déjà attaqué à ce chantier. Il s’agit en effet du plugin BLEA (vous pouvez découvrir ce plugin sur cet article ICI)

Bluetooth en domotique

Oui bon d’accord c’est moi qui l’ai développé

Mais je tiens à vous dire qu’il est juste un début de ce qui est réalisable et qu’il va se peaufiner. En effet il y a encore pas mal de cas particulier qui peuvent poser soucis, être bloquant et du coup rendre la chose moins fiable. Mais ce n’est que le début j’ai en effet beaucoup d’idées de refonte, d’améliorations et d’innovations pour tenter tant bien que mal de rester précurseur sur cette révolution.

Bon passons à la suite, car l’idée de l’article est de commencer à mettre un pied pour vous tous sur la compréhension du fonctionnement d’un objet connecté Bluetooth.

Comment ça marche le Bluetooth en domotique

Alors j’annonce tout de suite, pour ce premier article je vais rester volontairement sur des analogies. Mon but ici n’est pas de vous copier coller des extraits de Wikipedia ou d’articles techniques du net, mais bien de vous permettre d’appréhender cela avec mes mots à moi et mes comparaisons.

Bluetooth en domotique

Pour commencer je vais séparer le Bluetooth en deux grandes familles :

  • le Bluetooth serial
  • le Bluetooth LE ( Low Energy)

Le premier est beaucoup utilisé sur d’anciens objets Bluetooth et encore beaucoup aujourd’hui sur les objets comportant une enceinte. Pour ce premier article nous allons nous consacrer EXCLUSIVEMENT sur le Bluetooth LE.

Le Bluetooth LE

Le Bluetooth LE pour LOW ENERGY est apparu en 2010, il est en grande partie responsable de la démocratisation des objets connectés Bluetooth.

L’advertising

Sa grande particularité est de signaler sa présence par une trame rayonnante (envoyée en continu dans la plupart des cas) sans action aucune sur l’objet lui même (dans la plupart des cas). C’est ce qu’on appelle l’advertising. Pour vous faire une analogie l’advertising en Bluetooth c’est un peu comme un borne wifi qui rayonne son SSID en permanence et que n’importe qui peut voir. Généralement dans cet advertising on retrouve des infos telles que :

  • un identifiant du produit
  • le RSSI (on y reviendra car ce n’est pas vraiment ça)
  • la marque
  • et éventuellement des données

Le Rssi et la distance

Le RSSI (Received Signal Strength Indication) comme son nom l’indique permet d’avoir une idée de la puissance du signal reçu.

Du coup si c’est lié au signal reçu, l’objet connecté ne peut pas l’envoyer. Puisque selon qui recevra sa trame, la puissance du signal reçu ne sera pas la même

Bluetooth en domotique

Sur le schéma ci-dessus où l’objet connecté est assimilé au centre du dessin, il est évident que quelqu’un au point B recevra un signal plus fort que quelqu’un au point A. C’est la raison pour laquelle j’ai précisé au dessus que ce n’est pas vraiment le RSSI qui est envoyé par l’objet connecté. Celui-ci se contente d’envoyer ce qu’on appelle le Tx, qui est en fait sa puissance d’émission. En effet c’est la seule chose qu’il connaît. Ensuite ce sont les différents récepteurs qui vont se dire :

“AHHH OK je viens de recevoir une trame qui a été envoyée avec une puissance de 150, je l’ai reçue avec une puissance de 50. J’en déduis donc que le signal a perdu 100. OK donc le RSSI est TOTO”

J’ai volontairement pris des nombres sans sens pour juste vous schématiser la cinématique. Donc vous l’aurez compris le RSSI est déduit par le récepteur à partir d’une info dans la trame.

Bluetooth en domotique

Oui Barack ?

Du coup c’est comme ça qu’on connaît la distance entre l’objet et le récepteur ?

Excellente remarque Barack. Un jour tu seras Président. Je vais expliquer ce point.

Alors comme vous l’avez compris le RSSI donne une indication sur l’atténuation qu’a subit le signal avant d’arriver. Alors effectivement cette atténuation dépend de la distance mais pas que, elle dépend aussi :

  • de  la qualité de l’air
  • des obstacles
  • d’éventuelles perturbations électromagnétiques

Donc comme vous pouvez le constater, il est impossible de connaître la distance avec précision. On peut avoir une idée relative de celle-ci. Mais malgré tout, cela pourra être dans certains cas complètement faux. Un objet pourrait avoir un signal RSSI plus faible et donc paraître plus loin qu’un autre, alors qu’en réalité il serait plus proche mais derrière un mur. En effet ce dernier agirait comme un obstacle et diminuerait le signal.

Les données

Comme je l’ai dis la trame d’advertisement peut ÉVENTUELLEMENT contenir des données. En effet ce n’est pas toujours le cas et je dirai même que c’est très rarement le cas. Pour vous donner un exemple je vais en prendre deux :

Bluetooth en domotique

Un ou deux ??

Oui bon ce sera deux exemples. Le premier sera le bouton connecté de chez NODON, le NIU :

Bluetooth en domotique

Ce bouton compatible avec le plugin BLEA fonctionne uniquement par advertisement (dans sa première version tout du moins). Cela veut dire qu’on a jamais besoin de se connecter dessus à aucun moment. En gros chaque action faite dessus (simple appui, double appui, appui long etc …) envoie une trame d’avertissement qui contient les éléments d’identification mais aussi l’info du type d’appui, le niveau de batterie, la couleur du bouton etc … A partir de là il suffit juste d’avoir écouté la trame pour connaître l’action réalisée sur le bouton. Bien évidemment il faut savoir décoder cette trame car une trame ressemble à cela :

Bluetooth en domotique

Le deuxième exemple est la balance Miscale

Bluetooth en domotique

Cette balance fonctionne exactement comme le NIU. Elle advertise à chaque pesée en envoyant le poids.

Ce type d’objet est le plus simple à intégrer dans la domotique. En effet il ne faut rien faire de plus que d’écouter et décoder la trame (bon là il faut bien évidemment un gentil développeur qui passe quelques nuits pour comprendre cette trame)

Mais du coup pour les autres comment ça marche ?

Alors pour les autres objets il y a toute sorte de modes de fonctionnement. Mais avant de les passer en revue, il faut que je vous explique certaines choses.

Les services et les caractéristiques du Bluetooth en domotique

En effet le protocole BLE impose une certaine rigueur aux objets connectés. En effet un objet connecté stocke ses infos et possède éventuellement des actions (pour les ampoules / prises par exemple). Et tout cela il doit l’organiser.

Bluetooth en domotique

Pour vous schématiser cette organisation nous allons prendre l’exemple d’une prise connectée. Assimilons cette prise à une ville. OK vous suivez la prise = une ville. Dans cette ville on va retrouver plusieurs quartiers, rues et numéros de maisons. Dans notre prise c’est exactement la même chose :

  • la ville = la prise
  • les quartiers = les services
  • les rues = les caractéristiques
  • les numéros de maisons  = les handles

Donc pour aller lire par exemple la consommation de la prise il suffit d’une seule et unique chose

L’adresse de cette information

La ville possède cependant une particularité. En effet il y a  une seule maison par rue et on ne peut pas retrouver deux numéros de rues identiques dans deux rues différentes ni retrouver deux rues avec le même nom dans deux quartiers différents. En gros vous l’avez compris une adresse en Bluetooth peut être définie de deux manières différentes :

  • la ville – la rue (le module – la caractéristique)
  • la ville – la maison (le module – le handle)

Bien évidemment personne ne donne la carte de la ville. Il n’existe pas de google maps du Bluetooth. Même si une certaine norme existe, de nombreux voir la plupart des objets ne la respecte pas forcément. Là encore une fois c’est au développeur de fouiner et d’essayer de comprendre la ville. En gros c’est Pékin Express.

Bluetooth en domotique

Les handles

Il existe trois types de handles :

  • ceux en lecture seule : qui permettent d’aller lire une valeur (qu’il faudra décoder bien sûr)
  • ceux en écriture seule : qui permettent d’écrire une valeur (qu’il faudra encoder bien évidemment)
  • et enfin ceux ni en lecture ni en écriture : ceux qui ne font rien (enfin si, ils servent pour les notifications on verra cela après)

Donc vous l’avez compris si on veut lire par exemple la consommation d’une prise il suffit de connaître l’adresse, d’aller la lire et de la décoder. Si on veut exécuter une action, il suffit de connaître l’adresse et d’aller écrire la bonne valeur (qu’il faut avoir encodée de la bonne manière avant).

 Oui et les derniers de ta liste ils servent à quoi alors ?
Les notifications

Alors les derniers sont des handles de notifications. Comment ça marche ? Ben en fait on ne peut ni les lire ni écrire dedans. Ils sont là pour envoyer une notification en broadcast (une sorte d’advertisement) qu’il faudra écouter. Et là où ils sont pas gentils c’est qu’il faut leur dire de notifier en écrivant dans une autre adresse (généralement celle juste à côté) une certaine valeur. Donc cela se déroule en plusieurs étapes :

  • écrire une valeur dans une adresse particulière
  • se mettre dans la foulée en écoute pour intercepter la notification
  • la décoder

Voilà cela va clôturer cette première partie sur l’envers du décor du fonctionnement des objets communiquant en Bluetooth LE. Nous allons voir ci-dessous quelques exemples d’objets intégrés dans BLEA et dans quelle catégorie de fonctionnement ils se trouvent.



4 exemples

Le bouton NIU

Bluetooth en domotique

Alors lui comme expliqué un peu plus tôt, il ne fonctionne qu’en advertisement, il suffit d’écouter et de décoder ce qu’il dit. Un des fonctionnements les plus simples modulos le décodage de la trame bien évidemment.

Les Playbulbs 

Bluetooth en domotiqueBluetooth en domotique

L’ensemble de la gamme Playbulb fonctionne de la même manière :

  • on lit les états dans des handles
  • on écrit les actions dans des handles

C’est ce que je qualifierai comme étant le deuxième mode de fonctionnement le plus simple. La seule grosse particularité pénible des Playbulbs est que selon le modèle et le firmware les adresses ne sont jamais les mêmes. Mais modulo ce détail tout fonctionne sur le principe de lecture écriture.

Les boutons Logitech Pop

Bluetooth en domotique

Alors eux ils ont la particularité d’avoir un fonctionnement très particulier. Lorsque vous appuyez dessus ils envoient une trame d’advertisement qui ne donne aucune indication. Elle dit juste “quelque-chose s’est passé”. Ensuite il faut activer une notification en écrivant une valeur dans un handle pour ensuite écouter la notification, qui elle, donne le type de clic. Et bien évidemment il a fallu le comprendre et surtout il faut réaliser cela le plus rapidement possible.

Le Miband 2 

Bluetooth en domotique

Le fameux Miband 2 pour lequel on m’a posé de nombreuses questions. Alors lui il a une particularité, il est encrypté. Alors tout est faisable, puisque je l’ai fait et j’ai compris le fonctionnement. Il échange lors de l’appairage avec le téléphone une clé de cryptage. Ensuite pour certains handles pour pouvoir écrire dedans il faut les déverrouiller en plusieurs étapes :

  • se connecter au Miband
  • écrire une valeur dans un handle
  • écouter la notification sur un autre handle
  • répondre dans un troisième handle ce que le Miband a dit dans la notification en l’encryptant avec la fameuse clé
  • si c’est bon le Miband déverrouille les autres handles pour la durée de la session de connexion

Donc là deux solutions soit sniffer la clé pendant la phase d’appairage avec le téléphone (ce que j’ai fait), soit faire l’appairage avec Jeedom. Ce dernier cas est faisable. Mais cela voudrait dire que le téléphone ne pourrait plus interagir avec le Miband et ça je ne le veux pas. Pour moi BLEA doit être un complément aux applications natives tout en laissant celles-ci fonctionner comme si BLEA n’était pas là.

C’est la raison pour laquelle vous n’avez pas beaucoup d’infos ni d’actions sur les Miband 2 dans Jeedom (bien que cela soit faisable). Dans le cas du Miband 1S cela ne concerne que la mesure du cœur. Tout le reste n’est pas encrypté. Et pour les autres Miband rien n’est encrypté. Vous comprendrez pourquoi je considère que la batterie et la présence sont suffisants pour le Miband 2 dans BLEA. Je ne me vois pas dire ouvertement “ALORS IL VOUS FAUT SNIFFER LA CLÉ D’APPAIRAGE etc.. “. Je réfléchis cependant à une solution.

Conclusion

Voilà on arrive à la fin de cet article assez technique. Mais je pense et j’espère qu’il était intéressant et instructif. Vous comprenez je l’espère en quoi BLEA est un plugin assez poussé, car il doit gérer tous les cas. C’est ce qui peut expliquer dans certains cas une perte temporaire de présence. En effet si le plugin est en train de faire des allers retours sur un objet et que cet objet met du temps à répondre, c’est autant de temps où le plugin n’écoute plus. Je travaille sur de bons axes d’améliorations sur ce points, mais comme vous le voyez ce n’est pas si simple avec la quantité de choses astronomiques que doit faire le plugin à la seconde.

Vous comprenez aussi le travail conséquent d’intégration d’un objet. En effet il ne suffit pas que l’objet soit visible pour que POUF MAGIE tout soit faisable. Il y a un gros travail d’analyse et de reverse à faire quasi individuellement. Quoiqu’il en soit j’espère qu’après lecture de cet article vous regarderez vos objets Bluetooth d’un autre œil, ainsi que le plugin BLEA en imaginant tout ce qu’il se passe chaque seconde dans le plugin. Je pense qu’il y aura sûrement un deuxième article dans cette série pour venir compléter un peu la vision du Bluetooth en domotique.

Partager sur :

Infos de l'auteur

Je m’appelle Ludovic Sarakha j’ai 32 ans et je suis habitant de Clermont-Ferrand. Concernant les études il faut savoir que bien que j’ai travaillé dans l’informatique (SSII internationale) et maintenant dans la domotique, j’ai un doctorat de Chimie des matériaux. Je suis un autodidacte passioné d'informatique, de domotique et de tout ce qui tourne autour des objets connectés

19 commentaires

  1. Pingback: Bluetooth en domotique IOT - Mais comment ça marche

  2. Laurent Meunier le

    Un seul mot : bravo. Un article qui sera souvent noté en référence pour faire comprendre comment fonctionne cette technologie.

  3. Et voilà comment devenir moins bête en 10 minutes !
    On se doutait que ton travail était compliqué mais pas à ce point.
    Merci pour toutes ses explications .

  4. Merci pour ces explications claires et intéressantes. Je travaille actuellement à intégrer le Jardibric BL-PNR (un programmateur d’arrosage) dans le plugin. Merci pour ton travail.

  5. Nicolas Rigaud / Patator33 le

    Merci pour ces explications des plus claires !
    Ca permet aux gens de comprendre la complexité du travail que tu réalises pour intégrer tous ces appareils.

  6. Merci beaucoup pour cet article bien clair 🙂

    pour gérer tout ce flux de messages, pourquoi ne pas (c’est peut-etre déjà le cas :)) prendre le principe des “priority queue” en programmation, Un Controleur (daemon) qui gère des Queues de commande à priorités. il unqueue les queues classiques en continu et quand il y a une commande en queue prioritaire, il la décharge avant la queue classique. ca te permet normalement d’accélerer une gestion séquencielle de commandes. (je sais pas si je suis compréhensible…).

    • Oui mais ce n’est pas forcément applicable. Si tu appuis sur un bouton NIU tu t’attends a ce que la lumière s’allume directement. Apres j’ai déjà une gestion de priorité. Tout marche bien le soucis réside dans el fait d’être à l’écoute pour la présence et els trames d’advertisement tout en exectutant des actions et des refresh. Le soucis n’est pas le code mais le bluetooth et les dongles qui ne peuvent pas scanner tout en étant connecté. Donc idéalement il faudrait deux dongles pour le plugin. Un qui serait les oreilles l’autre la bouche. Et comme ça je peux laisser un dongle en scan permanent.

  7. Pingback: Notre Veille : Bluetooth en domotique IOT - Mais comment ça marche - Blog.nord-domotique.com

  8. Pingback: Bluetooth en domotique IOT - Mais comment ça marche - La Domotique de Sarakha63 - Domotique de Lunarok

  9. Pingback: Bilan de la Semaine 17 - La Domotique de Sarakha63

Laisser un commentaire