SlideShare une entreprise Scribd logo
1  sur  40
Télécharger pour lire hors ligne
AMBIENT INTELLIGENCE
tech days•
2015
#mstechdays techdays.microsoft.fr
Bluetooth Low Energy dans
les applications Windows
Stéphane Sibué (GUYZMO)
stephane.sibue@guyzmo.fr
@codeppc
@Guyzmo73
tech.days 2015#mstechdays
Stéphane Sibué, directeur Technique chez
Développement d’applications mobiles pour Android, iOS et
Windows.
Formations aux développeurs sur ces 3 plateformes.
www.guyzmo.fr
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Papa de quelques apps Windows Phone :
Radio Meuh
Tempo
Big Contacts
Cérébro
Free Bubbles
The Voice
The Light
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Les objets connectés
Le Bluetooth Low Energy
Station Météo basé sur un SensorTag
L'application Station Météo
Connexion à un service
Connexion à une caractéristique
Ecriture d'une caractéristique
Lecture d'une caractéristique
Activation des notifications
Architecture de l'application
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Existent depuis 25/30 ans
Evolution naturelle des objets
5 « ingrédients » de base :
• Des humains
• Des objets
• Des écrans pour les interactions
• Le cloud pour le stockage et l’intelligence
• De la connectivité
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Technique de transmission sans fil créée par Nokia sous forme d’un standard
ouvert basé sur Bluetooth qu’il complète sans le remplacer.
Un des protocoles clés de l’Internet des objets
Basé sur le Bluetooth « classique »
Débit 1 Mb/s
Consomme 10x moins
Latence de connexion et de transfert réduite
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Importante normalisation (Bluetooth Developer Portal)
https://developer.bluetooth.org
Organisation en services normalisés
Chaque service possède de 1 à n caractéristiques
Les services et les caractéristiques sont identifiés par des UUID
Les caractéristiques possèdent des descripteurs
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Les services
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Les caractéristiques
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml
Service
Battery Service 0x180F (0000180F-0000-1000-8000-00805F9B34FB)
Caractéristique
Battery Level 0x2A19 (00002A19-0000-1000-8000-00805F9B34FB)
Type uint8
min=0, max=100
Format %
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Station météo réalisée avec un SensorTag (Texas Instruments)
Température
Humidité
Pression atmosphérique
= Petite station météo
http://www.ti.com/tool/cc2541dk-sensor
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
IR Temperature Service : F000AA00-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
IR Temperature Service : F000AA00-0451-4000-B000-00000000000
Data : F000AA01-0451-4000-B000-00000000000
Config : F000AA02-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Humidity Service : F000AA20-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Humidity Service : F000AA20-0451-4000-B000-00000000000
Data : F000AA21-0451-4000-B000-00000000000
Config : F000AA22-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Barometer Service : F000AA40-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdays
Barometer Service : F000AA40-0451-4000-B000-00000000000
Data : F000AA41-0451-4000-B000-00000000000
Config : F000AA42-0451-4000-B000-00000000000
Calibration : F000AA43-0451-4000-B000-00000000000
Bluetooth Low Energy dans les applications Windows
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Affiche :
La température courante en °C
La pression atmosphérique en hPa
Le degré d’humidité en %
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
La pression atmosphérique permet de déterminer
un type de temps :
< 980 Tempête
980 à 1000 Pluie ou vent
1000 à 1030 Variable
1030 à 1050 Beau temps
>1050 Très sec
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Version Windows Phone 8.1
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Version Windows 8.1
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
95% du code identique
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
95% du code se trouve dans le
Projet « Shared »
Seule « MainPage.xaml » est
Propre à chaque plateforme.
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Définir les services utilisés par l’application
Dans « Package.appxmanifest »
Application universelle
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Windows.Devices.Bluetooth.GenericAttributeProfile
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
On indique quel service on souhaite récupérer (filtre)
On ne sélectionne que les devices porteur de ce
service qui sont de type SensorTag (le premier qui se
présente dans notre exemple)
A partir de là on a un « GattDeviceService » qui est le
point d’entrée vers les caractéristiques du service
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
private async Task<GattDeviceService> GetDeviceService(Guid wService)
{
var wFilter = GattDeviceService.GetDeviceSelectorFromUuid(wService);
var wDevices = await DeviceInformation.FindAllAsync(wFilter);
foreach (var wDevice in wDevices)
{
if (wDevice.Name == "TI BLE Sensor Tag")
{
// On a trouvé un SensorTag
return await GattDeviceService.FromIdAsync(wDevice.Id);
}
}
return null;
}
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
A partir du « GattDeviceService » on récupère la
caractéristique grâce à son UUID
La fonction retourne une collection, dont on tire le 1er
élément s’il est présent
On obtient un objet de type « GattCharacteristic »
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
protected GattCharacteristic GetCharacteristic(GattDeviceService deviceService, Guid characteristicUUID)
{
var characteristics = deviceService.GetCharacteristics(characteristicUUID);
if (characteristics.Count > 0)
{
return characteristics[0];
}
else
{
return null;
}
}
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
On ne peut écrire qu’un train d’octets qui doit être
fourni sous la forme d’un buffer de type « IBuffer »
On prépare les données (on peut s’aider du
« DataWriter » pour ça)
On écrit le train d’octets en utilisant la méthode
asynchrone « WriteValueAsync » qui retourne le
résultat de l’écriture
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
using System.Runtime.InteropServices.WindowsRuntime;
public virtual async Task<bool> StartSensor()
{
if (pConfigurationCharacteristic != null)
{
var status = await pConfigurationCharacteristic.WriteValueAsync((new byte[] { 1 }).AsBuffer());
return (status == GattCommunicationStatus.Success);
}
return false;
}
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
using System.Runtime.InteropServices.WindowsRuntime;
public virtual async Task<bool> StartSensor()
{
if (pConfigurationCharacteristic != null)
{
DataWriter writer = new DataWriter();
writer.WriteByte(1);
var status = await pConfigurationCharacteristic.WriteValueAsync(writer.DetachBuffer());
writer.Dispose();
return (status == GattCommunicationStatus.Success);
}
return false;
}
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
On ne peut lire qu’un train d’octets qui est fourni sous
la forme d’un buffer de type « IBuffer »
On peut s’aider du « DataReader » pour récupérer les
données dans les bons types
Voir méthode « Init » du BarometerSensor
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Le système peut déclencher un événement lorsque la
valeur d’une caractéristique change.
Il faut que la caractéristique le permette.
Il faut activer la notification pour en bénéficier (et pas
seulement s’abonner à l’événement).
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
Voir code « Init » dans « SensorBase »
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
« SensorBase »
Classe de base de gestion des capteurs
Code…
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
« BarometerSensor » Capteur de pression
« HumiditySensor » Capteur d’humidité
« TemperatureSensor » Capteur de température
Héritent tous de « SensorBase »
Architecturés pour le binding XAML
Code…
tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
© 2015 Microsoft Corporation. All rights reserved.
tech days•
2015
#mstechdays techdays.microsoft.fr
Bluetooth Low Energy dans les applications Windows

Contenu connexe

Similaire à Bluetooth Low Energy dans les applications Windows

Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement AndroidSteve Tremblay
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreMicrosoft
 
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanIoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanCorneliu Gaina
 
Dans le mobile, c’est la première impression qui compte!
Dans le mobile, c’est la première impression qui compte!Dans le mobile, c’est la première impression qui compte!
Dans le mobile, c’est la première impression qui compte!Guillaume Deshayes
 
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Microsoft Technet France
 
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Microsoft Décideurs IT
 
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !Microsoft
 
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0IBM France Lab
 
Voodoo.io NodeJS Meetup - November 13
Voodoo.io NodeJS Meetup - November 13Voodoo.io NodeJS Meetup - November 13
Voodoo.io NodeJS Meetup - November 13Aymeric Roffé
 
Architectures lambda - Microsoft
Architectures lambda - MicrosoftArchitectures lambda - Microsoft
Architectures lambda - MicrosoftMichel HUBERT
 
Visual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaVisual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaJulien Chable
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsAdrien Blind
 
Petit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projetsPetit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projetsOCTO Technology
 
Architectures lambda - Techdays camps 2015
Architectures lambda - Techdays camps 2015 Architectures lambda - Techdays camps 2015
Architectures lambda - Techdays camps 2015 Georges Damien
 
System Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainSystem Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainMicrosoft Technet France
 
Windows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationWindows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationMicrosoft Décideurs IT
 
Windows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationWindows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationMicrosoft Technet France
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014Benoît de CHATEAUVIEUX
 
IoT et architecture cloud haute performance
IoT et architecture cloud haute performanceIoT et architecture cloud haute performance
IoT et architecture cloud haute performanceMicrosoft
 

Similaire à Bluetooth Low Energy dans les applications Windows (20)

Linq Tech Days08 Lux
Linq Tech Days08 LuxLinq Tech Days08 Lux
Linq Tech Days08 Lux
 
Introduction au développement Android
Introduction au développement AndroidIntroduction au développement Android
Introduction au développement Android
 
Keynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle èreKeynote .NET 2015 : une nouvelle ère
Keynote .NET 2015 : une nouvelle ère
 
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWanIoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
IoT (l'Internet des Objets) et le protocole de telecommunication LoRaWan
 
Dans le mobile, c’est la première impression qui compte!
Dans le mobile, c’est la première impression qui compte!Dans le mobile, c’est la première impression qui compte!
Dans le mobile, c’est la première impression qui compte!
 
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
 
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
Dans le mobile, c'est la première impression qui compte! Faites le bilan comp...
 
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !
Vivez une expérience IoT inédite avec la centrale photovoltaïque connectée !
 
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0
Bluemix Paris Meetup - Session #9 - 10 juin 2015 - Internet des Objets 3.0
 
Voodoo.io NodeJS Meetup - November 13
Voodoo.io NodeJS Meetup - November 13Voodoo.io NodeJS Meetup - November 13
Voodoo.io NodeJS Meetup - November 13
 
Architectures lambda - Microsoft
Architectures lambda - MicrosoftArchitectures lambda - Microsoft
Architectures lambda - Microsoft
 
Visual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@NoumeaVisual studio 2017 Launch keynote - Afterworks@Noumea
Visual studio 2017 Launch keynote - Afterworks@Noumea
 
Petit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projetsPetit déjeuner Octo - L'infra au service de ses projets
Petit déjeuner Octo - L'infra au service de ses projets
 
Petit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projetsPetit-déjeuner OCTO - L'Infra au service de ses projets
Petit-déjeuner OCTO - L'Infra au service de ses projets
 
Architectures lambda - Techdays camps 2015
Architectures lambda - Techdays camps 2015 Architectures lambda - Techdays camps 2015
Architectures lambda - Techdays camps 2015
 
System Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la mainSystem Center Operations Manager et Orchestrator : Main dans la main
System Center Operations Manager et Orchestrator : Main dans la main
 
Windows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationWindows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitation
 
Windows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitationWindows 10 simplifie le déploiement des systèmes d’exploitation
Windows 10 simplifie le déploiement des systèmes d’exploitation
 
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
"La Performance en Continue" à JMaghreb 3.0 - 05/11/2014
 
IoT et architecture cloud haute performance
IoT et architecture cloud haute performanceIoT et architecture cloud haute performance
IoT et architecture cloud haute performance
 

Plus de Microsoft

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuMicrosoft
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaSMicrosoft
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileMicrosoft
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Microsoft
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Microsoft
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Microsoft
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à ZMicrosoft
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Microsoft
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Microsoft
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryMicrosoft
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Microsoft
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Microsoft
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET CoreMicrosoft
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Microsoft
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
 

Plus de Microsoft (20)

Uwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieuUwp + Xamarin : Du nouveau en terre du milieu
Uwp + Xamarin : Du nouveau en terre du milieu
 
La Blockchain pas à PaaS
La Blockchain pas à PaaSLa Blockchain pas à PaaS
La Blockchain pas à PaaS
 
Tester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobileTester, Monitorer et Déployer son application mobile
Tester, Monitorer et Déployer son application mobile
 
Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo Windows 10, un an après – Nouveautés & Démo
Windows 10, un an après – Nouveautés & Démo
 
Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.Prenez votre pied avec les bots et cognitive services.
Prenez votre pied avec les bots et cognitive services.
 
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
Office 365 Dev PnP & PowerShell : exploitez enfin le potentiel de votre écosy...
 
Créer un bot de A à Z
Créer un bot de A à ZCréer un bot de A à Z
Créer un bot de A à Z
 
Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?Microsoft Composition, pierre angulaire de vos applications ?
Microsoft Composition, pierre angulaire de vos applications ?
 
Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
 
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
Conteneurs Linux ou Windows : quelles approches pour des IT agiles ?
 
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
 
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
 
Plan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
 
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
 
Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.Transformation de la représentation : De la VR à la RA, aller & retour.
Transformation de la représentation : De la VR à la RA, aller & retour.
 
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
Quelles architectures pour vos applications Cloud, de la VM au conteneur : ça...
 
Introduction à ASP.NET Core
Introduction à ASP.NET CoreIntroduction à ASP.NET Core
Introduction à ASP.NET Core
 
Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?
 
Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...Comment développer sur la console Xbox One avec une application Universal Win...
Comment développer sur la console Xbox One avec une application Universal Win...
 
Azure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeurs
 

Bluetooth Low Energy dans les applications Windows

  • 2. Bluetooth Low Energy dans les applications Windows Stéphane Sibué (GUYZMO) stephane.sibue@guyzmo.fr @codeppc @Guyzmo73
  • 3. tech.days 2015#mstechdays Stéphane Sibué, directeur Technique chez Développement d’applications mobiles pour Android, iOS et Windows. Formations aux développeurs sur ces 3 plateformes. www.guyzmo.fr Bluetooth Low Energy dans les applications Windows
  • 4. tech.days 2015#mstechdays Papa de quelques apps Windows Phone : Radio Meuh Tempo Big Contacts Cérébro Free Bubbles The Voice The Light Bluetooth Low Energy dans les applications Windows
  • 5. tech.days 2015#mstechdays Les objets connectés Le Bluetooth Low Energy Station Météo basé sur un SensorTag L'application Station Météo Connexion à un service Connexion à une caractéristique Ecriture d'une caractéristique Lecture d'une caractéristique Activation des notifications Architecture de l'application Bluetooth Low Energy dans les applications Windows
  • 6. tech.days 2015#mstechdays Existent depuis 25/30 ans Evolution naturelle des objets 5 « ingrédients » de base : • Des humains • Des objets • Des écrans pour les interactions • Le cloud pour le stockage et l’intelligence • De la connectivité Bluetooth Low Energy dans les applications Windows
  • 7. tech.days 2015#mstechdays Technique de transmission sans fil créée par Nokia sous forme d’un standard ouvert basé sur Bluetooth qu’il complète sans le remplacer. Un des protocoles clés de l’Internet des objets Basé sur le Bluetooth « classique » Débit 1 Mb/s Consomme 10x moins Latence de connexion et de transfert réduite Bluetooth Low Energy dans les applications Windows
  • 8. tech.days 2015#mstechdays Importante normalisation (Bluetooth Developer Portal) https://developer.bluetooth.org Organisation en services normalisés Chaque service possède de 1 à n caractéristiques Les services et les caractéristiques sont identifiés par des UUID Les caractéristiques possèdent des descripteurs Bluetooth Low Energy dans les applications Windows
  • 9. tech.days 2015#mstechdays Les services Bluetooth Low Energy dans les applications Windows
  • 10. tech.days 2015#mstechdays Les caractéristiques Bluetooth Low Energy dans les applications Windows
  • 11. tech.days 2015#mstechdays https://developer.bluetooth.org/gatt/services/Pages/ServiceViewer.aspx?u=org.bluetooth.service.battery_service.xml Service Battery Service 0x180F (0000180F-0000-1000-8000-00805F9B34FB) Caractéristique Battery Level 0x2A19 (00002A19-0000-1000-8000-00805F9B34FB) Type uint8 min=0, max=100 Format % Bluetooth Low Energy dans les applications Windows
  • 12. tech.days 2015#mstechdays Station météo réalisée avec un SensorTag (Texas Instruments) Température Humidité Pression atmosphérique = Petite station météo http://www.ti.com/tool/cc2541dk-sensor Bluetooth Low Energy dans les applications Windows
  • 13. tech.days 2015#mstechdays IR Temperature Service : F000AA00-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 14. tech.days 2015#mstechdays IR Temperature Service : F000AA00-0451-4000-B000-00000000000 Data : F000AA01-0451-4000-B000-00000000000 Config : F000AA02-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 15. tech.days 2015#mstechdays Humidity Service : F000AA20-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 16. tech.days 2015#mstechdays Humidity Service : F000AA20-0451-4000-B000-00000000000 Data : F000AA21-0451-4000-B000-00000000000 Config : F000AA22-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 17. tech.days 2015#mstechdays Barometer Service : F000AA40-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 18. tech.days 2015#mstechdays Barometer Service : F000AA40-0451-4000-B000-00000000000 Data : F000AA41-0451-4000-B000-00000000000 Config : F000AA42-0451-4000-B000-00000000000 Calibration : F000AA43-0451-4000-B000-00000000000 Bluetooth Low Energy dans les applications Windows
  • 19. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Affiche : La température courante en °C La pression atmosphérique en hPa Le degré d’humidité en % Application universelle
  • 20. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows La pression atmosphérique permet de déterminer un type de temps : < 980 Tempête 980 à 1000 Pluie ou vent 1000 à 1030 Variable 1030 à 1050 Beau temps >1050 Très sec Application universelle
  • 21. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Version Windows Phone 8.1 Application universelle
  • 22. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Version Windows 8.1 Application universelle
  • 23. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows 95% du code identique Application universelle
  • 24. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows 95% du code se trouve dans le Projet « Shared » Seule « MainPage.xaml » est Propre à chaque plateforme. Application universelle
  • 25. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Définir les services utilisés par l’application Dans « Package.appxmanifest » Application universelle
  • 26. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Windows.Devices.Bluetooth.GenericAttributeProfile
  • 27. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows On indique quel service on souhaite récupérer (filtre) On ne sélectionne que les devices porteur de ce service qui sont de type SensorTag (le premier qui se présente dans notre exemple) A partir de là on a un « GattDeviceService » qui est le point d’entrée vers les caractéristiques du service
  • 28. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows private async Task<GattDeviceService> GetDeviceService(Guid wService) { var wFilter = GattDeviceService.GetDeviceSelectorFromUuid(wService); var wDevices = await DeviceInformation.FindAllAsync(wFilter); foreach (var wDevice in wDevices) { if (wDevice.Name == "TI BLE Sensor Tag") { // On a trouvé un SensorTag return await GattDeviceService.FromIdAsync(wDevice.Id); } } return null; }
  • 29. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows A partir du « GattDeviceService » on récupère la caractéristique grâce à son UUID La fonction retourne une collection, dont on tire le 1er élément s’il est présent On obtient un objet de type « GattCharacteristic »
  • 30. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows protected GattCharacteristic GetCharacteristic(GattDeviceService deviceService, Guid characteristicUUID) { var characteristics = deviceService.GetCharacteristics(characteristicUUID); if (characteristics.Count > 0) { return characteristics[0]; } else { return null; } }
  • 31. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows On ne peut écrire qu’un train d’octets qui doit être fourni sous la forme d’un buffer de type « IBuffer » On prépare les données (on peut s’aider du « DataWriter » pour ça) On écrit le train d’octets en utilisant la méthode asynchrone « WriteValueAsync » qui retourne le résultat de l’écriture
  • 32. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows using System.Runtime.InteropServices.WindowsRuntime; public virtual async Task<bool> StartSensor() { if (pConfigurationCharacteristic != null) { var status = await pConfigurationCharacteristic.WriteValueAsync((new byte[] { 1 }).AsBuffer()); return (status == GattCommunicationStatus.Success); } return false; }
  • 33. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows using System.Runtime.InteropServices.WindowsRuntime; public virtual async Task<bool> StartSensor() { if (pConfigurationCharacteristic != null) { DataWriter writer = new DataWriter(); writer.WriteByte(1); var status = await pConfigurationCharacteristic.WriteValueAsync(writer.DetachBuffer()); writer.Dispose(); return (status == GattCommunicationStatus.Success); } return false; }
  • 34. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows On ne peut lire qu’un train d’octets qui est fourni sous la forme d’un buffer de type « IBuffer » On peut s’aider du « DataReader » pour récupérer les données dans les bons types Voir méthode « Init » du BarometerSensor
  • 35. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Le système peut déclencher un événement lorsque la valeur d’une caractéristique change. Il faut que la caractéristique le permette. Il faut activer la notification pour en bénéficier (et pas seulement s’abonner à l’événement).
  • 36. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows Voir code « Init » dans « SensorBase »
  • 37. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows « SensorBase » Classe de base de gestion des capteurs Code…
  • 38. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows « BarometerSensor » Capteur de pression « HumiditySensor » Capteur d’humidité « TemperatureSensor » Capteur de température Héritent tous de « SensorBase » Architecturés pour le binding XAML Code…
  • 39. tech.days 2015#mstechdaysBluetooth Low Energy dans les applications Windows
  • 40. © 2015 Microsoft Corporation. All rights reserved. tech days• 2015 #mstechdays techdays.microsoft.fr Bluetooth Low Energy dans les applications Windows