[IoT] Premiers pas avec le Microsoft Band SDK
Aujourd’hui nous allons prendre en main le SDK du bracelet connecté de Microsoft, le Microsoft Band et de son SDK pour Windows Phone 8.1.
Après de longs mois d’attente, j’ai finalement accès au Microsoft Band de Microsoft.
En effet, celui-ci est désormais disponible sur Amazon UK au prix de £169.99 soit environ 240€.
Il est là, je l’ai au poignet et je vais enfin commencer à jouer.
Présentation rapide du SDK et des fonctionnalités
Multi-platform support
Premier point fort, sa compatibilité Android 4.2, iOS 7 et plus, ainsi que Windows Phone 8.1 bien évidemment. Le bracelet est compatible via l’application officielle sur les 3 OS, mais un SDK est également disponible pour chacune de ces plateformes.
En revanche il faut bien noter que l’on n’aura pas accès au SDK depuis une application Windows 8.1 et que nos Universal Apps en sont donc privées.
Après avoir testé j’ai en réalité pu ajouter le SDK depuis une application Windows 8.1. Même si la doc n’annonce une compatibilité qu’avec WP, finalement le SDK semble, lui, compatible avec Windows 8.1. Ce qui est finalement une bonne nouvelle.
Les features du SDK
Les fonctionnalités disponibles depuis le SDK sont les suivantes et feront chacune l’objet d’un article :
- Subscribing to sensor data from the Band
- Sending application notifications to the Band
- Allowing and application to personalize the theme of the Band
Installation du SDK via NuGet
- Dans le Solution Explorer, faites un clic-droit > Manage Nuget
Packages
- Dans la partie gauche, sélectionnez Online > nuget.org
- Enfin, comme le package est encore en prerelease, vous devrez ouvrir la liste déroulante du haut et sélectionner “Include Prerelease”
- Vous pouvez enfin chercher “Microsoft Band SDK” puis l’installer
Comme je l’avais expliqué dans l’article sur le BLE, une application doit déclarer les services Bluetooth auxquels elle souhaite avoir accès.
C’est pour cette raison que lors de son installation, le package NuGet du SDK a modifié le manifeste de l’application. Voici les lignes ajoutées au bloc des capabilities.
Connection au Microsoft Band
Dans notre code nous avons également accès désormais au namespace Microsoft.Band et surtout à la classe BandClientManager.
Les méthodes primordiales à connaitre pour bien débuter et se connecter au bracelet sont les suivantes :
// Récupération d'un tableau des Bands connectés au téléphone. IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync(); // Connection au premier bracelet selectionné IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);
Récupération des données des capteurs
Voici, extraite de la doc officielle, la liste des capteurs disponibles depuis le SDK :
Cette liste est impressionnante et justifie à elle seule l’épaisseur du bracelet qui pourra en rebuter certains.
Dans cet article je ne vais aborder que l’accéléromètre mais les autres capteurs sont tous accessibles à peu près de la même manière.
Pour lire les données du capteur, rien de plus simple, il s’agit uniquement de s’abonner aux évènements correspondants du Band puis de lancer la lecture.
Pour l’accéléromètre, par exemple, voici le code :
bandClient.SensorManager.Accelerometer.ReadingChanged += Accelerometer_ReadingChanged; await bandClient.SensorManager.Accelerometer.StartReadingsAsync();
La lecture des données de l’accéléromètre est ensuite effectuée dans cette méthode :
async void Accelerometer_ReadingChanged(object sender, Microsoft.Band.Sensors.BandSensorReadingEventArgs<Microsoft.Band.Sensors.IBandAccelerometerReading> e) { await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => { tbAccelerometer.Text = String.Concat( String.Format("X = {0:0.00}", e.SensorReading.AccelerationX), Environment.NewLine, String.Format("Y = {0:0.00}", e.SensorReading.AccelerationY), Environment.NewLine, String.Format("Z = {0:0.00}", e.SensorReading.AccelerationZ)); }).AsTask(); }
Une fois que nous n’avons plus besoin des données, nous pouvons interrompre la lecture :
await bandClient.SensorManager.Accelerometer.StopReadingsAsync();
Vous remarquerez que nous pouvons connaitre l’intervalle de rapport du capteur.
var intervaTimeSpan = bandClient.SensorManager.Accelerometer.ReportingInterval;
16ms est la valeur que j’ai obtenue, ce qui est remarquablement précis mais à mon avis également très consommateur en énergie.
Il aurait été intéressant de pouvoir modifier cette valeur selon nos besoins mais malheureusement elle est en lecture seule.
Conclusion
Je reste étonné à chaque fois que Microsoft sort un SDK par la facilité de prise en main. Il ne nous faut que quelques minutes pour écrire notre première application et le site ainsi que la documentation pour les développeurs sont vraiment très complets.
Une dernière remarque, pensez à ôter le bracelet de votre poignet lorsque vous codez ou à acheter une protection d’écran car durant la session de code pour cet article, j’ai déjà réussi à le rayer…
A bientôt pour la prise en main des autres fonctionnalités offertes par le SDK.
Commentaires