34
Bluetooth Low Energy & Lumia Sensor Core per Windows Phone 8.1 Massimo Bonanni Microsoft MVP , Intel Software Innovator [email protected] @massimobonanni codetailor.blogspot.com

Bluetooth low energy & Lumia Sensor Core per Windows Phone 8.1

Embed Size (px)

Citation preview

Bluetooth Low Energy &

Lumia Sensor Core

per Windows Phone 8.1

Massimo BonanniMicrosoft MVP, Intel Software Innovator

[email protected]

@massimobonanni

codetailor.blogspot.com

• Bluetooth Low Energy

• Cos'è Bluetooth Low Energy

• Bluetooth vs Bluetooth LE

• Architettura

• BLE & Windows Phone 8.1 (Windows 8.1)

• BLE & Background task

• Lumia SensorCore

• Cos'è Lumia SensorCore

• Lumia SensorCore API

Agenda

• 2001 Nokia inizia lavorare su una nuova tecnologia wireless

• 2004 risultati pubblicati con il nome Bluetooth Low End Extension

• 2006 rilasciato pubblicamente come Wibree

• 2007 accordo per includere Wibree dentro Bluetooth come Ultra low power technology

• 2010 integrato come Bluetooth Smart dentro Core Specifications 4.0

• 2011 viene rilasciato iPhone 4S con supporto per BLE

• 2012 escono i primi dispositivi

• 2013 Windows 8.1 aggiunge supporto parziale per BLE

• 2014 Windows Phone 8.1 aggiunge supporto per BLE

Cos'è Bluetooth Low Energy - Storia

• Connectionless

• Dimensioni ridotte

• Low power (~30μA più di 300 giorni con una batteria)

• Low cost

• Collegamenti veloci 10 ms, latenza bassa 3-6 msec

• Raggio 10-30 metri

• Adaptive Frequency Hopping (AFH), resistente alle interferenze

• Proximity detection - Geofencing

• IoT, fitness, retail,…..

• iBeacons (no WP 8.1 )

Caratteristiche di Bluetooth LE

Classic vs Smart

Technical Specification Classic Bluetooth Bluetooth Smart

Distance/Range (theoretical max.) 100 m (330 ft) <100 m (<330 ft)

Over the air data rate 1–3 Mbit/s 1 Mbit/s

Application throughput 0.7–2.1 Mbit/s 0.27 Mbit/s

Active slaves 7Not defined; implementation

dependent

Security56/128-bit and application layer

user defined

128-bit AES with Counter Mode CBC-MAC and application layer user

defined

RobustnessAdaptive fast frequency hopping,

FEC, fast ACK

Adaptive frequency hopping, Lazy Acknowledgement, 24-bit CRC, 32-

bit Message Integrity Check

Latency (from a non-connected state) Typically 100 ms 6 ms

Total time to send data (det.battery life) 100 ms 3 ms

Attualmente BLE è supportato dalle seguentipiattaforme:

• iOS5+ (meglio iOS7 e successivi)

• Android 4.3+ (meglio 4.4 e successivi)

• Apple OS X 10.6 e successivi

• Windows 8 (XP, Vista e 7 supportano Bluetooth 2.1)

• Windows (Phone) 8.1

• GNU/Linux Vanilla BlueZ 4.93 o successivi

Supporto a BLE

• HTP - for medical temperature measurement devices.

• GLP - for blood glucose monitors.

• BLP - for blood pressure measurement.

• HRP - for devices which measure heart rate.

• CSCP - for sensors attached to a bicycle or exercise bike to measure cadence and wheel speed.

• RSCP - running speed and cadence profile.

• CPP - cycling power profile.

• LNP - location and navigation profile.

• FMP - the "find me" profile — allows one device to issue an alert on a second misplaced device

• PXP - the proximity profile — allows a proximity monitor to detect whether a proximity reporter is within a close range.

Dispositivi

Architettura

GATT Profiles

Genetic Attribute Profiles standard

https://developer.bluetooth.org/TechnologyOverview/Pages/GATT.aspx

• Client : Un dispositivo che invia comandi e richieste e accetta risposte. Ad esempio un PC o uno smartphone.

• Server : Un device che riceve comandi GATT e richieste e restituisce risposte. Per esempio un sensore di temperatura.

• Characteristic : Un dato trasmesso tra client e e server. Ad esempio il valore della temperature della stanza.

• Service : Una collezione di Characteristic tra loro correlate a fornire unaparticolare funzionalita’. Ad esempio un termomento potrebbe offrire la caratteristica della temperatura e quelle dell’interavllo di tempo di campionamento.

• Descriptor : Un descriptor fornisce informazioni addizionali sulla caratteristica(una sorta di matadato). Ad esempio la caratteristica temperature potrebbeavere come descrittori l’unita’ di misura ed il range di misurazione. I descriptor sono opzionali e ogni caratteristica puo’ avere un numero qualsiasi di descriptor.

GATT - Nomenclatura

GATT – Servizi e caratteristiche

Profile

Service

Characteristic

Characteristic

Characteristic

Value

Descriptor Descriptor

GATT Profiles

https://developer.bluetooth.org/TechnologyOverview/Pages/Profiles.aspx

DEMO

BLE Explorer

1. Modifica del manifest Package.appxmanifest

Bluetooth LE & WP 8.1

http://msdn.microsoft.com/it-it/library/windows/apps/br211430.aspx

2. Recupero dell’handle per il device bluetooth

LE

Bluetooth LE & WP 8.1

http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.bluetoothledevice.aspx

3. Recupero del servizio

Bluetooth LE & WP 8.1

http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.genericattributeprofile.gattdeviceservice.aspx

4. Recupero della/e caratteristiche

Bluetooth LE & WP 8.1

http://msdn.microsoft.com/en-us/library/windows.devices.bluetooth.genericattributeprofile.gattcharacteristic.aspx

5. Utilizzo della caratteristica (es. lettura del

dato dal sensore)

Bluetooth LE & WP 8.1

DEMO

TI BLE Sensor Taghttp://goo.gl/MqILbz

Possiamo sfruttare i background task di Windows Phone 8.1 per ricevere i dati notificati quando la nostra applicazione non è in foreground

1. Creare un progetto Windows Phone Runtime component e implementare IBackgroundTask

Background task

2. Modificare il file di manifest dell’applicazione

Windows Phone

Background task

3. Verificare che la nostra applicazione abbia i

privilegi per l’accesso ai background task

Background task

4. Registrare il task

Background task

DEMO

Background Task

SensorCore e’ un marchio registrato Qualcomm.

Si tratta di un “chip” in grado di integrare datiprovenienti da differenti sensori e processarliottimizzando il consumo di batteria.

Lumia SensorCore e’ la tecnologia sviluppata da Nokia (ora Microsoft) in collaborazione con Qualcomm per interagire con il SensorCore di Qualcomm su dispositivi Windows Phone.

Lumia SensorCore

Lumia SensorCore SDK e’ una collezione di API in grado di recuperare i dati provenientida SensorCore.

• Usato per tenere traccia delle attività fisica e movimento

• I sensori girano in background e raccolgono dati per un massimo di 10 giorni

• Sempre attivi ma in Low Power Mode

• Potrebbe fornire accesso a dati PRIVATI quindi può essere disabilitata e lo storico può essere cancellato

Lumia SensorCore SDK

• Dll disponibile da NuGet

• Architettura ARM o x86

• Microsoft Visual C++ 2013 Runtime Package for

Windows Phone

• Testing Tools opzionale

Lumia SensorCore SDK

Il package NuGet modifica anche il file di

manifest dell’applicazione

Lumia SensorCore SDK

• Quanti passi e per quanto tempo

• Caminata o corsa – usa anche l’intensità del movimento non solo la velocità

• Granularità 5 minuti – storico 10 giorni

• 5-6 secondi fino quando inizia vedere gli eventi

• Ci possono essere falsi positivi

Step Counter API

• Cambiamenti nell’attività del utente: fermo, cammina, corre…

• Delay tipico 5-10 sec per eliminare alcuni falsi positivi

• Risultati migliori dentro la borsa o in tasca

• Bisogna abilitare l’API

• API con risultati real-time e storico 10 giorni

Activity Monitor

• Lista di geo-coordinate• Usa principalmente celle del operatore e/o hotspot WiFi. GPS

solo se un’altra applicazione lo usa• Non fornisce dati in tempo reale• Prova indovinare l’indirizzi di casa e lavoro• Classificazione può durare 2-3 giorni• Area raggio almeno 200 metri, distanze minimo 500 m, tempo di

permanenza almeno 10 minuti

Place Monitor

• Simile a Place Monitor ma traccia i percorsi fatti

• API offline come Place Monitor

• Track point ogni 5 minuti e un minimo di 500 metri

• Accuratezza dipende da numero di celle o hotspot. Una corsa in un parco senza una sessione GPS attiva potrebbe registrare un solo trackpoint

TrackPoint Monitor

DEMO

Lumia Sensor Core

Q&A

Bluetooth LE• http://msdn.microsoft.com/en-us/library/windows/hardware/jj159880(v=vs.85).aspx

Texas Instrument BLE Sensor Tag• http://www.ti.com/ww/en/wireless_connectivity/sensortag/index.shtml?INTC=Senso

rTag&HQS=sensortag-bt

• https://sensortag.codeplex.com/

Lumia SensorCore• http://developer.nokia.com/lumia/nokia-apis/sensorcore

• http://developer.nokia.com/resources/library/sensorcore-api-ref/index.html

Riferimenti