iBeacon for Dummies

37
Julio Galarón Touriño @jgalaron

description

Julio Galarón Betabeers Madrid - 25 Abril 2014

Transcript of iBeacon for Dummies

Page 1: iBeacon for Dummies

Julio Galarón Touriño@jgalaron

Page 2: iBeacon for Dummies

Beacon

Un beacon (baliza), es cualquier dispositivo que emite una determinada señal periódica que permite a otro dispositivo recibirla y actuar en consecuencia.Una baliza no puede identificar quién ha escuchado su señal.Los clientes no se conectan a las balizas, sólo escuchan las notificaciones que estas envían.

Page 3: iBeacon for Dummies

BluetoothSmart

También conocido como Bluetooth Low Energy (o Bluetooth LE)Desarrollado por Nokia en 2006 bajo la marca Wibree.Adoptado en 2010 bajo la nueva especificación bluetooth 4.Optimizado para bajo consumo (15mA en escritura y 2uA en reposo. Entre un 10 y 20 % menos con respecto a las versiones anteriores de BT, lo que permite el empleo de pequeñas pilas de tipo CR) y transmisiones de paquetes pequeños (236.7 kbps thoughtput)Altamente resistente al ruido y a la interferencia (hay que tener en cuenta que BT trabaja en la banda abierta de 2,4GHz)Chips con un coste relativamente bajo y que abarcan muy poca superficie en pcb.

Page 4: iBeacon for Dummies

Bluetooth Smart no es retrocompatible. Para asegurar el soporte con versiones anteriores de Bluetooth, se define un modo dual denominado Bluetooth Smart Ready.

Page 5: iBeacon for Dummies

Bluetooth emplea la modulación FHSS (Frequency Hopping Spread Spectrum. Espectro ensanchado por salto de frecuencia), aportando las siguientes ventajas en las comunicaciones:

1. Altamente resistentes al ruido y a la interferencia.2. Difíciles de interceptar.3. Pueden compartir una banda de frecuencia con muchos tipos de transmisiones convencionales con mínima

interferencia.

79 canales de 1MHz bluetooth classic40 canales de 2MHz bluetooth BLE

Page 6: iBeacon for Dummies

Roles generales en BLE

Bluetooth Smart presenta una arquitectura cliente/servidor:

Cliente: Realiza peticiones e interactúa con características (GATT Profile) Servidor: Responde a peticiones, maneja características, puede enviar notificaciones de cambios

Dentro del paradigma Bluetooth LE, existen 4 roles generales que puede implementar un dispositivo:

• Peripheral◦ Dispositivo de tipo servidor que provee datos a los clientes en forma de tabla GATT.

• Central◦ Dispositivo de tipo cliente que se conecta a un dispositivo de tipo Peripheral para leer/escribir.

• Broadcaster◦ Dispositivo de tipo servidor que no acepta conexiones entrantes pero que emite información.

• Observer◦ Dispositivo de tipo Cliente que escanea y analiza datos pero no inicia conexiones.

Generic Attribute Profile (GATT): El perfil GATT es una especificación general para enviar y recibir pequeños trozos de información llamados atributos sobre un enlace BLE.

Page 7: iBeacon for Dummies

iBeacon

iBeacon es el nombre (marca) elegido por Apple para denominar a una tecnología (abierta) que emplea Bluetooth LE como medio de transmisión y que permite a las aplicaciones móviles saber como de cercar están respecto a un dispositivo llamado beacon (baliza).

Page 8: iBeacon for Dummies

Posiblesaplicaciones iBeacon

El iBeacon se pensó para aportar a los usuarios nuevas experiencias en el mundo de retail (promociones, zonas de mayor demanda, hábitos de visita del cliente,...)

TREND REPORT Beacons http://go.mutualmobile.com/rs/mutualmobile/images/Trend_Report_Beacons.pdf

Page 9: iBeacon for Dummies

A parte del retail, también existen numerosas situaciones donde aplicando los 2 conceptos clave de esta tecnología (micro-localización e interacción/Compromiso/Contexto) pueden resultar bastante valiosas:

Museos y exhibiciones: Información de objetos, tracking de las zonas más visitadas, conferencias en una determinada zona,...

Transporte de masas: Conocer en que avión, linea de tren/metro/autobús se está viajando y conocer más información acerca de ella (tiempos de llegada, rutas,...)

Salud: Conocer información medica del paciente que se encuentra en determinada habitación, evitando cometer posibles errores.

Eventos deportivos: Indicar la ruta más corta desde el aparcamiento hasta localidad que va a ocupar el usuario.Parking: Localizar un vehículo o plaza libre.Localización de objetos perdidos.Automatización.

Page 10: iBeacon for Dummies

iBeacon características

Page 11: iBeacon for Dummies

Identificación de un iBeacon

Page 12: iBeacon for Dummies

Un iBeacon emplea para su identificación los siguientes 3 campos personalizables:

Proximity UUID (128 bit).

Major (16 bit).

Minor (16 bit)

Dando lugar a 3 niveles para identificar una micro-localización:

Sólo Proximity UUID.

Proximity UUID & Major.

Proximity UUID & Major & Minor.

En bluetooth 4, cada servicio tiene un identificador único de 16 o 128 bit denominado service UUID.Los identificadores de 16 bits son asignados por el “Bluetooth standards committee”, mientras que los identificadores únicos de 128 bits (gratuitos) son propios de cada fabricante .

Generador de UUIDs de 128 bits: http://www.itu.int/ITU-T/asn1/uuid.html

https://developer.bluetooth.org/gatt/profiles/Pages/ProfilesHome.aspx

Page 13: iBeacon for Dummies

4C00 02 15 585CDE931B0142CC9A1325009BEDC65E 0000 0000 C5

<company identifier (2 bytes)> <type (1 byte)> <data length (1 byte)> <uuid (16 bytes)> <major (2 bytes)> <minor (2 bytes)> <RSSI @ 1m>

• Apple Company Identifier (Little Endian), 0x004c• Data type, 0x02 => iBeacon• Data length, 0x15 = 21• UUID: 585CDE931B0142CC9A1325009BEDC65E• Major: 0000• Minor: 0000• Measured power at 1 meter: 0xc5 = -59

Ejemplo de los datos que contiene el campo de datos del paquete que emite una iBeacon

Page 14: iBeacon for Dummies

Zonas y rangos

Page 15: iBeacon for Dummies

La distancia entre un iBeacon y el dispositivo receptor está categorizada dentro de 3 rangos distintos:

• Inmediato: menos de 50cm.• Cerca: aproximadamente entre 50cm y 2,5m.• Lejos: más o menos entre 2,5m y 30/50m, dependiendo de parede y de la potencia de emisión y otros

muchos factores.

Estos rangos se definen para notificar cambios de zona a las aplicaciones cuando estas están en background. En foreground es posible obtener la distancia exacta a la baliza midiendo el nivel de señal que nos llega y comparándolo con el valor de señal a 1m que va encapsulado en el paquete que recibimos de la baliza.

Page 16: iBeacon for Dummies

APIs y soporte de iBeaconen Mobile y Desktop

Page 17: iBeacon for Dummies

Soporte softwareiOS7+OS X 10.9+

Soporte hardwareiPhone 4S+, iPad 3+, iPad mini, iPod touch 5+, iOS Simulator (host con bt4), ordenadores a partir del 2012

Necesidad de licencia MFI

Para desarrollar hardware BLE no es necesario adquirir una licencia MFI. Aunque sí se quiere hacer uso de la marca iBeacon si es necesario.

APIs Core Bluetooth Core Location

Observaciones

No permite escuchar cualquier UUID siendo necesario especificar los UUIDs con los que se quiere trabajar.

Integración con Passbook.

Advertising sólo en foreground.Background task, monitorización de cambio de zona.

Para el uso de los iBeacons es necesario tener activado el bluetooth y el servicio de localización.

Page 18: iBeacon for Dummies

http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

http://www.appcoda.com/ios7-programming-ibeacons-tutorial/

https://gravityjack.com/ibeacon-passbook-what-developers-need-to-know-best-practices-more

http://blog.twocanoes.com/post/68861362715/10-awesome-things-you-can-do-today-with-ibeacons

http://www.devfright.com/ibeacons-tutorial-ios-7-clbeaconregion-clbeacon/

https://github.com/Estimote/iOS-SDK

https://itunes.apple.com/us/app/lightblue/id639944780?mt=12

https://itunes.apple.com/es/app/lightblue-bluetooth-low-energy/id557428110?mt=8

Documentación relacionada:

Page 19: iBeacon for Dummies

https://github.com/sandeepmistry/osx-ble-peripheral

https://github.com/kdzwinel/phonegap-estimotebeacons

https://developer.apple.com/library/ios/documentation/UserExperience/Reference/PassKit_Bundle/Chapters/LowerLevel.html

http://beekn.net/2013/11/how-to-build-ibeacon-app/

https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLBeacon_class/Reference/Reference.html

Page 20: iBeacon for Dummies

Soporte software Android 4.3 (API Level 18)+

Soporte hardwareNexus 4, Nexus 7 2013, Moto G, Galaxy S3+, Galaxy Note II+, HTC One,...

APIs android.bluetooth

ObservacionesNo es necesario registrar los UUID.No permite hacer advertising.Background task.

Cada fabricante implementaba sus propias APIs. Con la llegada de la API Level 18, se intenta unificar APIs para el uso de BLE. No existe una API propia para iBeacon, aunque mediante las clases existentes es posible implementar la funcionalidad propuesta por Apple.

Page 21: iBeacon for Dummies

Documentación relacionada:

http://developer.radiusnetworks.com/ibeacon/android/download.html

http://www.ti.com/tool/sensortag-sw

https://www.youtube.com/watch?v=EC5-cEbr520#t=463

https://play.google.com/store/apps/details?id=com.macdom.ble.blescanner

https://play.google.com/store/apps/details?id=com.radiusnetworks.ibeaconlocate

https://play.google.com/store/apps/details?id=no.nordicsemi.android.beacon.service

Page 22: iBeacon for Dummies

Soporte software Windows 8 / 8.1 , Windows Phone 8.1

Soporte hardware Hardware con Windows 8/8.1 + módulo bluetooth 4Todos los dispositivos NOKIA (MS Mobile) Lumia WP 8

APIs Windows.Devices.Bluetooth.GenericAttributeProfile

ObservacionesNo permite escuchar cualquier UUID siendo necesario especificar los UUIDs con los que se quiere trabajar.Soporte para background task.

Page 23: iBeacon for Dummies

Documentación relacionada:

http://msdn.microsoft.com/en-us/library/windows/hardware/hh450825%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn264587.aspx

https://channel9.msdn.com/Events/Build/2014/2-519

http://developer.nokia.com/community/wiki/Introduction_to_Bluetooth_support_on_Windows_Phone_8

http://msdn.microsoft.com/en-us/library/windows/hardware/ff536596%28v=vs.85%29.aspx

http://msdn.microsoft.com/en-us/library/windows/hardware/ff536585%28v=vs.85%29.aspx

Page 24: iBeacon for Dummies

Soporte software Blackberry 10

Soporte hardware Z10, Z30, Q10

APIs Bluetooth Library

Observaciones Soporte Bluetooth 4 desde 2012 (Blackberry Dev Alpha)

Page 25: iBeacon for Dummies

Documentación relacionada:

http://supportforums.blackberry.com/t5/Native-Development-Knowledge/BlackBerry-10-Bluetooth-LE-primer-for-developers/ta-p/2287377

http://devblog.blackberry.com/tag/bluetooth-low-energy/

https://www.youtube.com/watch?v=dcrJZSL7dpg

https://github.com/blackberry/Cascades-Community-Samples

Page 26: iBeacon for Dummies

Soporte software Linux kernel 3.5

Soporte hardware Hardware con módulo bluetooth 4

APIs BLueZ

Observaciones Los kernels <= 3.4 no permite más de una conexión LE L2CAP.

BlueZ: official Linux Bluetooth protocol stack

Page 27: iBeacon for Dummies

https://github.com/carsonmcdonald/bluez-ibeacon

http://joost.damad.be/2013/08/experiments-with-bluetooth-low-energy.html

NodeJS:

https://www.npmjs.org/package/bleacon

https://github.com/sandeepmistry

https://code.google.com/p/pybluez/

Documentación relacionada:

Page 28: iBeacon for Dummies

iBeacon Dev KITS

* Existen numerosas plataformas en el mercado. Se han elegido las más representativas o peculiares.

Page 29: iBeacon for Dummies

Fabricante Gimbal (Qualcomm)

Precio $5 (Series 10) / $10 (Series 20) (precio dependiendo de volumen)

Duración batería 1-3 años (reemplazable)

Documentación https://www.gimbal.com/

Usado por Apple en sus Apple Stores.

Page 30: iBeacon for Dummies

FabricanteEstimote (Chip Nordic nRF51822 + Cortex M0)

Precio $99 pack de 3

Duración batería 2 años (CR2450 “no reemplazable”)

Documentación http://estimote.com/https://github.com/Estimote/

Una pila CR2450 proporciona una capacidad de alrededor de unos 620mAh.

Page 32: iBeacon for Dummies

FabricanteSensor Tag - Texas Instruments (CC2541 + 8051 MCU)

Precio $25

Duración batería 2 años (CR2032, reemplazable)

Documentación http://processors.wiki.ti.com/index.php/Bluetooth_SensorTag

Buena documentación, coste relativamente bajo, coste de la licencia del compilador entre $1300 - 3400$http://www.iar.com/Products/IAR-Embedded-Workbench/8051/

Page 33: iBeacon for Dummies

ReadBear http://redbearlab.com/ibeacon/

Radius Networks http://www.radiusnetworks.com/ibeacon/

Proximus IO http://www.proximus.io/

Texas Instruments CC2543

http://www.ti.com/tool/cc2543-broadcaster-rd

JNHuaMao HM-10/ HM-11

http://www.jnhuamao.cn/bluetooth.asp?ID=1

BLE 112 / 113https://www.bluegiga.comhttp://www.seeedstudio.com

CSR4.0 USB Dongle http://www.ebay.com/sch/i.html?_sacat=0&_from=R40&_nkw=csr+4.0&_sop=15

* Existen numerosas plataformas en el mercado. Se han elegido las más representativas o peculiares.

Otras plataformas:

La opción más barata para testeo de apps consisten en la emulación de un iBeacon vía software.

Page 34: iBeacon for Dummies

http://www.ti.com/lit/an/swra347a/swra347a.pdf

http://beekn.net/2014/04/will-apple-pull-plug-ibeacon-devices/

Documentación relacionada:

Influencia de la frecuencia de notificación y el consumo de batería en un baliza:

https://community.estimote.com/hc/en-us/articles/201538147-How-Advertising-Interval-and-TxPower-affect-Battery-Life

http://developer.radiusnetworks.com/2013/11/04/how-to-make-an-ibeacon-with-the-ti-cc2540.html

http://blog.bluetooth-smart.com/2011/10/05/bluetooth-low-energy-development-kits-2/

Parámetros para seleccionar un chip o plataforma de desarrollo BLE:

Page 35: iBeacon for Dummies

Seguridad y privacidad

La “seguridad” (una baliza no posee lógica alguna, tan sólo hace broadcasting de cierto dato) de un iBeacon puede verse comprometida en alguno de los siguientes aspectos:

Modificación de los datos de un iBeacon: El fabricante de la baliza permite personalización remota, pero no protege el sistema con una clave de acceso, permitiendo la modificación por cuenta ajena de los campos UUID, mayor y minor, inutilizando la baliza para su uso desde la app móvil o pudiendo alterar los datos para trabajar con la aplicación de un competidor.

Spoofing: Un iBeacon se puede suplantar con facilidad (los campos UUID, mayor y minor, se pueden obtener mediante sniffer o descopilación de la App móvil). La aplicación móvil ha de implementar algún mecanismo que evite en la medida de lo posible un ataque mediante spoofing.

Privacidad:Una posible medida para evitar que una aplicación pueda hacer tracking, consiste en deshabilitar los servicios de localización para dicha app (en el caso de iOS), pudiendo habilitarlos de nuevo cuando nos interese.

Page 36: iBeacon for Dummies

Documentación relacionada:

http://makezine.com/2014/01/03/reverse-engineering-the-estimote/

http://beekn.net/2014/01/can-estimote-be-hacked/

http://makezine.com/2014/01/03/hacking-the-ces-scavenger-hunt/

https://lacklustre.net/bluetooth/

http://beekn.net/2013/10/ibeacon-android-privacy-and-bluetooth-le/

Page 37: iBeacon for Dummies

Documentación extra Bluetooth Smart:

Bluetooth Low Energy: The Developer’s Handbook

http://chapters.comsoc.org/vancouver/BTLER3.pdf

https://www.bluetooth.org/en-us/specification/adopted-specifications

http://www.bluetooth.com/Pages/Bluetooth-Smart.aspx

https://developer.bluetooth.org/DevelopmentResources/Pages/default.aspx