SDK iBeacon sur Android

Table des Matières
Kit de développement logiciel (SDK) iBeacon

Les cas d'utilisation et les modèles économiques possibles pour ce beacon, qui permet une interaction utilisateur géolocalisée, même à l'intérieur des bâtiments, font actuellement l'objet de vifs débats. Publicité et réductions en magasin, paiements mobiles, navigation, transports publics, localisation dans les bâtiments publics et les musées, et domotique ne sont que la partie émergée de l'iceberg. Sans oublier, bien sûr, la collecte omniprésente de données, désormais nouvelle et dotée d'informations de localisation précises. Avant d'en savoir plus sur la technologie iBeacon, nous évoquerons également le SDK iBeacon dans cet article.

Quel est le battage médiatique ?

Le protocole iBeacon développé par Apple et basé sur le Bluetooth Low Energy est pris en charge par de nombreux appareils. Cet article explique les iBeacons et le Bluetooth Low Energy et illustre, à travers l'exemple du développement d'une application Android pour les listes de courses géolocalisées, l'interaction d'une application avec les iBeacons. L'implémentation repose sur le SDK iBeacon de MOKOSmart.

iBeacon, Bluetooth 4.0, BLE, SMART. Quoi ?

La technologie de base d'iBeacon est le Bluetooth. Le Bluetooth Low Energy (BLE), souvent désigné comme le label marketing Bluetooth Smart, a été intégré à la version 4.0 de la norme Bluetooth. BLE n'est pas rétrocompatible avec les versions précédentes appelées Bluetooth Classic. Bluetooth 4.0 spécifie que les appareils conformes à la norme doivent implémenter l'une ou les deux variantes, à savoir Low Energy ou Classic.

Le BLE est intégré à la quasi-totalité des smartphones actuels, tels que l'iPhone 4+ et le Samsung Galaxy 3+. Un iPhone peut à la fois servir de récepteur de signaux iBeacon et, contrairement à Android, de récepteur de données. pour Android intègre les pilotes BLE de la version 18 de l'API, soit Android 4.3. Par ailleurs, les ordinateurs actuels sont également compatibles BLE. Sous Windows, en revanche, les pilotes ne sont intégrés qu'à partir de Windows 8, et depuis mi-2011 environ, BLE est disponible sur les ordinateurs Apple.

BLE continue de prendre en charge une variété de périphériques tels que les moniteurs de fréquence cardiaque et les hélicoptères jouets, les thermomètres, les équipements de fitness et les brosses à dents, oui, les brosses à dents et les baskets.

Ce qui est intéressant en relation avec les iBeacons, c'est le capteur

Le Sensor Tag de Texas Instruments, qui, en plus de sa fonction d'iBeacon, peut également mesurer la température, l'humidité, la pression et l'accélération. Il est également équipé d'un gyroscope, d'un magnétomètre et de deux boutons. C'est l'appareil idéal pour contrôler des présentations à distance tout en transmettant et en affichant l'humidité et la température des mains de l'intervenant. Je pense que mon prochain projet de bac à sable sera le tapis de sol pour la peur de la scène. Vous trouverez une liste détaillée des appareils sur le site officiel de Bluetooth.

Prêt pour le GATT

Le modèle de communication utilisé par les appareils pour échanger des données est appelé GATT (Generic Attribute Profile). GATT définit les rôles du client et du serveur. Le client demande des données au serveur via des services. Un service regroupe plusieurs paires clé/valeur atomiques, appelées caractéristiques. Services et caractéristiques sont identifiés par des UUID et peuvent également contenir des descriptions complémentaires. Les services et leurs caractéristiques sont catalogués sous forme de profils ; la spécification en définit un large éventail, notamment dans les domaines de la santé, du sport et du fitness, et – dans notre cas particulier – de la détection de proximité. Les profils individuels, ainsi que leurs services et caractéristiques, sont disponibles sur le portail des développeurs Bluetooth, sous la rubrique « Spécifications GATT ».

Kit de développement logiciel (SDK) Gatt iBeacon

Accédez à la balise 

Alors, que sont les iBeacons ? iBeacon est une technologie très simple (et une marque déposée d'Apple) qui permet une interaction avec les applications en fonction de la localisation. Une balise envoie un signal qui peut être reçu par les appareils compatibles BLE et traité par les applications installées dessus. Le signal contient l'identification de la balise et la puissance de réception. Les iBeacons eux-mêmes sont donc – contrairement aux déclarations inexactes dans la presse – incapables de fournir du contenu ou de suivre le comportement des clients. Ceci est la responsabilité des applications réceptrices et donc des développeurs.

iBeacon IRL

Le déploiement à plus grande échelle d'iBeacons en Allemagne prendra probablement du temps, mais on trouve des exemples aux États-Unis et aux Pays-Bas. Par exemple, la Ligue majeure de baseball a équipé 28 stades d'iBeacons et les utilise, entre autres, pour les enregistrements dans l'application MLB « At the Ballpark ».

Une vitrine a été mise en place dans la Maison Rubens à Anvers, qui propose aux visiteurs des informations de fond telles que des radiographies de tableaux et des jeux de géocaching.

L'exemple le plus frappant en termes de taille vient d'Apple lui-même. Plus de 250 Apple Store ont été équipés d'iBeacons. Associés à l'application Apple Store, des messages géolocalisés sont envoyés aux acheteurs présents dans le magasin. Cependant, les interactions possibles semblent actuellement assez limitées : les premiers avis ne font état que de deux messages différents (et assez génériques) qu'ils auraient reçus. Aucune offre spéciale ni information spécifique sur des produits à proximité n'était proposée.

Fonctionnalités

Le SDK iBeacon n'utilise pas de profil BLE distinct, mais plutôt des packages de publicité Bluetooth, c'est-à-dire des packages de diffusion, utilisés pour détecter les appareils Bluetooth. Si vous souhaitez en savoir plus sur la structure exacte du package, vous pouvez consulter, par exemple, le blog d'Adam Warski.

Ce paquet est envoyé à intervalles réguliers et configurable via GATT. Il contient l'UUID de la balise, généralement préconfiguré par le fabricant. Ainsi, toutes les balises MOKOSmart envoient le même UUID. Des identifiants majeurs et mineurs sont également utilisés pour identifier chaque balise. Les identifiants majeurs peuvent représenter, par exemple, une succursale d'un magasin ou un restaurant d'une chaîne de franchise, tandis que les identifiants mineurs représentent une étagère ou une table.

De plus, la puissance du signal est incluse dans le pack publicitaire, ce qui permet de mesurer la distance entre le récepteur et la balise. Cependant, il ne faut pas s'attendre à une grande précision, car le signal peut être obstrué par des obstacles spatiaux tels que des meubles ou des personnes.

Le SDK IBeacon propose deux concepts pour l'interaction d'une application avec ces informations : la télémétrie et la surveillance régionale. La télémétrie consiste à déterminer la distance jusqu'à la balise. En raison de l'imprécision mentionnée ci-dessus, cette opération ne se déroule qu'en trois étapes : « Immédiat » correspond à une distance de quelques centimètres, « Proche » à quelques mètres et « Lointain » à une distance de plus de dix mètres. La télémétrie n'est possible que si l'application réceptrice est active.

Ceci n'est pas nécessaire pour la surveillance régionale. Dans ce mode, une application inactive peut également être notifiée lorsqu'elle entre ou sort d'une zone définie par une ou plusieurs balises. On comprend désormais clairement l'intérêt de cette technologie pour la publicité et le commerce de détail. De plus, pour la plupart des balises, la puissance de transmission et l'intervalle peuvent être configurés afin d'optimiser l'autonomie de la batterie en fonction des conditions locales.

« La plupart des balises » implique qu'il existe plusieurs fabricants d'iBeacons sur le marché. En réalité, il en existe un certain nombre : MOKOSmart, Kontakt.io, Gelo, Estimote et Gimbal. Outre le matériel, ces fabricants proposent également un service SDK iBeacon et des solutions cloud pour la gestion des balises. Les amateurs peuvent configurer eux-mêmes leurs émetteurs iBeacon avec un minimum d'efforts grâce à Raspberry Pi ou Arduino.

Liste clignotante

Prenons la situation suivante pour l'exemple d'implémentation : le développeur est au supermarché un samedi matin. Des enfants affamés attendent à la maison et l'après-midi, une vente de pâtisseries a lieu à l'école. Ce n'est qu'à ce moment-là que le week-end commencera vraiment. Il y a donc de bonnes raisons de se dépêcher. Malheureusement, la liste de courses est longue et inadaptée à l'agencement du supermarché. Si le supermarché était équipé de balises iBeacons dans les différents rayons, une application de liste de courses pourrait mettre en évidence les entrées appropriées et réduire considérablement le stress du développeur (bien sûr, complètement fictif).

Puisque notre application doit communiquer via Bluetooth, nous avons d'abord besoin des autorisations BLUETOOTH et BLUETOOTH_ADMIN dans le manifeste Android. Pour pouvoir utiliser le service offert par l'API Estimote pour interagir avec les iBeacons, nous devons également le faire connaître et placer l'API téléchargée dans notre répertoire libs/.

Notre prototype se compose d'une liste simple pré-remplie et de régions prédéfinies, c'est-à-dire les rayons de notre supermarché. Chaque entrée de liste sait à quelle région elle est affectée. Dans notre exemple, nous n'affectons qu'une seule balise à chaque région. Il est également possible de combiner plusieurs balises en une seule région. L'activité principale reconnaît la région active et transmet cette information à un adaptateur, qui se charge de mettre en évidence les entrées de la liste. De plus, nous avons ajouté la possibilité de sélectionner la région active sans balises afin de rendre notre interface utilisateur testable sans matériel supplémentaire.

Dans la méthode « Create » de l'activité, nous instancions un gestionnaire de balises MOKOSmart pour notre application. Nous utilisons un écouteur pour la surveillance de la région en indiquant la région actuelle à notre adaptateur et en définissant l'intervalle d'analyse des balises. Dans l'exemple, nous définissons une analyse d'une seconde, suivie d'une attente de 250 ms. Ces valeurs sont choisies de manière relativement rigoureuse pour obtenir des résultats rapides lors des tests. En réalité, l'équilibre entre réactivité et autonomie est difficile à trouver. Dans ce prototype, nous remplissons également notre liste de courses avec des valeurs fictives. Nous démarrons ou arrêtons la surveillance dans la méthode on() Start ou onStop() de l'activité principale.

La liste d'articles

L'adaptateur est implémenté comme un dérivé de l'adaptateur android.widget.Array et remplace la méthode get View(), appelée pour chaque ligne à afficher. Le titre de l'élément est indiqué sur la première ligne de l'avis défini dans la mise en page, et sur la seconde, la zone attribuée.

Comme le montre la liste 1, la région saisie est transférée à l'adaptateur via la fonction de rappel on Entered Region() du MonitoringListener, assignée à notre adaptateur BeaconManager : item list. segregation(region). Lors de l'appel de getView(), cette fonction vérifie si la région de l'entrée de la ligne correspond à la région actuelle. Si c'est le cas, l'arrière-plan de la ligne est coloré. Il est également possible de placer les entrées de la zone actuelle au début de la liste en triant la liste.

Le code de l'application est clair ; la réception et la gestion des signaux iBeacon dans l'application ne nécessitent que peu d'implémentations. Les concepts de télémétrie et de surveillance iBeacon sont intégrés au SDK MOKOSmart iBeacon pour une utilisation intuitive. Le code source complet de l'application est disponible sur GitHub.

Conclusion et perspectives

Nous avons constaté qu'interagir avec les iBeacons à l'aide du SDK MOKOSmart iBeacon est simple. Je ne m'attends donc pas à des difficultés majeures au niveau de la technologie de mise en œuvre, mais plutôt au niveau du déploiement des balises et du réglage de la puissance d'émission. Ces paramètres ont un impact direct sur la réactivité de l'application lorsque la localisation change. Dans tous les cas, l'équilibrage devrait être complexe.

Pour des applications particulièrement intéressantes, par exemple dans le domaine de la domotique, je pense à la combinaison d'iBeacons avec des capteurs, comme le Sensor Tag de Texas Instruments mentionné précédemment. Estimote lancera également des balises mobiles avec capteurs de mouvement et de température sur le marché, accompagnées des Estimote Stickers. Les premières versions préliminaires destinées aux développeurs auraient dû être livrées fin octobre 2014, mais aucun kit n'a été livré avant cette date.

Il reste à déterminer si le domaine d'application de la « navigation intérieure » peut être cartographié de manière fiable avec cette technologie. En raison de la sensibilité du signal Bluetooth aux interférences, un fort éclairage de la zone concernée par des signaux iBeacon et des calculs de position par triangulation avec des plans de pièce seraient nécessaires. Des solutions appropriées sont proposées par MOKOSmart (Indoor Navigation iBeacon SDK) et divers autres fabricants tels que LabWerk, mais l'auteur n'a connaissance d'aucun rapport pratique.

Lors du développement d'une application interagissant avec des iBeacons, les aspects de sécurité et de protection des données doivent également être pris en compte. En raison de la simplicité du signal, les iBeacons sont sujets à l'usurpation d'identité, un aspect à ne pas négliger lors du développement. Les données telles que la localisation actuelle et le profil de mouvement, qui peuvent être collectées en fonction du comportement de l'utilisateur, nécessitent également une protection accrue.

 

Écrit par --
Photo de YK Huang
YK Huang
YK est un chef de produit expérimenté au sein du département R&D de MOKOSMART, fort de plus de dix ans d'expérience dans le développement d'appareils intelligents. Certifié PMP et NPDP, il maîtrise parfaitement la gestion d'équipes transverses. Fort de son expérience en électronique et en ingénierie, il a su exploiter les données pour lancer avec succès plus de 40 produits connectés.
Photo de YK Huang
YK Huang
YK est un chef de produit expérimenté au sein du département R&D de MOKOSMART, fort de plus de dix ans d'expérience dans le développement d'appareils intelligents. Certifié PMP et NPDP, il maîtrise parfaitement la gestion d'équipes transverses. Fort de son expérience en électronique et en ingénierie, il a su exploiter les données pour lancer avec succès plus de 40 produits connectés.
Partager cette publication
Renforcez votre besoin connecté avec les solutions d'appareils MOKOSmart IoT !