Stefano Sanna
Introduzione alla tecnologia iBeacon
Open Reply
ROME 27-28 marzo 2015
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Presentazioni
Localizzazioni e prossimità
Bluetooth Low Energy in due slide
iBeacon in due slide
iBeacon nel dettaglio
Hands-on con Android
Referenze e conclusioni
Agenda
Bluetooth Low Energy device 

by Nordic Semiconductor
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Manager @

Passionate mobile developer since 1999
It all began with a Psion 5MX…
Technical writer
Android Programmazione Avanzata
Java Micro Edition “network programming”





Loyal JIPDay/JavaDay/Codemotion speaker!
Speaker
2013201320122005 2006 2007 2009 2010
medaglia!
medaglia
medaglia!
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
iBeacons è una tecnologia proprietaria sviluppata da Apple, le cui
specifiche sono coperte da accordi di riservatezza con terze parti che
producono dispositivi compatibili
Questa presentazione non è basata su reverse-engineering di componenti
software proprietari di Apple né sull’attacco a componenti cifrate, ma
sull’analisi dei pacchetti in chiaro trasmessi dai beacon stessi
Le informazioni contenute in questa presentazione hanno puro scopo
divulgativo e non sono da considerarsi un riferimento tecnico alla specifica
di Apple. Si invita il lettore a contattare per eventuali partnership:
Becoming a Licensee - Get access to resources for developing or manufacturing hardware that
integrates iBeacon technology using the iBeacon Proximity Specification. As a Licensee, you’ll
receive: iBeacon Logo and Identity Guidelines, iBeacon technical specifications, Hardware technical
support. To become an iBeacon Licensee you will need to create or register a business Apple ID,
submit an enrollment form, complete a credit review, and execute an iBeacon License.
Proprietà intellettuale e licenze
https://developer.apple.com/ibeacon/
Logo ufficiale iBeacons, il
cui utilizzo è concesso
esclusivamente licenziatari
della tecnologia.
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
• •
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Location & Proximity
•
Geofence
Region
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
WiFi
Nasce per essere tutt’altro che a corto raggio!
Alta velocità, alti consumi

Bluetooth Classic
Inefficace in ambienti affollati (di device)
Tempi di scansione inadeguati (sino a 15-20s)

Infrared
Oltre che obsoleto, funziona solo con ricezione a vista (letteralmente)

NFC + Accelerometro/Giroscopio
Affascinante, ma difficile attuazione
Localizzazione a corto raggio e prossimità
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
WWDC 2013, lancio di iOS7
“iBeacons for Bluetooth LE micro location” (Craig Federighi)
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Accelerazione
Fonte: Google Trends per “Bluetooth Low Energy”
WWDC 2013
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Specializzazione a basso consumo del Bluetooth
Fa parte della specifica Bluetooth 4.0 (e successive)
Utilizza parte dello stack di Bluetooth Classic
Richiede hardware dedicato (non basta update software)
Definisce due ruoli (central vs peripheral) non interscambiabili
Caratteristiche comunicazione
ridottissima complessità
bassa velocità
corto raggio
bassa potenza
… al fine di avere consumi irrisori e dimensioni minuscole
Bluetooth Low Energy in due slide
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Bluetooth Classic
Il dispositivo che effettua la scansione (inquirer) invia un messaggio
broadcast per rilevare i dispositivi limitrofi
Se configurati come “visibili”, i dispositivi prossimi rispondono con un
messaggio di presenza in un tempo variabile
L’intero processo può richiedere molti secondi
In caso di sovraffollamento, il processo fallisce (senza errori!)
Bluetooth Low Energy
Se configurati come “visibili”, i dispositivi (peripheral) emettono
spontaneamente un messaggio periodico di advertising
Il pacchetto di advertising può contenere informazioni utili, evitando
connessioni superflue
La scansione avviene in pochi secondi e il sovraffollamento è

gestito correttamente
Discovery e advertising
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Un iBeacon è un device BLE Peripheral che emette
periodicamente un pacchetto di advertising contenente,
su campo custom (Manufacturer Specific), un
identificativo (UUID) e due variabili (major e minor)
Un valore indica il livello di segnale ad un metro di
distanza: il ricevente, confrontando il livello di segnale
ricevuto e quello dichiarato dal beacon, è in grado di
stimare la distanza (immediate, near, far)
L’app resta dormiente finché l’utente non entra nella
regione di un beacon, ovvero un apposito servizio (di
sistema o custom) rileva il beacon con UUID desiderato,
risvegliandola e attirando l’attenzione dell’utente
iBeacon in due slide
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Caso d’uso tipico
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Regioni
•
•
immediate
near
far
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Il payload del pacchetto di advertising in BLE
Field 1 Field 2 Field n Field N…
31 byte (max 2 pacchetti)
Field n
Lunghezza
(1 byte)
ID Campo
(1 byte)
Payload
…
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Il field “Manufacturer Specific” di un iBeacon
0x1A
(26 byte)
0xFF
(Man. Spec.)
0x4C00
(Man ID: Apple 0x004C, little endian)
0x02
(beacon?)
0x15
(length?)
UUID UUID
UUID UUID UUID UUID
UUID UUID UUID UUID
UUID UUID UUID UUID
UUID UUID Major
Minor Power
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
UUID diversi indicano servizi/provider diversi
Dato un UUID, il Major indica la classe di
appartenenza del beacon
Dati UUID e Major, il Minor indica lo specifico
beacon all’interno di una classe
UUID, Major, Minor
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
UUID, Major e Minor
Policlinico
Umberto I
Policlinico
Gemelli
Bambin
Gesù
UUID
02FF12CC..
23
02FF12CC..
23
02FF12CC..
23
Major 1 2 3
Minor
Pronto
soccorso
45 45 45
Pediatria 46 46 46
Ortopedia 47 47 47
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Chip compatibile Bluetooth 4.0 peripheral
Più diffusi: Texas Instruments, Nordic Semiconductor, Broadcom
Spesso con funzionalità di microcontrollore
Antenna miniaturizzata su PCB
Batteria a bottone integrata
Programmazione
Via BLE (agendo su Characteristic apposite)
Via USB
Installazione
“a muro” o “a soffitto”
Solitamente sono autoalimentati
Muri, strutture e arredi determinano la morfologia della regione
Anatomia di un beacon
Bluetooth Low Energy device 

by Nordic Semiconductor
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Estimote
Pionieri nella produzione di beacon particolarmente 

accattivanti nel design e potenti per tool e SDK
Tra i primi certificati Apple, hanno recentemente lanciato i microscopici
“stickers” da attaccare a singoli oggetti.
Kontact
Meno curati come design, risultano più affidabili 

e di più facile manutenzione
Le recenti estensioni “cloud beacon” consentono 

la programmazione remota. Attualmente certificati Apple
“Senza infamia, senza lode” su eBay
È sufficiente cercare “iBeacon” per trovare soluzioni molto

economiche per iniziare la sperimentazione
Prodotti commerciali
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
iOS
È la piattaforma di riferimento: API e doc standard da iOS 7
https://developer.apple.com/ibeacon/

Android
Dipende dal supporto BLE, introdotto in Android 4.3
Meglio lavorare direttamente su Lollipop (potendo scegliere)
Sviluppo custom o con librerie di terze parti

Windows
Il supporto BLE completo arriverà su Windows 10
Linux
Bluetooth Low Energy supportato da Bluez 5.1 in poi
BLE & iBeacon per sistema operativo
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
È sufficiente una installazione di Linux “piccola a
piacere” (compresi Arduino Yun o Raspbian su
Raspberry PI) per farsi un iBeacon in casa
iBeacon “fai da te”
hciconfig hci0 up
hciconfig hci0 leadv 3
hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 UUID MAJOR MINOR POWER
HCI_LE_Set_Advertising_Data
HCI_LE_Set_Advertising_Data
seguono 30 byte
hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 76 6f 72 72 65 69 75
6e 61 70 6f 72 73 63 68 65 00 00 00 00 c5
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Hardware
Solo dispositivi con chipset Bluetooth 4.0
API
Android 4.2.x solo con librerie proprietarie (Samsung, HTC, Broadcom…)
API standard a partire da Android 4.3
API standard “affidabile” da KitKat
API standard “completa” da Lollipop
Esistono diverse librerie ed SDK open, ma vale la pena sperimentare!
Variabilità
Il comportamento dipende davvero dal dispositivo (povero Nexus 5!)
iBeacon su Android
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Tipica architettura su Android
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Scansione BLE su KitKat
BluetoothManager manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
adapter = manager.getAdapter();
boolean started = adapter.startLeScan(mLeScanCallback);
BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() {
@Override
public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) {
// trovato un qualsiasi device BLE
}
};
La callback è invocata per qualsiasi tipo di device BLE trovato
Occorre decodificare lo scanRecord per capire di che oggetto

si tratti (beacon, wearable, gadget…)
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
È possibile restringere la ricerca ai soli device con
un certo Manufacturer ID
È consentito indicare una maschera per il payload
Scansione BLE su Lollipop
final int MANUFACTURER_ID = 0x004c;
byte[] MAN_DATA = new byte[]{0x02, 0x15, 0x76, 0x6f, 0x72, 0x72, 0x65, 0x69, 0x75, 0x6e,
0x61, 0x70, 0x6f, 0x72, 0x73, 0x63, 0x68, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
byte[] MASK = new byte[] {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
0xff,0xff,0xff,0xff,0xff,0xff,0,0,0,0,0}
Beacon Service UUID Major Minor Power
4 byte 16 byte 2 byte 2 byte 1 byte
1,1,1,1 1,1, […], 1,1 0, 0 0, 0 0
Assegnato Assegnato Arbitrario Arbitrario Arbitrario
beacon service
major, minor, pwr
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Scansione BLE su Lollipop
BluetoothLeScanner scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner();
ScanFilter.Builder builder = new ScanFilter.Builder();
ScanFilter filter = builder.setManufacturerData(MANUFACTURER_ID, MAN_DATA, MASK).build();
ScanSettings.Builder ssbuilder = new ScanSettings.Builder();
ssbuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).setReportDelay(1000);
ArrayList<ScanFilter> filters = new ArrayList<>();
filters.add(filter);
scanner.startScan(filters, ssbuilder.build(), scanCallback);
Non supportato su Nexus 5!!!
Nota: la scansione è continua
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Scansione BLE su Lollipop
ScanCallback scanCallBack = new ScanCallback() {
@Override
public void onScanResult(int callbackType, ScanResult result) {
}
@Override
public void onBatchScanResults(List<ScanResult> results) {
}
@Override
public void onScanFailed(int errorCode) {
}
}
Contiene tutte le informazioni di basso (BluetoothDevice) e alto livello (Payload) del device trovato
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Il calcolo distanza smartphone-beacon dipende
dalla frequenza operativa (2.4GHz), dalle
caratteristiche dell’ambiente e dei due apparati
Il pathloss (attenuazione lungo il percorso) è:
PL = PWR - RSSI

La distanza approssimata è:
se PL < 0 (c’è un guadagno): D = (RSSI/PWR) ^ 10
se PL > 0 (attenuazione): D = 0.89976 * ratio^7.7095 + 0.111;
Valutazione della distanza
http://developer.radiusnetworks.com/2014/12/04/fundamentals-of-beacon-ranging.html
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Device as a beacon
Lo smartphone opera come un beacon, tracciabile da altri
Security
App vs beacon: è un beacon autentico o un clone?
Beacon vs app: si stanno abilitando app della concorrenza?
Privacy
Fixed beacon: quale app sta tracciando i beacon?
Progetti alternativi
Google Physical Web: http://google.github.io/physical-web/
AltBeacon: https://github.com/AltBeacon
Altri temi interessanti
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
La tecnologia iBeacon ha dato nuovo impulso alla
localizzazione indoor e all’erogazione di servizi in
prossimità
L’industria IoT sta adottando massicciamente BLE
come infrastruttura di comunicazione e le nuove
evoluzioni del protocollo renderanno ancora più
diffusi i servizi di localizzazione a cortissimo raggio
Si aprono delicate problematiche di sicurezza e
privacy, che devono essere affrontate con urgenza
ma con la dovuta lucidità
Conclusioni
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Apple: iBeacon for Developers
https://developer.apple.com/ibeacon/
Bluetooth Low Energy: The Developer's Handbook
by Robin Heydon
http://www.amazon.it/dp/013288836X
Learning iBeacon
by Craig Gilchrist
https://www.packtpub.com/application-development/learning-ibeacon
Letture utili
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Introduzione a Bluetooth Low Energy
Codemotion 2013 Milano
http://www.slideshare.net/gerdavax/bluetooth-low-energy-28763173




Augmented Smartphone
Droidcon IT 2014 Torino
http://www.slideshare.net/gerdavax/augmented-smartphone
Bluetooth Low Energy & Geofence
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
email
gerdavax AT “la posta di google”

twitter
@gerdavax
Contatti
Grazie
ROME 27-28 marzo 2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna]
Leave your feedback on Joind.in!
https://joind.in/event/view/3347

- Codemotion Rome 2015

  • 1.
    Stefano Sanna Introduzione allatecnologia iBeacon Open Reply ROME 27-28 marzo 2015
  • 2.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Presentazioni Localizzazioni e prossimità Bluetooth Low Energy in due slide iBeacon in due slide iBeacon nel dettaglio Hands-on con Android Referenze e conclusioni Agenda Bluetooth Low Energy device 
 by Nordic Semiconductor
  • 3.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Manager @
 Passionate mobile developer since 1999 It all began with a Psion 5MX… Technical writer Android Programmazione Avanzata Java Micro Edition “network programming”
 
 
 Loyal JIPDay/JavaDay/Codemotion speaker! Speaker 2013201320122005 2006 2007 2009 2010 medaglia! medaglia medaglia!
  • 4.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] iBeacons è una tecnologia proprietaria sviluppata da Apple, le cui specifiche sono coperte da accordi di riservatezza con terze parti che producono dispositivi compatibili Questa presentazione non è basata su reverse-engineering di componenti software proprietari di Apple né sull’attacco a componenti cifrate, ma sull’analisi dei pacchetti in chiaro trasmessi dai beacon stessi Le informazioni contenute in questa presentazione hanno puro scopo divulgativo e non sono da considerarsi un riferimento tecnico alla specifica di Apple. Si invita il lettore a contattare per eventuali partnership: Becoming a Licensee - Get access to resources for developing or manufacturing hardware that integrates iBeacon technology using the iBeacon Proximity Specification. As a Licensee, you’ll receive: iBeacon Logo and Identity Guidelines, iBeacon technical specifications, Hardware technical support. To become an iBeacon Licensee you will need to create or register a business Apple ID, submit an enrollment form, complete a credit review, and execute an iBeacon License. Proprietà intellettuale e licenze https://developer.apple.com/ibeacon/ Logo ufficiale iBeacons, il cui utilizzo è concesso esclusivamente licenziatari della tecnologia.
  • 5.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] • •
  • 6.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Location & Proximity • Geofence Region
  • 7.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] WiFi Nasce per essere tutt’altro che a corto raggio! Alta velocità, alti consumi
 Bluetooth Classic Inefficace in ambienti affollati (di device) Tempi di scansione inadeguati (sino a 15-20s)
 Infrared Oltre che obsoleto, funziona solo con ricezione a vista (letteralmente)
 NFC + Accelerometro/Giroscopio Affascinante, ma difficile attuazione Localizzazione a corto raggio e prossimità
  • 8.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] WWDC 2013, lancio di iOS7 “iBeacons for Bluetooth LE micro location” (Craig Federighi)
  • 9.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Accelerazione Fonte: Google Trends per “Bluetooth Low Energy” WWDC 2013
  • 10.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Specializzazione a basso consumo del Bluetooth Fa parte della specifica Bluetooth 4.0 (e successive) Utilizza parte dello stack di Bluetooth Classic Richiede hardware dedicato (non basta update software) Definisce due ruoli (central vs peripheral) non interscambiabili Caratteristiche comunicazione ridottissima complessità bassa velocità corto raggio bassa potenza … al fine di avere consumi irrisori e dimensioni minuscole Bluetooth Low Energy in due slide
  • 11.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Bluetooth Classic Il dispositivo che effettua la scansione (inquirer) invia un messaggio broadcast per rilevare i dispositivi limitrofi Se configurati come “visibili”, i dispositivi prossimi rispondono con un messaggio di presenza in un tempo variabile L’intero processo può richiedere molti secondi In caso di sovraffollamento, il processo fallisce (senza errori!) Bluetooth Low Energy Se configurati come “visibili”, i dispositivi (peripheral) emettono spontaneamente un messaggio periodico di advertising Il pacchetto di advertising può contenere informazioni utili, evitando connessioni superflue La scansione avviene in pochi secondi e il sovraffollamento è
 gestito correttamente Discovery e advertising
  • 12.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Un iBeacon è un device BLE Peripheral che emette periodicamente un pacchetto di advertising contenente, su campo custom (Manufacturer Specific), un identificativo (UUID) e due variabili (major e minor) Un valore indica il livello di segnale ad un metro di distanza: il ricevente, confrontando il livello di segnale ricevuto e quello dichiarato dal beacon, è in grado di stimare la distanza (immediate, near, far) L’app resta dormiente finché l’utente non entra nella regione di un beacon, ovvero un apposito servizio (di sistema o custom) rileva il beacon con UUID desiderato, risvegliandola e attirando l’attenzione dell’utente iBeacon in due slide
  • 13.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Caso d’uso tipico
  • 14.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Regioni • • immediate near far
  • 15.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Il payload del pacchetto di advertising in BLE Field 1 Field 2 Field n Field N… 31 byte (max 2 pacchetti) Field n Lunghezza (1 byte) ID Campo (1 byte) Payload …
  • 16.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Il field “Manufacturer Specific” di un iBeacon 0x1A (26 byte) 0xFF (Man. Spec.) 0x4C00 (Man ID: Apple 0x004C, little endian) 0x02 (beacon?) 0x15 (length?) UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID UUID Major Minor Power
  • 17.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] UUID diversi indicano servizi/provider diversi Dato un UUID, il Major indica la classe di appartenenza del beacon Dati UUID e Major, il Minor indica lo specifico beacon all’interno di una classe UUID, Major, Minor
  • 18.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] UUID, Major e Minor Policlinico Umberto I Policlinico Gemelli Bambin Gesù UUID 02FF12CC.. 23 02FF12CC.. 23 02FF12CC.. 23 Major 1 2 3 Minor Pronto soccorso 45 45 45 Pediatria 46 46 46 Ortopedia 47 47 47
  • 19.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Chip compatibile Bluetooth 4.0 peripheral Più diffusi: Texas Instruments, Nordic Semiconductor, Broadcom Spesso con funzionalità di microcontrollore Antenna miniaturizzata su PCB Batteria a bottone integrata Programmazione Via BLE (agendo su Characteristic apposite) Via USB Installazione “a muro” o “a soffitto” Solitamente sono autoalimentati Muri, strutture e arredi determinano la morfologia della regione Anatomia di un beacon Bluetooth Low Energy device 
 by Nordic Semiconductor
  • 20.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Estimote Pionieri nella produzione di beacon particolarmente 
 accattivanti nel design e potenti per tool e SDK Tra i primi certificati Apple, hanno recentemente lanciato i microscopici “stickers” da attaccare a singoli oggetti. Kontact Meno curati come design, risultano più affidabili 
 e di più facile manutenzione Le recenti estensioni “cloud beacon” consentono 
 la programmazione remota. Attualmente certificati Apple “Senza infamia, senza lode” su eBay È sufficiente cercare “iBeacon” per trovare soluzioni molto
 economiche per iniziare la sperimentazione Prodotti commerciali
  • 21.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] iOS È la piattaforma di riferimento: API e doc standard da iOS 7 https://developer.apple.com/ibeacon/
 Android Dipende dal supporto BLE, introdotto in Android 4.3 Meglio lavorare direttamente su Lollipop (potendo scegliere) Sviluppo custom o con librerie di terze parti
 Windows Il supporto BLE completo arriverà su Windows 10 Linux Bluetooth Low Energy supportato da Bluez 5.1 in poi BLE & iBeacon per sistema operativo
  • 22.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] È sufficiente una installazione di Linux “piccola a piacere” (compresi Arduino Yun o Raspbian su Raspberry PI) per farsi un iBeacon in casa iBeacon “fai da te” hciconfig hci0 up hciconfig hci0 leadv 3 hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 UUID MAJOR MINOR POWER HCI_LE_Set_Advertising_Data HCI_LE_Set_Advertising_Data seguono 30 byte hcitool -i hci0 cmd 0x08 0x0008 1e 02 01 1a 1a ff 4c 00 02 15 76 6f 72 72 65 69 75 6e 61 70 6f 72 73 63 68 65 00 00 00 00 c5
  • 23.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Hardware Solo dispositivi con chipset Bluetooth 4.0 API Android 4.2.x solo con librerie proprietarie (Samsung, HTC, Broadcom…) API standard a partire da Android 4.3 API standard “affidabile” da KitKat API standard “completa” da Lollipop Esistono diverse librerie ed SDK open, ma vale la pena sperimentare! Variabilità Il comportamento dipende davvero dal dispositivo (povero Nexus 5!) iBeacon su Android
  • 24.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Tipica architettura su Android
  • 25.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Scansione BLE su KitKat BluetoothManager manager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE); adapter = manager.getAdapter(); boolean started = adapter.startLeScan(mLeScanCallback); BluetoothAdapter.LeScanCallback mLeScanCallback = new BluetoothAdapter.LeScanCallback() { @Override public void onLeScan(final BluetoothDevice device, int rssi, final byte[] scanRecord) { // trovato un qualsiasi device BLE } }; La callback è invocata per qualsiasi tipo di device BLE trovato Occorre decodificare lo scanRecord per capire di che oggetto
 si tratti (beacon, wearable, gadget…)
  • 26.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] È possibile restringere la ricerca ai soli device con un certo Manufacturer ID È consentito indicare una maschera per il payload Scansione BLE su Lollipop final int MANUFACTURER_ID = 0x004c; byte[] MAN_DATA = new byte[]{0x02, 0x15, 0x76, 0x6f, 0x72, 0x72, 0x65, 0x69, 0x75, 0x6e, 0x61, 0x70, 0x6f, 0x72, 0x73, 0x63, 0x68, 0x65, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; byte[] MASK = new byte[] {0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0,0,0,0,0} Beacon Service UUID Major Minor Power 4 byte 16 byte 2 byte 2 byte 1 byte 1,1,1,1 1,1, […], 1,1 0, 0 0, 0 0 Assegnato Assegnato Arbitrario Arbitrario Arbitrario beacon service major, minor, pwr
  • 27.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Scansione BLE su Lollipop BluetoothLeScanner scanner = BluetoothAdapter.getDefaultAdapter().getBluetoothLeScanner(); ScanFilter.Builder builder = new ScanFilter.Builder(); ScanFilter filter = builder.setManufacturerData(MANUFACTURER_ID, MAN_DATA, MASK).build(); ScanSettings.Builder ssbuilder = new ScanSettings.Builder(); ssbuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER).setReportDelay(1000); ArrayList<ScanFilter> filters = new ArrayList<>(); filters.add(filter); scanner.startScan(filters, ssbuilder.build(), scanCallback); Non supportato su Nexus 5!!! Nota: la scansione è continua
  • 28.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Scansione BLE su Lollipop ScanCallback scanCallBack = new ScanCallback() { @Override public void onScanResult(int callbackType, ScanResult result) { } @Override public void onBatchScanResults(List<ScanResult> results) { } @Override public void onScanFailed(int errorCode) { } } Contiene tutte le informazioni di basso (BluetoothDevice) e alto livello (Payload) del device trovato
  • 29.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Il calcolo distanza smartphone-beacon dipende dalla frequenza operativa (2.4GHz), dalle caratteristiche dell’ambiente e dei due apparati Il pathloss (attenuazione lungo il percorso) è: PL = PWR - RSSI
 La distanza approssimata è: se PL < 0 (c’è un guadagno): D = (RSSI/PWR) ^ 10 se PL > 0 (attenuazione): D = 0.89976 * ratio^7.7095 + 0.111; Valutazione della distanza http://developer.radiusnetworks.com/2014/12/04/fundamentals-of-beacon-ranging.html
  • 30.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Device as a beacon Lo smartphone opera come un beacon, tracciabile da altri Security App vs beacon: è un beacon autentico o un clone? Beacon vs app: si stanno abilitando app della concorrenza? Privacy Fixed beacon: quale app sta tracciando i beacon? Progetti alternativi Google Physical Web: http://google.github.io/physical-web/ AltBeacon: https://github.com/AltBeacon Altri temi interessanti
  • 31.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] La tecnologia iBeacon ha dato nuovo impulso alla localizzazione indoor e all’erogazione di servizi in prossimità L’industria IoT sta adottando massicciamente BLE come infrastruttura di comunicazione e le nuove evoluzioni del protocollo renderanno ancora più diffusi i servizi di localizzazione a cortissimo raggio Si aprono delicate problematiche di sicurezza e privacy, che devono essere affrontate con urgenza ma con la dovuta lucidità Conclusioni
  • 32.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Apple: iBeacon for Developers https://developer.apple.com/ibeacon/ Bluetooth Low Energy: The Developer's Handbook by Robin Heydon http://www.amazon.it/dp/013288836X Learning iBeacon by Craig Gilchrist https://www.packtpub.com/application-development/learning-ibeacon Letture utili
  • 33.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Introduzione a Bluetooth Low Energy Codemotion 2013 Milano http://www.slideshare.net/gerdavax/bluetooth-low-energy-28763173 
 
 Augmented Smartphone Droidcon IT 2014 Torino http://www.slideshare.net/gerdavax/augmented-smartphone Bluetooth Low Energy & Geofence
  • 34.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] email gerdavax AT “la posta di google”
 twitter @gerdavax Contatti Grazie
  • 35.
    ROME 27-28 marzo2015 – Introduzione alla tecnologia iBeacon [Stefano Sanna] Leave your feedback on Joind.in! https://joind.in/event/view/3347