Patrón de Diseño Beacon Action Manager para comunicar ... Boccardo - Informe de Tesis.pdfTesis...

111
Universidad Nacional de San Luis Facultad de Ciencias Físico Matemática y Naturales Tesis para optar a la titulación de postgrado correspondiente a la Maestría en Ingeniería de Soware Patrón de Diseño Beacon Action Manager para comunicar Aplicaciones Móviles (IoT) Lic. Yanina Soledad Boccardo Director: Dr. Germán Montejano Co-Director: Dr. Daniel Riesco Diciembre 2016

Transcript of Patrón de Diseño Beacon Action Manager para comunicar ... Boccardo - Informe de Tesis.pdfTesis...

 

Universidad Nacional de San Luis Facultad de Ciencias Físico Matemática y Naturales 

   

 

Tesis para optar a la titulación de postgrado correspondiente a la 

Maestría en Ingeniería de So�ware  

  

 

Patrón de Diseño Beacon Action Manager para comunicar Aplicaciones Móviles (IoT)  

   

   

Lic. Yanina Soledad Boccardo   

Director: Dr. Germán Montejano Co-Director: Dr. Daniel Riesco  

   

Diciembre 2016 

ÍNDICE 

1. INTRODUCCIÓN 1 1.1 Motivación y contribuciones 2 1.2 Trabajos relacionados 2 1.3 Objetivos 3 1.4 Estructura del documento 4 

2. MARCO TEÓRICO 52.1 Internet de las cosas 5 

2.1.1 Internet de las cosas como un sistema nervioso mundial 7 2.1.2 Gestión de la información 8 2.1.3 El impacto de internet de las cosas en la sociedad 9 2.1.4 Ámbitos de aplicación 10 

2.1.4.1 Medioambiente 10 2.1.4.2 Industria  11 2.1.4.3 Ciudades 12 2.1.4.4 Hogar 12 2.1.4.5 Personal 13 

2.1.5. Principales obstáculos 14 2.1.5.1 El precio 14 2.1.5.2 Elección de estándares 14 2.1.5.3 Innovación o violación de la privacidad 15 2.1.5.4 ¿Soluciones necesarias?  16 

2.2 Beacon 17 2.2.1 Beacons en internet de las cosas 18 2.2.2 Comunicación BLE 18 2.2.3 ¿Cómo funcionan?  19 

2.3 Bluetooth 21 2.4 Bluetooth Low Energy 21 

2.4.1 Introducción a BLE 21 2.4.2 ¿Qué hace a BLE diferente? 23 2.4.3 Principales características 23 2.4.4 Chips single-mode y dual-mode  25 

i

 

ÍNDICE 

 

2.4.5 Especificación 25 2.4.6 Configuraciones 26 

2.4.6.1 Conceptos básicos del protocolo 26 2.4.6.2 Generic Access Protocol (GAP) - advertising and connections 28 2.4.6.3 Attribute Protocol (ATT) 29 2.4.6.4 Generic Attribute Protocol - services and characteristics 30 

2.4.7 Paquete BLE 32 2.4.8 Pronóstico de mercado  33 

2.5 BLE vs NFC 35 2.5.1 Funcionamiento 35 2.5.2 Rango de acción 35 2.5.3 Eficiencia energética 35 2.5.4 Seguridad 36 2.5.5 Sistemas operativos 36 

2.6 Evolución de los teléfonos inteligentes 37 2.7 Sistemas operativos móviles  39 

2.7.1 iOS  39 2.7.1.1 Evolución 39 2.7.1.2 Desarrollo de aplicaciones 40 2.7.1.3 Participacion en el mercado 40 2.7.1.4 BLE en iOS 41 2.7.1.5 Tecnología iBeacon 41 

2.7.2 Android  44 2.7.2.1 Evolución 44 2.7.2.2 Desarrollo de aplicaciones 45 2.7.2.3 Participación en el mercado 45 2.7.2.4 BLE en Android 46 2.7.2.5 Eddystone 47  

3. ESPECIFICACIÓN DEL PATRÓN 50 3.1 Patrones 50 3.2 Especificación del patrón 51  

4. APLICACIÓN DEL PATRÓN 57 

4.1 Luggage Finder 57 4.1.1 Estructura de la aplicación  57 4.1.2 Diagramas 67 

4.2 Airport App 71 4.2.1 Estructura de la aplicación 71 

 

ii

 

ÍNDICE 

 

4.2.2 Diagramas 77 4.3 Zoo App 80 

4.3.1 Estructura de la aplicación  80 4.3.2 Diagramas 87 

4.4 Bakery app  89 4.4.1 Estructura de la aplicación  89 4.4.2 Diagramas 96 

 

5. CONCLUSIONES 97  

6. FUTURAS EXTENSIONES 99  

7. REFERENCIAS 101       

 

   

 

iii

 

 

1 |  INTRODUCCIÓN 

 

Quince años atrás, cuando se hablaba del futuro hacia el que nos conducía el avance de la                                 tecnología, se mencionaba la domótica: casas completamente robotizadas donde las                   tareas se realizan de forma automática o por control remoto. Sin embargo, la realidad ha                             ido aún más allá, e internet ha logrado algo más grande, un mundo de objetos                             interconectados y conectados a la red capaces de cumplir cada vez más funciones y más                             complejas, aplicable prácticamente a cualquier ámbito. Es el llamado Internet de las cosas                         (IoT). 

IoT permite que todos, personas y cosas, estén permanentemente conectados y puedan                       recibir y procesar información en tiempo real. IoT ya es una realidad presente en tendencias                             como wearables, electrodomésticos que ofrecen todo tipo de información al usuario.                     Siguiendo la filosofía de los objetos interconectados, todo ello se puede controlar desde el                           celular. Esta gran ola de tecnología, produjo una acelerada aceptación de los teléfonos                         inteligentes y tablets, donde las aplicaciones móviles se convierten en una herramienta                       cada vez más útil para comparaciones contextuales en el entorno de los usuario. 

La rápida evolución de la electrónica durante la última década hizo que la idea de IoT tome                                 una gran relevancia práctica. El tamaño, el costo y el consumo de energía del hardware se                               han reducido drásticamente. La aparición de estos pequeños dispositivos junto con la                       expansión de las redes de comunicación, permiten incorporar inteligencia y conexión a los                         objetos del mundo real, transformando lo que era una red global de personas en una red                               global de todas las cosas. 

En este contexto es donde surgen los dispositivos beacons, dispositivos que transmiten                       información para poder conocer el contexto de los usuarios a través de aplicaciones                         móviles. Los beacons son dispositivos que transmiten pequeñas señales (piezas de                     información) anunciando su presencia a los dispositivos que se encuentren dentro de su                         radio de alcance, utilizando la tecnología BLE (Bluetooth Low Energy) [9].  

Se debe pensar en un beacon como un faro. Los faros envían haces de luz que ayudan a los                                     barcos a navegar hacia su destino. Los beacons emiten señales de radio (como el haz de un                                 faro) que permiten a los dispositivos compatibles, como los smartphones, detectar estas                       señales y comprender lo que se encuentra a su alrededor.   

   1

 

1 INTRODUCCIÓN 

Esto brinda a las aplicaciones nuevas posibilidades de reconocimiento de ubicación.                     Cuando un teléfono móvil entra en el rango de alcance de la señal de un beacon, la                                 aplicación instalada recibe la señal transmitida y puede responder en consecuencia. 

La aparición de nuevos dispositivos y tecnologías traen consigo nuevos desafíos y                       problemas para aquellos desarrolladores que desean incorporar estas nuevas tecnologías y                     dispositivos en sus aplicaciones. Es por eso que en este proyecto se especifica un patrón de                               diseño para aplicaciones móviles que interactúan con dispositivos beacons para conocer el                       contexto de los usuarios, brindando a los desarrolladores una herramienta útil a la hora de                             incorporar esta nueva tecnología en sus aplicaciones. 

 

1.1 MOTIVACIÓN Y CONTRIBUCIONES A la hora de plantear la arquitectura de una aplicación que se relaciona con dispositivos                             beacon, para lograr un mejor conocimiento del contexto del usuario, es necesario conocer                         cómo funcionan estos dispositivos y las tecnologías a utilizar del lado de la aplicación, para                             que el funcionamiento de la misma y la interacción con los dispositivos sea la correcta. 

Estos dispositivos y las tecnologías relacionadas, se conocen hace solo un par de años, por                             lo que no existe mucha documentación confiable, y es necesario invertir cierto tiempo                         investigando para poder definir la mejor forma de utilizarlos. La aparición de nuevos                         dispositivos y tecnologías permite definir nuevos patrones.  

En base a lo mencionado, en este trabajo de tesis se intenta demostrar la hipótesis que es                                 factible definir un patrón de diseño para aplicaciones móviles que interactúan con                       dispositivos beacons para conocer el contexto de los usuarios. 

Para lograr demostrarla se desarrollarán diferentes aplicaciones móviles que interactúan                   con dispositivos beacons en diversos contextos, en las cuales se implementará el patrón                         especificado en este proyecto para establecer la comunicación entre las aplicaciones                     móviles y los dispositivos beacon. 

 

1.2 TRABAJOS RELACIONADOS 

Se desarrollaron diferentes trabajos de investigación, aplicaciones y demos que se centran                       en las propiedades de los dispositivos beacon y en cómo funcionan. A continuación se                           nombran algunos de ellos. 

   2

 

1 INTRODUCCIÓN 

En el año 2015, en CASCON (Centre for Advanced Studies Conference), los autores del                           proyecto “Context-aware mobile apps using iBeacons: towards smarter interactions” [79]                   describen cuatro aplicaciones móviles para dispositivos iOS que utilizan el protocolo                     iBeacon e interactúan con los dispositivos beacons para proporcionar relevancia contextual                     y experiencias personalizadas al usuario. Presentan los antecedentes en el área, la                       arquitectura que diseñaron y desarrollaron para las aplicaciones, las propias aplicaciones,                     e informes sobre los resultados de los casos de prueba en escenarios reales.  

El trabajo “Experiences with using iBeacons for Indoor Positioning” [80] publicado en ISEC                         '16 habla de las experiencias de los investigadores con iBeacon, sobre su eficacia en                           localización en interiores (indoor location).  

El proyecto “An iBeacon primer for indoor localization: demo abstract” [81] publicado en                         BuildSys '14 presenta un conjunto de herramientas de localización desarrolladas utilizando                     iBeacon, proporcionando una mirada en profundidad a la viabilidad de BLE como una                         tecnología de posicionamiento en interiores. Su sistema muestra un error promedio de                       estimación de la posición de 53 centímetros. 

En el articulo "uBeacon: Configuration based Beacon tracking" [82], publicado en IEEE '16,                         los autores describen uBeacon, un servicio cloud con una interfaz web que permite a los                             usuarios definir las configuraciones que incluyen restricciones entre los receptores de señal                       de beacons y los beacons vinculados a objetos o personas. uBeacon almacena estas                         configuraciones en una base de datos, monitorea continuamente los datos de los beacons,                         y notifica a los usuarios a través de notificaciones push cada vez que se ha violado una                                 regla de una configuración. 

En el artículo “S-Beacon: Next generation BLE beacon solution for enhanced                     personalization” [83], publicado en IEEE '16, los autores introducen S-Beacon, la próxima                       generación de beacon BLE, una tecnología BLE basada en smartphones y wearables para                         indicar la presencia del usuario junto con las preferencias personales y los datos                         demográficos que sirve como un factor clave para la mejora de servicios personalizados. En                           este trabajo se discute la proximidad mejorada basada BLE, el consumo optimizado de los                           recursos, y capacidad de gestión de dispositivos beacons. 

 

1.3 OBJETIVOS 

Este trabajo tiene como objetivo principal definir un patrón de diseño que permita prevenir                           aquellos problemas típicos y recurrentes que puedan surgir a la hora de desarrollar una                           aplicación móvil que interactúa con dispositivos beacon para obtener información del                     contexto de los usuarios. Es decir, se intenta demostrar la hipótesis del hecho que es                             

   3

 

1 INTRODUCCIÓN 

factible definir un patrón de diseño para aplicaciones móviles que interactúan con                       dispositivos beacons para conocer el contexto de los usuarios. 

Para lograr este objetivo será necesario realizar las siguientes metas: 1: Investigar la                         Tecnología BLE. 2: Conocer el funcionamiento y características de los dispositivos beacon y                         los diferentes ámbitos de aplicación. 3: Analizar los sistemas operativos móviles para                       comprender las limitaciones y las herramientas que poseen para interactuar con los                       dispositivos beacon. 4: Construir diferentes casos de estudio.  

A los fines de validación del modelo, se desarrollarán diferentes aplicaciones móviles que                         interactuarán con dispositivos beacons en diversos contextos, en las cuales se                     implementará el patrón especificado en este proyecto para establecer la comunicación                     entre las aplicaciones móviles y los dispositivos beacon. 

 

1.4 ESTRUCTURA DEL DOCUMENTO 

Luego de la introducción previa, el resto del documento se estructura de la siguiente forma:                             En el capítulo 2 se realiza una introducción sobre Internet de las cosas, se explica qué son                                 los dispositivos beacon, cómo funcionan y el protocolo BLE que utilizan para anunciarse.                         También se describe la evolución por la que atravesaron en la última década los                           dispositivos móviles incluyendo una descripción sobre los actuales sistemas operativos                   móviles y las herramientas que proveen para interactuar con los dispositivos Beacons. En el                           capítulo 3 se describe el patrón propuesto, detallando su estructura, componentes,                     colaboraciones y aplicación, entre otras características. En el capítulo 4 se describen                       diferentes casos de estudio de aplicaciones móviles que aplican el patrón, detallando el                         funcionamiento de cada aplicación y cómo se aplicó el patrón propuesto en cada caso.                           Finalmente se presentan las conclusiones y trabajos futuros. 

   4

 

 

2 |  MARCO TEÓRICO 

 

Años atras, cuando se hablaba del futuro hacia el que nos llevaba el progreso tecnológico,                             siempre se mencionaba la domótica, la promesa de casas completamente robotizadas                     donde todas las tareas se realizarían de forma automática o por control remoto. Sin                           embargo, la realidad ha ido aún más allá, e Internet ha logrado algo más grande, un mundo                                 de objetos interconectados y conectados a la red capaces de cumplir cada vez más                           funciones y más complejas. Es el llamado Internet de las cosas .  

Esta gran ola de tecnologıa, produjo una acelerada aceptación de los teléfonos inteligentes                         y tablets, que sufrieron una gran evolución en los últimos años transformándose en un                           objeto casi indispensable de la vida cotidiana. Esto lleva a la aparición de nuevos                           dispositivos como los beacon, que convierten a los dispositivos móviles en una herramienta                         cada vez más útil para conocer el entorno de los usuarios. 

 

2.1 INTERNET DE LAS COSAS 

Las personas viven en un mundo conectado. Mas de 3.000 millones de personas se                           conectan a Internet [1], comparten información y se comunican a través de blogs, redes                           sociales y otros medios. 

El concepto, mundialmente conocido como el Internet de las Cosas , consiste en que tanto                           personas como objetos puedan conectarse a Internet en cualquier momento y lugar. Tan                         simple como eso. Sin embargo, la sencillez de su definición no debe cegar frente a la                               complejidad de sus implicaciones.  

El Internet de las Cosas es una realidad muy presente que está evolucionando. Millones de                             dispositivos están siendo conectados entre sí a través de distintas redes de comunicación.                         Pequeños dispositivos permiten medir desde la temperatura de una habitación hasta el                       tráfico de taxis en una ciudad. A diario, cámaras de vigilancia velan por la seguridad en los                                 edificios y los paneles del metro nos indican el tiempo que falta hasta la llegada del                               siguiente tren.  

El mundo se está convirtiendo en un campo de información global y la cantidad de datos                               que circulan por las redes está creciendo exponencialmente. Términos como gigabyte (mil                       

 

 

 5

 

2 MARCO TEÓRICO 

millones de bytes) o terabyte (un billón de bytes) están quedando desactualizados y dan                           paso a los petabytes (mil billones de bytes) o exabytes (un trillón de bytes) que reflejan más                                 la realidad de la información global. 

El Internet de las cosas no es una idea nueva. A principios de los años noventa, Mark Weiser,                                   director científico del Xerox Palo Alto Research Center, introdujo el concepto de                       computación ubicua o ubicomp , que apostaba por un futuro en el que la computación                           formaría una parte integral de la vida diaria de las personas y resultaría transparente para                             ellos [2]. Esta expresión fue utilizada desde 1988 en los ambientes de investigación y saltó a                               la luz pública con su artículo The Computer for the Twenty-First Century [2] .  

Para Weiser, las computadoras personales deberían ser sustituidas por dispositivos                   invisibles encajados en los objetos diarios, pues eran elementos demasiado enredados que                       suponían demasiado tiempo y atención por parte de los usuarios. Las computadoras                       requerían una atención casi exclusiva de estos y los distraían de otras tareas.  

La computación ubicua se definió entonces como el intento de integrar la informática en el                             entorno personal a través de variados dispositivos con el objetivo de ayudar en el                           desarrollo de las tareas diarias. El concepto también es conocido como calm technology ,                         persuasive computing , things that think o everyware .  

Pues bien; esta ubicuidad tecnológica, pensada para el entorno doméstico y personal,                       aspira en la actualidad a expandirse al ámbito de la industria, servicios, consumo o medio                             ambiente, de la mano de la rápida evolución de la electrónica y las redes, bajo el nombre                                 de Internet de las cosas . 

Sin embargo el término Internet de las cosas se le atribuye a Kevin Ashton, cofundador y                               director del Auto-ID Labs [3] del Massachusetts Institute of Technology (MIT), una red de                           laboratorios centrado en el desarrollo de etiquetas RFID y sensores, que en 1999 utilizó la                             expresión Internet de las Cosas para llamar la atención de los directivos de la empresa                             Project & Gamble (P&G) [30] . 

Intentaba hacerles ver que la inclusión de etiquetas RFID en sus cadenas de suministros,                           sumado a las posibilidades de la Internet de entonces, podría acarrear importantes                       beneficios para su empresa [4].  

La rápida evolución de la electrónica durante la última década hizo que la idea de Internet                               de las Cosas tome una gran relevancia práctica. Esta evolución ha seguido el patrón                           marcado por el visionario Gordon Moore, cofundador del fabricante de microprocesadores                     Intel. Moore formuló su famosa predicción, conocida a nivel mundial como Ley de Moore , en                             1965, refinándola en 1975 [5]. En ella establece que el número de transistores que contiene                             un chip se duplica cada dos años aproximadamente. Bien sea porque Moore fue capaz de                             predecir el futuro o porque los fabricantes de procesadores fijaron sus palabras como un                           

   6

 

2 MARCO TEÓRICO 

objetivo a largo plazo, la Ley de Moore se ha venido cumpliendo durante los últimos                             cuarenta años.  

Funciones que décadas atrás requerían de una computadora del tamaño de una habitación                         son hoy día realizadas con facilidad por simples dispositivos electrónicos del tamaño de                         una gota de agua. El tamaño, el costo y el consumo de energía del hardware se han                                 reducido drásticamente, por lo que ahora es posible fabricar dispositivos electrónicos                     diminutos a un coste muy reducido.  

Estos pequeños dispositivos, junto con la expansión de las redes de comunicación,                       permiten incorporar inteligencia y conexión a los objetos del mundo real y están                         transformando lo que era una red global de personas en una red global de todas las cosas. 

  

2.1.1 INTERNET DE LAS COSAS COMO UN SISTEMA  NERVIOSO MUNDIAL 

Paul Horn, científico y vicerrector de Investigación senior de NYU, exvicepresidente senior                       de IBM y experto del Future Trends Forum, afirma que el mundo está siendo instrumentado                             e interconectado, a la vez que se vuelve más inteligente. Los objetos que forman parte de                               nuestra vida cotidiana siempre han generado gran cantidad de información, pero esa                       información estaba fuera de nuestro alcance. Con el Internet de las Cosas, pequeños                         dispositivos están siendo integrados en los objetos del mundo real y son instrumentos que                           proporcionan información de prácticamente todo lo que es posible medir.  

De esta manera, cada vez se está más interconectado y las personas y objetos pueden                             interactuar de manera completamente distinta. Hoy día hay +1.000 millones de usuarios de                         Internet, +4.000 millones de personas con teléfono móvil y una lista interminable de                         objetos (autos, electrodomésticos, cámaras, etc.) conectados a Internet de una forma u otra                         [6].  

Cualquier objeto es susceptible de ser conectado y manifestarse en la Red. Las etiquetas                           RFID (radio frequency identification), en español identificación por radiofrecuencia, son                   pequeños dispositivos, que pueden ser adheridos a un producto, persona o animal para                         almacenar información relevante y dinámica.  

Mediante radiofrecuencia, la información viaja a una computadora o dispositivo móvil con                       acceso a Internet. Dicha información puede ser recibida por un usuario para su                         interpretación.  

En 2010, cerca de 3.000 millones de etiquetas RFID se encontraban en circulación en el                             mundo [6]. Las compañías de logística pudieron optimizar sus cadenas de suministro al                         

   7

 

2 MARCO TEÓRICO 

conocer con precisión la posición de todas sus mercancías y los vehículos pueden circular                           sin detenerse en los peajes de las autopistas. Estos no son más que los primeros pasos de                                 Internet de las Cosas. 

 

2.1.2 GESTIÓN DE LA INFORMACIÓN 

Internet de las Cosas implica que todo objeto físico o virtual conectado a una red puede                               constituir una fuente de datos. Esto implica la continua generación de grandes cantidades                         de datos. Si se sigue con un crecimiento al ritmo actual, para el año 2020 el universo digital                                   será de 35 zettabytes , cuarenta y cuatro veces más grande que en el año 2009 [31]. 1

Esta cantidad desmesurada de información está empezando a transformar la forma de                       hacer negocios, la organización en el sector público y el día a día de millones de personas.                                 La empresa estadounidense Walmart, por ejemplo, maneja más de un millón de                       transacciones por hora.  

Por ello, empresas y emprendedores se encuentran en la carrera por innovar en términos                           de almacenamiento, velocidad, acceso y métodos de análisis de datos. Google cuenta con                         más de treinta centros de datos, equivalentes a más de un millón de servidores. Para                             alcanzar este despliegue, su competencia, Microso�, está invirtiendo miles de millones de                       dólares en añadir hasta 20.000 servidores al mes. Se espera que en el año 2020, el consumo                                 de estos centros equivalga al consumo actual de electricidad de Alemania, Canadá y Brasil                           juntos.  

Los expertos también están inmersos en el planteamiento de los algoritmos que den                         respuesta a un mundo ubicuo. La programación de los objetos para dotarlos de la habilidad                             de comunicarse resulta complicada, sobre todo teniendo en cuenta que deben interactuar                       con sistemas cada vez más diversos y autónomos. Gran parte del valor económico se                           centrará en los algoritmos que permitan la comunicación m2m (machine to machine) y el                           desarrollo de servicios de so�ware.  

Dada la importancia de procesar toda la información, el almacenamiento y la velocidad de                           búsqueda no constituyen los únicos retos. La habilidad para analizar mucha información en                         tiempo real es fundamental para las organizaciones, así como las oportunidades de                       mercado que puedan surgir para empresas que sean capaces de ofrecer este servicio. Al fin                             y al cabo, la rapidez y eficiencia en información son ventajas competitivas de cara a cliente.  

1 1 zettabyte = 1 trillon de gigabytes 

   8

 

2 MARCO TEÓRICO 

2.1.3 EL IMPACTO DE INTERNET DE LAS COSAS  EN LA SOCIEDAD 

El Internet de las Cosas supone un avance con gran impacto sobre la sociedad y los                               negocios. Más de mil millones de usuarios de todo el mundo utilizan Internet tanto en su                               vida laboral como en la social y gracias a la tecnología wireless se han ampliado las                               posibilidades de interacción con la Red a cualquier lugar en cualquier momento.  

A medida que la información y las personas están cada vez más conectadas, la tecnología                             sirve como herramienta de colaboración y toma de decisiones en un mundo donde                         converge lo físico con lo digital. La información peer-to-peer y las redes sociales son                           ejemplos de cómo el esfuerzo individual tiene el potencial de convertirse en una plataforma                           abierta de miles de millones de personas.  

Esto ha supuesto la creación de una plataforma de nuevos productos y servicios con un alto                               componente de innovación. Las iniciativas ya no tienen por qué llevar aparejado un                         incentivo económico para terminar de despegar. La simple voluntad de compartir y                       concebir los descubrimientos técnicos como valor de dominio público permite que Internet                       de las Cosas cobre dimensiones sociales raramente experimentadas, aunque cada vez más                         frecuentes.  

EL CONSUMO EN INTERNET DE LAS COSAS 

Hoy día existe una creciente preocupación por el desarrollo sostenible, motivada por la                         escasez de recursos. Esta situación se ha visto agravada por el cambio climático, el                           aumento de la población en áreas urbanas y el hecho de que los países emergentes están                               adoptando progresivamente los patrones de producción y consumo de los países                     desarrollados.  

En este contexto, el reto del siglo XXI consiste en desarrollar avances encaminados a frenar                             el consumo descontrolado de recursos naturales y energéticos. No es casualidad que la                         optimización del consumo de recursos constituya uno de los campos más prometedores                       para el Internet de las Cosas.  

Así, por ejemplo, Pacific Gas and Electric (PG&E) [32] está implementando medidores                       inteligentes [33] que proporcionan información en tiempo real del consumo de gas y                         electricidad, así como del costo asociado, en hogares de Estados Unidos. De esta manera, el                             consumidor puede darse cuenta de que el costo de producir energía no es constante a lo                               largo del día y que es posible alterar su consumo para disminuir el importe de su factura.  

Curiosamente, se presenta ante un círculo vicioso: mientras la aplicación del Internet de las                           Cosas en redes inteligentes permite realizar un consumo sensato de la energía, la propia                           

   9

 

2 MARCO TEÓRICO 

industria de las tecnologías de la información y la comunicación (TIC) es una consumidora                           creciente de energía.  

Para el año 2030 se espera que el consumo eléctrico mundial se haya doblado, en parte por                                 el aumento exponencial del consumo por parte de las TIC. Además de las redes inteligentes                             de energía, otras aplicaciones en torno a un consumo más responsable se suceden en la                             gestión del agua, el transporte inteligente y el control de tráfico, la gestión de residuos y                               reciclaje, el diseño de edificios, etc.  

 

2.1.4 ÁMBITOS DE APLICACIÓN 

Los ámbitos de aplicación cubren prácticamente todas las facetas de la vida diaria, desde la                             salud pasando por fabricación, seguridad, ciudades inteligentes y un largo etcétera.  

El alcance masivo de esta tecnología hace que realizar un análisis exhaustivo de los                           ámbitos de aplicación se transforme en una tarea que demande demasiado tiempo, por lo                           tanto se tomó una división más simple para dar una idea general sobre las capacidades en                               cada ámbito.  

Por simplicidad se tomaron 5 grandes ámbitos básicos de aplicación donde se muestran                         algunos ejemplos en cada uno: 

 

2.1.4.1 MEDIOAMBIENTE 

Dentro de este ámbito se incluyen aquellas aplicaciones centradas principalmente en redes                       de dispositivos destinados a la protección y la salud, no solo del ser humano sino también                               de nuestro planeta. Algunos ejemplos destacados: 

• Control de polución en ríos/mares 

Gracias a una red de dispositivos autónomos es posible comprobar el estado del                         agua y medir pH, salinidad, temperatura, iones disueltos oxígeno etc. Un ejemplo es el                           sensor de la compañía Libelium [34] sobre plataforma Waspmote [35], una plataforma                       modular open source para construir redes de sensores inalámbricas de muy bajo consumo.                         Posee diferentes radios de comunicación inalámbrica con el protocolo Zigbee con alcances                       de hasta 40Km, una gran variedad de placas de sensores para medir gases, eventos físicos                             entre otros y diversos módulos para añadir comunicación Bluetooth LE, GPRS y GPS. 

• Protección de fauna salvaje  

Mediante el uso de collares localizadores es posible conocer la posición de ciertos                         animales y ayudar a los pastores a proteger sus rebaños sin que sea necesario el uso de la                                   

   10

 

2 MARCO TEÓRICO 

fuerza. Mediante esta aplicación es posible por un lado proteger a los seres humanos y por                               el otro respetar especies en peligro de extinción. Un ejemplo es el proyecto “Open Source                             Lion Tracking Collars” [36] de la compañía Ground Lab [37] compuesto de un collar con un                               microcontrolador de bajo consumo Atmal, una SIM card, GPS para comunicación,                     alimentado por baterías.  

• Prevención de catástrofes  

Una de las aplicaciones con mayor impacto para el ser humano en cuanto a evitar                             muertes sería la alerta temprana de catástrofes naturales. Gracias a Internet de las Cosas,                           dispositivos tradicionalmente instalados que solo podían ser leídos en sus centros de                       control son ahora capaces de comunicarse mediante GSM y ser fácilmente accedidos (entre                         ellos y con las centrales). Un claro ejemplo es el proyecto ALARMS [38] de British Geological                               Survey [39] que ha conseguido integrar en un dispositivo de bajo costo con capacidad GSM,                             sensores miniaturizados para alertar de manera temprana la inestabilidad del suelo. 

Estos ejemplos no solo nos dan una idea de las capacidades de Internet de las Cosas en                                 cuanto a la conservación de la flora , fauna y medio-ambiente sino que permiten también                             entrever el potencial de esta tecnología con fines científicos, ya que abre nuevos campos de                             investigación gracias a la creación de redes sensoriales autónomas accesibles desde                     cualquier terminal del mundo. 

 

2.1.4.2 INDUSTRIA  

En esta categoría se engloban aquellos dispositivos cuya finalidad sea dar un valor añadido                           a cualquier sector industrial, ya sea aportando seguridad, monitorización o mejora de                       procesos productivos en general. Algunos ejemplos:  

• Monitorización de estructuras 

Un claro ejemplo de Internet de las Cosas es el sistema SmartPile© de Smart                           Structures Inc [40]. Este sistema está basado en la instalación de un sensor wireless                           integrado en el cemento mientras fragua, de tal manera que queda unido a la estructura,                             proporcionando datos a tiempo real de las tensiones que soporta dicha columna.  

• Seguridad 

Otro ejemplo de uso en el sector industrial engloba la seguridad, como por ejemplo                           el sistema enGauge© de enGauge Inc [41] que permite controlar el estado de los extintores,                             mandado alertas vía wireless en caso de fallo/avería.  

 

   11

 

2 MARCO TEÓRICO 

• Analytics 

Uno de los campos que más se está desarrollando. Se están instalando diversos                         dispositivos en los supermercados y tiendas que analizan en tiempo real el                       comportamiento de los consumidores, de manera que son capaces de predecir los                       productos que tienen más éxito, los caminos más transitados y las estanterías más vistas,                           todo ello funcionando de manera totalmente autónoma. Ejemplos son Macy’s, Walmart y                       mas de diez empresas que incorporaron la tecnología beacon, como Japan Airlines en el                           Aeropuerto de Tokio, American Airlines en el aeropuerto de Dallas [42]. 

 

2.1.4.3 CIUDADES 

El término Smart City ha evolucionado gracias a Internet de las Cosas. En este apartado se                               consideran algunos usos que estén relacionados con hacer de las ciudades cosas                       inteligentes. 

• Ayuda al estacionamiento 

ParkSigth™ [43] desarrollada por Streetline Inc [44], guía a los usuarios de                         vehículos a espacios libres de estacionamiento mediante una red de sensores autónoma                       wireless que inyecta los datos en una aplicación web en tiempo real, de esta manera se                               optimizan los recursos, disminuye la contaminación y se ahorra combustible. 

• Contenedores inteligentes 

Una alternativa propuesta por la compañía Bigbelly [45] consiste en dotar a los                         contenedores de sensores que comunican a la central su estado en tiempo real, facilitando                           así la recogida optimizando los recursos [46]. 

• Control eléctrico 

El proyecto de Awesense [47] que mediante sensores alimentados con baterías                     detectan caídas de tensión, fallos de suministro o bypass en tiempo real notificándose a la                             central, permitiendo a los gestores disminuir los problemas y ahorrar en costos. 

 

2.1.4.4 HOGAR 

En esta categoría se engloba toda aquella domótica que es capaz de actuar y comunicarse                             de manera autónoma. Al contrario que sucede con las aplicaciones de carácter industrial,                         este campo no está tan orientado al ahorro de gasto sino a la seguridad y comodidad.                               Algunos ejemplos: 

 

   12

 

2 MARCO TEÓRICO 

• Control térmico 

La empresa Nest [48] ofrece un producto que combina sensores en casa,                       predicciones a tiempo real del tiempo y la actividad en el hogar para controlar la                             temperatura, haciendo que se ahorre hasta un 30% en el consumo de combustible y                           mejorando la habitabilidad. 

• Sistema de riego autónomo 

EL proyecto HarvestGeek [49] de Michael Alt es un sistema de monitorización y                         automatización para plantas que permite controlar el crecimiento y regar de manera                       autónoma, siendo fácilmente adaptable desde una planta hasta 26. 

• Control del hogar 

Sistemas como Ninja Block [50] permiten controlar de manera remota la                     temperatura, si se pulsa el timbre o si se abre una puerta o ventana. Todo ello se hace de                                     manera autónoma y se informa directamente a un teléfono móvil inteligente (smartphone).  

 

2.1.4.5 PERSONAL  

En esta categoría se consideran por ejemplo todos aquellos objetos denominados                     “wearables” y los relacionados con el control/ayuda al ser humano. Este campo es otro de                             los que más está evolucionando y donde las compañías prevén mayor crecimiento. Existen                         cientos de proyectos, algunos de ellos: 

• Píldoras inteligentes  

Proteus Digital Health [51] Tal vez uno de los proyectos más revolucionarios que se                           puedan encontrar. Este sistema se compone de un sensor fabricado completamente a base                         de nutrientes sin antena ni baterías que se activa con los fluidos del estómago. Añadido a                               una medicina es capaz de transmitir un código único que recoge un parche dérmico                           desechable que captura pulso cardiaco, actividad y horas de ingesta de medicación al                         tiempo que emite mediante Bluetooth.   

• Trajes de control para bebé 

Mimo Smart Baby [52] es un proyecto que brinda a los trajes de bebes de sensores                               capaces de transmitir a la nube e informar de los ciclos de sueño, respiración, posición,                             temperatura, audio etc. 

 

   13

 

2 MARCO TEÓRICO 

2.1.5 PRINCIPALES OBSTÁCULOS 

Los dos principales obstáculos a la adopción del Internet de las Cosas son similares a los de                                 otros desarrollos tecnológicos anteriores que afectan al día a día de las personas: asegurar                           la privacidad y seguridad de las nuevas soluciones, y conseguir estándares globalmente                       aceptados.  

Otras preocupaciones que amenazan con poner freno a su despegue son las limitaciones de                           la infraestructura actual, la falta de interoperabilidad entre sistemas, la fuerte inversión                       necesaria en equipos y las barreras psicológicas.  

A continuación se tratan estos y otros de los principales obstáculos que se plantean ante la                               adopción masiva del Internet de las Cosas. 

 

2.1.5.1 EL PRECIO 

Cuando Pacific Gas & Electric desplegó una red inteligente masiva para los hogares de la                             ciudad de Bakersfield al norte de Los Ángeles, poco se podían imaginar los residentes de la                               zona que los contadores de lectura y manipulación remota iban a suponer un esfuerzo                           económico adicional por su parte.  

Cuando recibieron la primera factura, entendieron que la “inteligencia” se paga hasta tres                         veces más cara. Aunque la compañía alegó que el incremento desorbitado era debido a la                             ola de calor, la euforia inicial de apuntarse al smart grid se esfumó rápidamente.  

Para evitar situaciones de este tipo, empresas como Opower [53] gestionan las expectativas                         de los clientes ofreciendo los datos acerca de su consumo y el de sus vecinos para                               animarlos a ahorrar energía [54]. De esta manera, el consumidor es consciente de que la                             aplicación de Internet de las Cosas requiere también su esfuerzo. Los fabricantes de                         electrodomésticos General Electric [55] y Whirlpool [56] también se han apresurado a                       desarrollar versiones inteligentes que realizan este seguimiento del consumo por el cliente.  

 

2.1.5.2 ELECCIÓN DE ESTÁNDARES 

Los sensores que se colocan en objetos cotidianos para medir variables como la                         temperatura o el movimiento y enviar esta información a través de Internet, no resultan                           demasiado rentables a nivel particular o residencial. Si bien es cierto que los sensores son                             cada vez más baratos, muchas de las herramientas y equipos complementarios para su uso                           requieren una inversión muy alta.  

   14

 

2 MARCO TEÓRICO 

Algo similar ocurre con las etiquetas RFID. Los fabricantes de productos, consumidores de                         las etiquetas RFID, esperan a que existan en el mercado suficientes lectores RFID. Y                           viceversa: los fabricantes de los lectores no quieren aumentar su producción hasta que no                           haya una masa crítica de productos con etiquetas integradas. Este círculo vicioso tiene su                           efecto en la elección de estándares.  

Establecer las reglas del juego demasiado pronto puede obstaculizar la innovación, pero su                         ausencia desincentiva la inversión en la tecnología por miedo a posibles cambios en la                           normativa.  

Todo apunta a que la competencia del siglo XXI se producirá en torno a la supremacía de un                                   sistema operativo que controle todos los mecanismos, de la misma manera que Microso� y                           Apple tomaron posiciones en la batalla de sistemas operativos de computadoras. 

Hoy por hoy, los dispositivos que dotan de “inteligencia” a las ciudades funcionan sobre                           sistemas fragmentados e incompatibles, lo que impide su interacción y el lanzamiento de                         procesos automatizados en cadena, algo que está en el corazón de IoT.  

Según los expertos del Future Trends Forum, para reducir la fragmentación hay que                         empezar por elegir “ganadores” e intentar que una mayoría apoye una solución de facto                           estándar.  

Sostienen que resulta contraproducente preestablecer un estándar porque es                 prácticamente imposible comercializar un producto innovador a la primera sin que sufra                       adaptaciones. En el caso de las comunicaciones móviles, transcurren aproximadamente                   siete años desde que la idea se concibe hasta que el consumidor acepta el estándar, lo cual                                 supone un plazo significativo.  

Aunque se ha visto una solución temporal en el open source, ciertas aplicaciones no                           admitirán sistemas de colaboración tan abiertos. 

 

2.1.5.3 INNOVACIÓN O VIOLACIÓN DE LA PRIVACIDAD 

Debido la necesidad de garantizar las máximas medidas de seguridad con la aparición                         continua de nuevas tecnologías, es necesario pensar en los retos de privacidad y seguridad                           en la transición hacia el Internet de las Cosas. 

Cantidades ingentes de información se transferirán y estarán al alcance de mucha gente.                         Personas sin autorización podrán acceder a datos y extraer información de perfiles de                         usuario con fines comerciales o, incluso, criminales.  

   15

 

2 MARCO TEÓRICO 

Por su parte, Google desarrolló una tecnología que permite el reconocimiento facial de un                           rostro [57], simplemente con sacar una foto a una persona por la calle, se podrá poner en                                 relación con información disponible en Internet, por ejemplo, una cuenta de Facebook.  

El desarrollo tecnológico permite además localizar objetos y, por lo tanto, a sus                         propietarios. Por ejemplo, hay padres en Japon que colocan etiquetas RFID en las mochilas                           de sus hijos para ser informados por SMS de todo movimiento que hacen.  

En el extremo contrario, ya hay un grupo de casi 250.000 usuarios que han solicitado que                               Google Street View [58] difumine sus casas a raíz de un proyecto de ley en Alemania que                                 pretende endurecer la normativa de privacidad en torno a este servicio.  

 

2.1.5.4 ¿SOLUCIONES NECESARIAS?  

Si se piensa en aquellos objetos que conforman Internet de las Cosas, se pueden encontrar                             por ejemplo paraguas con mangos que cambian de color según la predicción del tiempo,                           dispositivos que indican cuándo hay que cambiarle el pañal a un bebé; productos                         innovadores, sin embargo, existen soluciones más sencillas para el problema que plantean. 

En algunos casos parece que se tratara de redefinir objetos ya existentes y que la tecnología                               viene impulsada más por una gran oferta que por una amplia demanda. No obstante, ¿qué                             ocurre con los beneficios sociales?  

Un dispositivo con un sensor de glucosa que libera insulina podría ahorrar a un diabético la                               visita a su centro médico, ayudando a que éste no se desborde. La otra cara de la moneda                                   es la resistencia de las personas mayores para adoptar la tecnología (precisamente el                         público al que va dirigido este tipo de productos), el mayor desempleo ante la creciente                             automatización de estos servicios y la falta de contacto humano que ya nos enerva cuando                             somos atendidos por un sistema de voz automático.  

Aun así, parece que existe una gran oportunidad para aquellas empresas que puedan reunir                           una gran variedad de servicios de internet bajo un mismo techo. Algunos expertos se                           preguntaban si en un futuro nuestros hogares se convertirían en un nuevo campo de batalla                             entre las grandes corporaciones intentando hacerse con el control de todo lo necesario                         para operar nuestras casas, desde la conexión a Internet hasta la calefacción y el riego del                               jardín.  

   

   16

 

2 MARCO TEÓRICO 

2.2 BEACON 

Los beacons son dispositivos que transmiten pequeñas señales (piezas de información)                     anunciando su presencia a los dispositivos que se encuentren dentro de su radio de                           alcance, utilizando la tecnología BLE (Bluetooth Low Energy). 

 

La mayor ventaja de Bluetooth LE sobre las versiones anteriores, es la eficiencia en el                             consumo de la energía. Gracias a eso los beacons pueden durar varios meses y hasta años                               con una sola pila boton (CR2477). 

La señal que emiten permite identificar a cada beacon de forma única y puede ser recibida                               e interpretada por otros dispositivos y conocer la distancia a la que se encuentran del                             beacon. Estos dispositivos que reciben la señal suelen ser smartphones u otros dispositivos                         móviles o wearables. 

Se debe pensar en un beacon como un faro. Los faros envían haces de luz que ayudan a los                                     barcos a navegar hacia su destino. Los beacons emiten señales de radio (como el haz de un                                 faro) que permiten a los dispositivos compatibles, como los smartphones, detectar estas                       señales y comprender lo que se encuentra a su alrededor. 

Uno de los principales usos de los beacons es establecer una región alrededor de un objeto,                               lo que permite a un dispositivo móvil determinar cuando ha entrado o salido de esa región,                               junto con una estimación de la proximidad a un beacon.  

Esto brinda a las aplicaciones nuevas posibilidades de reconocimiento de ubicación.                     Cuando un smartphone entra en el rango de alcance de la señal de un beacon, la aplicación                                 instalada escucha la señal transmitida y puede responder en consecuencia. Por ejemplo, si                         se colocan beacons en una tienda, cuando un cliente se acerque a cierto producto la                             aplicación de esa tienda (instalada en su smartphone) podría mostrar una oferta especial                         para ese producto; en una visita a un museo, la app del museo proporcionará información                             sobre una pintura cercana; en un estadio, la app del mismo informará los asientos libres                             más próximos; etc. todo en función de la ubicación y la proximidad del smartphone a un                               beacon. 

 

   17

 

2 MARCO TEÓRICO 

2.2.1 BEACONS EN INTERNET DE LAS COSAS 

En el contexto de la Internet de las Cosas, la tecnología beacon facilita la interconexión de                               los objetos y su aplicación en el marketing de proximidad. El ámbito de aplicación es muy                               amplio. Algunos ejemplos de aplicaciones que incorporan beacons: 

● Travel Radar [59] es una aplicación para hacer seguimiento del equipaje utilizando                       beacons. Solo es necesario colocar un beacon dentro del equipaje y la aplicación                         podrá informar cuando el equipaje se encuentre cerca y a que distancia se                         encuentra. La distancia máxima es de unos 20 metros aproximadamente. 

● Launch Here [60], es una aplicación que funciona como un lanzador rápido que                         permite programar el teléfono para reconocer su presencia en un lugar específico                       (utilizando la proximidad a beacons) y llevar a cabo acciones específicas, por                       ejemplo, encender las luces en la casa cuando se ingrese a la misma, reproducir                           Spotify cuando se encuentre cerca de la sala de estar, iniciar el temporizador                         cuando se encuentre al lado de la máquina de café, entre otros.  

● El FC Barcelona, como parte de la iniciativa Smart Espai Barça [61], ha incorporado                           la tecnología beacon en su aplicación para mejorar la experiencia de los hinchas                         cuando se encuentren en el estadio [62]. 

● En Amberes, Europa, hay un museo que muestra la forma en que los beacons                           conectan el arte y la tecnología. La agencia digital Prophets creó una aplicación                         móvil para Rubens House [63], que transforma por completo la experiencia                     tradicional de los visitantes al museo. Crearon una forma de experimentar una                       mezcla atractiva de obras físicas de uno de los más grandes pintores, con un                           recorrido digital de su vida. 

● Tulpenland [64] desarrolló una aplicación [65] para combinar el placer de caminar                       por los jardines de tulipanes, con un recorrido digital a través de la historia de una                               de las flores más conocidas de la tierra. El objetivo era convertir la historia en una                               parte integral de toda la experiencia. Esta aplicación, interactúa con beacons                     distribuidos a lo largo de todo el jardin. 

 

2.2.2 COMUNICACIÓN BLE 

La comunicación BLE (Bluetooth Low Energy) comprende la distribución de pequeños                     paquetes de datos que se transmiten a intervalos regulares a través de ondas de radio. Es                               un método de comunicación de un solo sentido; simplemente anuncia sus paquetes de                         datos. Estos paquetes de datos pueden entonces ser recogidos por dispositivos inteligentes                       

   18

 

2 MARCO TEÓRICO 

cercanos (dentro del radio de alcance) y pueden ser utilizados por distintas aplicaciones                         para disparar eventos tales como mensajes, notificaciones push, u otras. 

La principal ventaja de Bluetooth LE es que se requiere un mínimo de energía para los                               dispositivos que emiten señales BLE. Debido a que el bajo consumo de energía es el foco, el                                 tipo de datos/información enviada por estos dispositivos también es mínimo. 

Dicho esto, un dispositivo BLE no funciona para transferencia de audio, video o para ser                             usado por un tipo de aplicación que requiere gran ancho de banda o de grandes cantidades                               de datos. 

Los beacons utilizan BLE para la transmisión de datos. Constantemente transmiten señales                       que pueden ser recibidas por los dispositivos inteligentes que están o bien inmediatamente                         al lado, cerca, o lejos de un beacon.  

 

2.2.3 ¿ CÓMO FUNCIONAN ? 

Los beacons transmiten su ID para poder ser identificados, y no mucha más información                           que ésta. Buscando la eficiencia energética, Bluetooth LE requiere paquetes de datos                       pequeños, por lo que no se puede agregar cualquier contenido adicional en el. Por lo tanto,                               el beacon es solamente un disparador. Es la aplicación que se encarga de manejar el                             contenido y las notificaciones. 

 

Figura 1: Conexión entre beacon y dispositivo móvil. 

   19

 

2 MARCO TEÓRICO 

EL CONTEXTO Y LA NUBE 

Los beacons no se conectan a Internet por si solos. La aplicación tampoco necesita                           conectividad para ser disparada por un beacon, pero generalmente cuando se dispara un                         evento en la app es necesario consultar información alojada en la nube, por eso es que                               generalmente las aplicaciones que interactúan con beacons están conectadas a la nube. 

 

Figura 2: Comunicación entre beacon, aplicación móvil y la nube.  

 

 

   

   20

 

2 MARCO TEÓRICO 

2.3 BLUETOOTH  

La tecnología Bluetooth es el estándar global inalámbrico que permite la Internet de las                           Cosas (IoT). 

Creado en 1994, la tecnología Bluetooth®[7] se concibió como una alternativa inalámbrica                       de los cables de datos, realizando el intercambio de datos a través de transmisiones de                             radio.  

Uno de los usos más populares para Bluetooth históricamente ha sido de audio                         inalámbrico, desde auriculares y conectividad manos libres en los autos hasta los altavoces                         y auriculares inalámbricos que transmiten música de un teléfono o tablet.  

Para lograrlo se utiliza una versión de Bluetooth llamada BR/EDR [8] (velocidad de bit /                             velocidad de datos mejorada), que está optimizada para el envío de un flujo constante de                             datos de alta calidad (por ejemplo, música) con un consumo eficiente de energía. 

 

 

   

   21

 

2 MARCO TEÓRICO 

2.4 BLUETOOTH LOW ENERGY 

Bluetooth Low Energy (BLE) [9], que fue presentado como parte de la especificación                         Bluetooth 4.0, es una tecnología inalámbrica que ofrece a los desarrolladores de                       aplicaciones móviles un acceso sin precedentes a hardware externo y proporciona a los                         ingenieros de hardware un acceso fácil y fiable a sus dispositivos desde los principales                           sistemas operativos móviles. 

 

2.4.1 INTRODUCCIÓN A BLE 

Bluetooth Low Energy (BLE), comenzó como parte de la Especificación Bluetooth 4.0.                       Podría presentarse a BLE como una versión más pequeña, altamente optimizada de su                         hermano mayor, el clásico Bluetooth, pero en realidad, BLE tiene un lineamiento                       completamente diferente y otros objetivos de diseño. 

Originalmente diseñado por Nokia en 2006 como Wibree [10] antes de ser aprobada por el                             Bluetooth Special Interest Group (SIG), los autores no estaban tratando de proponer otra                         solución inalámbrica innovadora, que intente resolver todos los problemas posibles. Desde                     el principio, el objetivo era diseñar un estándar de radio con el menor consumo de energía                               posible, específicamente optimizado para el bajo costo, bajo ancho de banda, baja                       potencia y baja complejidad. 

Su eficiencia y optimización de la energía permite su uso en dispositivos que transmiten                           bajos volúmenes de datos para comunicarse con los dispositivos más grandes, como                       smartphones o tablets, y utilizan pequeñas fuentes de energía como pilas de botón, para                           funcionar por largos períodos de tiempo. Esto significa que diferentes tipos de dispositivos                         de Internet de las Cosas como los beacons, dispositivos de deportes o de cuidado de salud                               por ejemplo, pueden operar durante un año o más en una sola carga de batería. 

La principal ventaja de Bluetooth LE es que se requiere un mínimo de energía para los                               dispositivos que emiten o detectan señales BLE. Debido a que el bajo consumo de energía                             es el foco, el tipo de datos/información enviada por estos dispositivos también es mínimo. 

Dicho esto, un dispositivo BLE no funciona para transferencia de audio, video o para ser                             usado por un tipo de aplicación que requiere gran ancho de banda o de grandes cantidades                               de datos. 

 

   22

 

2 MARCO TEÓRICO 

2.4.2 ¿QUÉ HACE A BLE DIFERENTE? 

Si bien es un estándar relativamente nuevo, ya que se introdujo en 2010, BLE tuvo una tasa                                 de adaptación extraordinaria y el número de productos que ya incluyen BLE lo posicionan                           muy por delante de otras tecnologías inalámbricas en el mismo momento de tiempo en sus                             ciclos de lanzamiento. 

En comparación con otros estándares inalámbricos, el rápido crecimiento de BLE es                       relativamente fácil de explicar: BLE ha crecido rápidamente debido a que su destino está                           íntimamente ligado al crecimiento de los smartphones, tablets, y la informática móvil. La                         temprana y activa adopción de BLE por pesos pesados de la industria móvil como Apple y                               Samsung le abrieron las puertas para una mayor implementación de BLE. 

Mientras el mercado de los teléfonos móviles y tablets se vuelve cada vez más maduro, la                               necesidad de conectarse con el mundo exterior a través de estos dispositivos tiene un                           enorme potencial de crecimiento, y ofrece a los vendedores una oportunidad única de                         proporcionar soluciones innovadoras. 

BLE reduce sustancialmente el consumo de energía del Bluetooth clásico tanto en el                         máximo consumo como en el consumo promedio, y en modo inactivo, con eficiencias                         energéticas que pueden ser 20 veces mayor que Bluetooth clásico.  

 

2.4.3 PRINCIPALES CARACTERÍSTICAS 

Además de su ultra bajo consumo de energía, BLE tiene una serie de características que lo                               diferencian de otras tecnologías inalámbricas disponibles.  

• Interoperability (interoperabilidad) 

Para tener éxito, cualquier tecnología inalámbrica debe asegurarse de que todos los                       dispositivos que lo implementan pueden comunicarse entre sí. Para asegurarse de que los                         dispositivos BLE pueden comunicarse con todos los demás dispositivos BLE, Bluetooth SIG                       se basa en la definición de fuertes procesos de calificación y procesos de pruebas de                             interoperabilidad. Además, dado que BLE opera en la banda de frecuencia de 2.4 GHz,                           abierta y de licencia libre (al igual que las versiones anteriores de Bluetooth), los                           fabricantes y los usuarios de dispositivos Bluetooth v4.0 pueden contar con estos                       dispositivos para interoperar con aplicaciones alrededor de todo el mundo. 

 

• Robustness (Robustez) 

   23

 

2 MARCO TEÓRICO 

Como el Bluetooth clásico, BLE utiliza saltos de frecuencias para asegurar una                       transmisión robusta, incluso en presencia de otras tecnologías inalámbricas. Esta                   característica hace que sea muy adecuado para el entorno doméstico, donde varios                       dispositivos utilizando diferentes protocolos, como Wi-Fi, utilizan el mismo espectro de 2.4                       GHz en un espacio reducido.  

• Simplicity (Sencillez) 

La característica clave de la nueva arquitectura de BLE, que comparte en gran parte                           con la tecnología Bluetooth clásica, es su simplicidad en la arquitectura de la pila de                             protocolos. Debido a esta simplicidad, dispositivos BLE de single-mode, pueden construirse                     del mismo tamaño de una moneda.  

• Low Cost (Bajo costo) 

BLE permite a los fabricantes diseñar dispositivos diminutos, single-mode con                   bajos costos de producción. 

 

 

Figura 3: El tamaño típico de un chipset BLE single-mode. 

 

• Bit Rates (Cantidad de bit) 

BLE es la tecnología más eficiente para la transferencia de cantidades muy                       pequeñas de datos. Es compatible con paquetes de datos muy cortos (desde 8 octetos                           como mínimo hasta 27 octetos máximo) que se transfieren a 1 Mbps. Esta y otras                             características hacen a BLE una gran opción para aplicaciones en las que la tasa de bits                               máxima es de unos pocos cientos de bits por segundo, o menos. 

• Latency (Estado latente)  

BLE está optimizado para el envío de pequeñas piezas de información con el                         mínimo retraso (latency). El tiempo total de envío de datos es generalmente menor a 6 ms,                               y tan bajo como 3 ms (en comparación con los 100 ms de Bluetooth clásico).  

• Range (Alcance) 

   24

 

2 MARCO TEÓRICO 

Gracias a un aumento del índice de modulación, la tecnología BLE ofrece una gama                           mejorada con respecto a Bluetooth clásico. Sin embargo, la tecnología está siendo                       adecuada para aplicaciones principalmente de corto alcance. Al igual que en las versiones                         anteriores de la especificación, el alcance del radio de Bluetooth v4.0 puede ser optimizado                           de acuerdo a la aplicación. 

 

2.4.4 CHIPS SINGLE-MODE Y DUAL-MODE  

Existen diferentes diseños de chips BLE: 

• single-mode  

Aquellos que sólo implementan BLE. No puede comunicarse con un dispositivo que                       sólo entiende Bluetooth clásico.  

• dual-mode 

Chips Bluetooth que implementan tanto el Bluetooth clásico como el BLE.  

Dispositivos BLE single-mode no son interoperables con los dispositivos de Bluetooth                     clásico, pero sí con otros dispositivos single-mode o dual-mode. Los dispositivos                     dual-model, por otro lado, son compatibles y pueden interactuar con otros dispositivos que                         admiten cualquier versión de la tecnología Bluetooth. 

Es importante tener en cuenta que la incorporación de BLE a dispositivos con Bluetooth                           clásico es una tarea relativamente fácil, y no muy costosa. A diferencia de otras tecnologías                             alternativas similares, BLE puede incorporarse en los miles de millones de dispositivos                       Bluetooth existentes que ya se encuentran en el mercado. 

 

2.4.5 ESPECIFICACIÓN  

En junio de 2010, el Bluetooth SIG introdujo Bluetooth LE con la versión 4.0 de la                               Especificación Bluetooth. La especificación había pasado varios años creándose y la                     mayoría de las secciones y decisiones controvertidas fueron finalmente resueltas por las                       empresas que participaron en el proceso de desarrollo, con algunas preocupaciones que                       dejaron a ser tratadas en posteriores actualizaciones de la especificación. 

La primer actualización importante, Bluetooth 4.1, fue lanzada en Diciembre de 2013.                       Aunque los bloques básicos de construcción, procedimientos y conceptos permanecieron                   

   25

 

2 MARCO TEÓRICO 

intactos, esta versión también introdujo varios cambios para mejorar la experiencia del                       usuario. 

Al igual que todas las especificaciones Bluetooth, la 4.1 es compatible con la 4.0, lo que                               garantiza la correcta interoperabilidad entre dispositivos que implementen diferentes                 versiones.  

Las especificaciones permiten a los desarrolladores lanzar y calificar productos para                     cualquiera de las versiones (hasta obsoletas). 

Luego de la versión 4.1, en Diciembre de 2014, se lanzó la versión 4.2 [11]. Esta actualización                                 introdujo nuevas e interesantes características significativas para los desarrolladores y                   fabricantes y una mejor experiencia de usuario para sus clientes. Bluetooth 4.2 hace que                           Bluetooth sea aún más inteligente y más rápido, y la tecnología inalámbrica ideal para el                             Internet de las Cosas (IoT).  

Hoy en dia esta versión es la referencia actual para todos aquellos que buscan desarrollar                             productos BLE. La rápida adopción de las nuevas versiones de la especificación y el hecho                             de que la versión 4.2 estandariza varias prácticas comunes entre los dispositivos hace que                           sea recomendable apuntar a la versión más reciente disponible. 

 

2.4.6 CONFIGURACIONES 

La especificación Bluetooth cubre tanto Bluetooth clásico como Bluetooth Low Energy.                     Estos dos estándares de comunicación inalámbrica no son directamente compatibles y                     dispositivos Bluetooth calificados en cualquier versión de la especificación antes de la 4.0                         no puede comunicarse de ninguna manera con un dispositivo BLE.  

El protocolo en sí, las capas superiores del protocolo, y las aplicaciones, son diferentes e                             incompatibles entre las dos tecnologías. 

2.4.6.1 CONCEPTOS BÁSICOS DEL PROTOCOLO  

Al igual que en el Bluetooth clásico, la pila de protocolos BLE se compone de dos partes                                 principales: Controller y Host y la capa Application. Ver Figura 4. 

Cada uno de estos bloques básicos se divide en capas que proporcionan la funcionalidad                           necesaria para operar: 

 

 

   26

 

2 MARCO TEÓRICO 

• Host 

Incluye las siguientes capas: Generic Access Profile (GAP)  Generic Attribute Profile (GATT) Logical Link Control and Adaptation Protocol (L2CAP) Attribute Protocol (ATT)  Security Manager (SM) Host Controller Interface (HCI) (lado Host)   

• Controller 

Incluye las siguientes capas: Host Controller Interface (HCI) lado Controlador Link Layer (LL) Physical Layer (PHY)  

 

• Application  

Es la capa más alta y responsable de contener la lógica, interfaz de usuario, y la                               manipulación de datos. La arquitectura de una aplicación es altamente dependiente de                       cada implementación particular. 

A continuación se presenta una descripción básica de las partes más relevantes para                         comprender el funcionamiento de BLE. 

 

 

Figura 4: Pila de protocolos BLE. 

   27

 

2 MARCO TEÓRICO 

2.4.6.2 GENERIC ACCESS PROTOCOL (GAP) - Advertising and Connections 

El Generic Access Protocol (GAP) determina cómo los dispositivos interactúan entre sí,                       especifica cómo los dispositivos realizan procedimientos tales como la detección de                     dispositivos o la conexión, entre otros, para garantizar la interoperabilidad y permitir el                         intercambio de datos que se lleva a cabo entre dispositivos de diferentes fabricantes. 

GAP es el que permite a los dispositivos Bluetooth Low Energy interoperar entre sí.                           Proporciona un framework que cualquier implementación BLE debe seguir para permitir a                       los dispositivos descubrirse unos a otros, difundir datos, establecer conexiones seguras, y                       realizar muchas otras operaciones fundamentales de manera estándar y de universal                     entendimiento. GAP es uno de los puntos de entrada de más bajo nivel cuando se                             proporciona una API para los desarrolladores de aplicaciones. 

En el nivel más alto de la pila de protocolos de BLE, GAP especifica roles de dispositivos,                                 para el descubrimiento de otros dispositivos y servicios, el establecimiento de una                       conexión y seguridad. 

 

ROLES 

GAP especifica cuatro roles que un dispositivo puede adoptar para unirse a una red BLE: 

• Broadcaster (Locutor) 

El rol broadcaster envía periódicamente paquetes de publicidad a cualquier                   dispositivo dentro del rango de alcance que esté dispuesto a recibirlos. 

Un sensor de temperatura que transmite las lecturas de temperatura a cualquier dispositivo                         interesado es un buen ejemplo de un broadcaster. Los broadcaster envían datos en                         paquetes de publicidad (advertising) y los datos son accesibles para cualquier dispositivo                       que está escuchando.  

• Observador 

El rol observador escucha los datos incluidos en los paquetes de publicidad                       (advertising) de los dispositivos broadcaster. Por ejemplo, un dispositivo con una pantalla                       es una aplicación típica de este rol, tal como un display que muestra datos de la                               temperatura de un sensor de temperatura. 

   28

 

2 MARCO TEÓRICO 

Escanea repetidamente las frecuencias preestablecidas para recibir cualquier paquete de                   publicidad que esté emitiendo en ese momento un broadcaster dentro de su rango de                           alcance.  

• Central 

Un dispositivo capaz de establecer múltiples conexiones a otros dispositivos. El rol                       central es siempre el que inicia las conexiones. Este rol suele estar interpretado por un                             smartphone o una tablet, ya que tienen acceso a los poderosos recursos de procesamiento                           y memoria. Esto le permite mantener conexiones con múltiples dispositivos. Un dispositivo                       central comienza escuchando paquetes de publicidad (advertising) de otros dispositivos, y                     luego inicia una conexión con uno seleccionado. Este proceso se puede repetir para incluir                           múltiples dispositivos en una sola red. 

Una vez establecida la conexión, gestiona la sincronización e inicia el intercambio de datos.  

• Periférico 

Este rol utiliza paquetes de publicidad (advertising packages) para permitir a                     dispositivos centrales encontrarlos y, posteriormente, establecer una conexión con él. El                     protocolo BLE está optimizado para requerir pocos recursos para la implementación de                       este rol, al menos en términos de poder de procesamiento y memoria.  

Cada dispositivo en particular puede operar en uno o varios roles a la vez. Muchos                             desarrolladores erróneamente tratan de asociar los roles clientes y servidores de BLE GATT                         con roles de GAP. No hay conexión entre ellos, y cualquier dispositivo puede ser un cliente,                               un servidor GATT, o ambos, dependiendo de la aplicación y situación. 

Consideremos, por ejemplo, un fitness tracker asociado a un smartphone. El fitness tracker                         tiene el rol GAP periférico, y actúa como un servidor GATT cuando el teléfono requiere datos                               de sus sensores. A veces también puede actuar como un cliente GATT cuando solicita datos                             a una hora exacta del smartphone para actualizar su reloj interno.  

Los roles cliente / servidor de GATT dependen exclusivamente de la dirección en la que se                               realizan las solicitudes de datos y se envían las respuestas, mientras que los roles de GAP se                                 mantienen constantes como periférico para el fitness tracker y central para el smartphone. 

 

2.4.6.3 ATTRIBUTE PROTOCOL (ATT) 

El Attribute protocol (ATT) define la comunicación entre dos dispositivos que juegan los                         roles de servidor y cliente, respectivamente.  

   29

 

2 MARCO TEÓRICO 

Un cliente solicita datos desde un servidor, y un servidor envía los datos a los clientes. El                                 protocolo es estricto cuando se trata de la secuencialidad: si una solicitud sigue pendiente                           (sin respuesta porque no ha sido recibida todavía) no pueden enviarse más solicitudes                         hasta que se reciba y se procese la respuesta. Esto se aplica a ambas direcciones de forma                                 independiente en el caso en que dos pares esten actuando tanto como cliente y servidor. 

Cada servidor contiene datos organizados en forma de atributos. Un atributo es una                         estructura de datos que almacena la información gestionada por el GATT, el protocolo que                           opera en la parte superior del ATT. 

Cada servidor contiene datos organizados en forma de atributos, a cada uno de los cuales                             se asigna un identificador único universal (UUID) de 16-bit, un conjunto de permisos y, por                             último, por supuesto, un valor. El UUID especifica el tipo y la naturaleza de los datos                               contenidos en el valor.  

 

2.4.6.4 GENERIC ATTRIBUTE PROTOCOL - Services and Characteristics 

El perfil de atributos genéricos (GATT) establece en detalle cómo intercambiar todos los                         datos en una conexión BLE. En contraste con GAP, que define las interacciones entre los                             dispositivos, GATT se ocupa de los procedimientos y formatos de transferencia de datos. 

GATT también proporciona el framework de referencia para todos los perfiles basados en                         GATT que cubren los casos de uso precisos y garantizan la interoperabilidad entre                         dispositivos de diferentes fabricantes. Por lo tanto, todos los perfiles del estándar BLE se                           basan en GATT y deben cumplir con el para funcionar correctamente. Esto hace a GATT una                               sección clave de la especificación BLE, dato relevante para las aplicaciones y los usuarios                           deben tener el formato, empaquetado y enviado de acuerdo a sus reglas. 

GATT utiliza el Protocolo de Atributo (ATT) como su protocolo de transporte para                         intercambiar datos entre dispositivos. Estos datos se organizan jerárquicamente en                   secciones denominadas servicios, que agrupan conceptualmente piezas de datos de                   usuario llamadas características.  

 

ROLES 

Los roles que los dispositivos que interactúan pueden adoptar son: 

• Cliente 

Envía peticiones a un servidor y recibe respuestas del mismo. El cliente GATT no                           sabe nada de antemano acerca de los atributos del servidor, por lo que primero debe                             

   30

 

2 MARCO TEÓRICO 

preguntar acerca de la presencia y naturaleza de esos atributos realizando un                       descubrimiento de servicios.  

Después de completar este descubrimiento, puede entonces comenzar a leer y escribir                       atributos que se encuentran en el servidor. 

• Servidor 

El servidor GATT corresponde al servidor del Protocolo Atributo (ATT). Recibe                     peticiones de un cliente y envía respuestas. También es el rol responsable de almacenar y                             poner datos de usuario a disposición del cliente, organizados en atributos.  

Vale la pena mencionar una vez más que los roles del GATT son ambos completamente                             independiente de los roles de GAP y también al mismo tiempo compatibles entre sí. Eso                             significa que dispositivos que actuan de central o periférico en GAP pueden actuar como                           cliente o servidor en GATT. 

 

UUIDs 

Un identificador único universal (UUID) es un número de 128 bits (16 bytes) que está                             garantizado (o tiene una alta probabilidad) para ser único en el mundo. UUIDs se utilizan en                               muchos protocolos y aplicaciones distintas de Bluetooth, y su formato, uso y generación se                           especifica en UIT-T Rec. X.667, conocida alternativamente como ISO / IEC 9834-8:2005. 

Por eficiencia, y porque 16 bytes tomarían una gran parte de los 27 bytes de longitud del                                 payload de datos de la Capa de Enlace (LL), la especificación de BLE añade dos formatos de                                 UUID adicionales: UUIDs de 16 bits y 32 bits.  

 

ATTRIBUTES (Atributos) 

Los atributos son la entidad más pequeña de datos definido por el GATT (y ATT). Son piezas                                 de información que puede contener datos relevantes de usuario (o metadatos) acerca de la                           estructura y la agrupación de los diferentes atributos contenidos en el servidor. Tanto GATT                           como ATT pueden trabajar sólo con atributos, así que para los clientes y servidores que                             quieran interactuar, toda la información debe ser organizada en este formato. 

 

ATRIBUTOS Y JERARQUIA DE DATOS  

La especificación Bluetooth define los atributos en la sección ATT. ATT opera en términos de                             atributos y se basa en todos los conceptos expuestos en los atributos para proporcionar                           

   31

 

2 MARCO TEÓRICO 

una serie de unidades de datos de protocolo (PDUs, conocidos comúnmente como                       paquetes) que permiten a un cliente acceder a los atributos en un servidor. 

GATT establece una jerarquía estricta para organizar los atributos de una manera                       reutilizable y práctica, que permite el acceso y recuperación de la información entre el                           cliente y el servidor siguiendo un conjunto de reglas que juntas constituyen el framework                           utilizado por todos los perfiles basados en el GATT. 

 

 

Figura 5: jerarquía de datos introducidos por GATT. 

 

Los atributos en un servidor GATT se agrupan en servicios, cada uno de los cuales puede                               contener cero o más características. Estas características, a su vez, pueden incluir cero o                           más descriptores. El conjunto de servicios se los denomina Perfil. 

Esta jerarquía se hace cumplir estrictamente para cualquier dispositivo que requiera                     compatibilidad con GATT (en esencia, todos los dispositivos BLE vendidos), lo que significa                         que todos los atributos de un servidor GATT se incluyen en una de estas tres categorías, sin                                 excepciones. Ver Figura 5. 

 

2.4.7 PAQUETE BLE 

BLE tiene solo una estructura fija de paquetes para dos tipos de paquetes: de publicidad y                               de datos. 

   32

 

2 MARCO TEÓRICO 

Preamble (1 byte) 

Access Address (4 bytes) 

PDU (2 a 39 bytes) 

CRC (3 bytes) 

 

Figura 6: Paquete BLE. 

El paquete de BLE incluye: 

• Preamble  

Utilizado para la sincronización y la estimación de temporización en el receptor.                       Siempre es un valor fijo para los paquetes de publicidad: 0xAA.  

• Advertising/Data Access Address 

Permite la identificación de enlace físico en cada paquete. Esta dirección siempre es                         fija para los paquetes de publicidad: 0x8E89BED6. Para los paquetes de datos se utiliza una                             dirección random para cada conexión. 

• PDU de longitud variable 

Esta implementación permite un ahorro significativo de energía omitiendo                 información innecesaria (ya conocida por el dispositivo receptor) cuando sea posible. Aqui                       se envían direcciones y datos definidos por el usuario. 

• CRC (Código de Redundancia cíclica) 

Código utilizado para validar el paquete de alteraciones no deseadas. Se garantiza                       la integridad de los datos transmitidos de todos los paquetes. 

El CRC garantizar la exactitud de los datos en la PDU en todos los paquetes, lo que aumenta                                   la robustez contra interferencias. 

 

2.4.8 PRONÓSTICO DE MERCADO  

BLE está posicionado para ser una tecnología clave para ciertos mercados nuevos, cuyo                         crecimiento estamos empezando a presenciar hoy. 

El último análisis oficial de SIG, presentado en el documento Bluetooth SIG Analyst Digest                           2H 2014 resalta que la tecnología continuó ganando impulso positivo en el segundo                         semestre de 2014 con analistas proyectando una fuerte posición de Bluetooth en smart                         homes, wearables y todo lo basado en la localización. ABI Research pronosticó que                         Bluetooth llevará conectividad portátil en el 2015 con una participación del 33 por ciento en                             el mercado. Los analistas continuaron discutiendo el enorme potencial del mercado de                       

   33

 

2 MARCO TEÓRICO 

smart homes. Strategy Analytics estima que el mercado de casa inteligente llegará a casi $                             115 mil millones en 2019 [12]. La firma analista IHS predice que el indoor position es el                                 siguiente paso lógico en un mundo conectado, y hace hincapié en el papel crucial que juega                               la tecnología Bluetooth[13]. Del mismo modo, Bluetooth puede convertirse en una                     alternativa viable a la NFC, ya que tiene más opciones de seguridad y una historia más larga                                 con los smartphones [14]. 

Varias firmas de analistas predijeron que la tecnología sería cada vez más importante en el                             mundo de las conexiones: 

● GigaOM Research recalca que Bluetooth jugará un papel cada vez más importante                       en el mercado de smart home en los próximos años[15] . 

● Strategy Analytics predijo que las ventas mundiales de teléfonos inteligentes                   crecerá un 30% durante los próximos seis años, y encuentra que Bluetooth es una                           de las tecnologías inalámbricas más populares que se encuentran en los teléfonos                       inteligentes y los teléfonos con funciones hoy. 

 

 

   

   34

 

2 MARCO TEÓRICO 

2.5 BLE vs NFC 

La tecnología BLE podría ser especialmente interesante como alternativa a NFC. Aunque                       dicha conectividad está integrada ya en numerosos dispositivos móviles, sus prestaciones                     no parecen adecuadas para la denominada Internet de las Cosas que está imponiéndose                         cada vez con más fuerza en los últimos tiempos. 

 

2.5.1 FUNCIONAMIENTO  

BLE es un sistema que se centra en la publicidad de un único mensaje para todos. La                                 tecnología BLE transmite repetidamente un mismo paquete o mensaje. Cuando un                     dispositivo móvil se encuentra dentro de su rango de alcance, recibe la señal. Así, la app en                                 el dispositivo obtiene el ID del beacon y realiza la acción correspondiente. 

NFC en cambio es una comunicación uno a uno. El dispositivo móvil se acerca a un equipo                                 con el chip NFC, que cuenta con un microprocesador interno. Tras activarlo, se ejecuta un                             programa que suele transmitir un mensaje a la memoria del dispositivo móvil. Éste ejecuta                           la acción que determina dicho mensaje. 

 

2.5.2 RANGO DE ACCIÓN 

Uno de los aspectos clave es el hecho de que aunque las etiquetas NFC son relativamente                               baratas y su funcionamiento es adecuado, su alcance es muy limitado. El alcance de la                             señal se reduce a apenas 20 centímetros, aunque el rango óptimo es de 4 centímetros. 

En el caso de los beacons, ese alcance se amplía a 50 metros, lo que efectivamente puede                                 dotar a esta tecnología de unas posibilidades mucho más amplias. Aunque la implantación                         de chips NFC en dispositivos móviles es cada vez más amplia, la tecnología estándar que sí                               integran los fabricantes es Bluetooth, y esa nueva versión 4.0 con el modo de eficiencia                             energética está cada vez más presente en estas soluciones. 

 

2.5.3 EFICIENCIA ENERGÉTICA 

BLE es una tecnología que se caracteriza por la eficiencia en el consumo de la energía. Un                                 dispositivo beacon con BLE puede funcionar con una batería tipo botón, cuya vida útil                           puede llegar a dos años.  

   35

 

2 MARCO TEÓRICO 

NFC en cambio no precisa de batería dedicada, ya que viene integrada en los dispositivos.                             Usa ondas de corto alcance para permitir el intercambio de información entre dispositivos. 

 

2.5.4 SEGURIDAD 

Aunque no hay un riesgo inherente en la transmisión de datos via BLE, sí puede existir                               alguno en la app que traduce la señal. No obstante, este supuesto es remoto. Si se                               conociese el enlace al servidor y los datos del beacon podrían interceptarse los datos e                             incluso entrometerse en el mensaje y enviar uno ajeno. Aunque esto es improbable, entre                           otras cosas por la dificultad que supone acceder al enlace del servidor. Además, cuenta con                             otro filtro de seguridad, el protocolo HTTPS (usada por los bancos) que hace prácticamente                           imposible el robo de información. 

NFC garantiza la máxima seguridad en la transmisión de datos, haciéndola muy fiable para                           los pagos y transacciones. 

 

2.5.5 SISTEMAS OPERATIVOS 

Apple no ha integrado jamás NFC en sus productos, y esa tecnología no obstante es la gran                                 apuesta de Google, que lo ha utilizado para Android Beam desde Android 4.0 como método                             de transmisión de datos de forma sencilla. 

Esa tecnología de Google llegó como contrapartida a AirDrop, que es únicamente                       compatible con equipos de Apple (móviles y ordenadores), y que permite esa transferencia                         de ficheros tanto a través de Bluetooth como a través de conexiones WiFi. Apple dejó clara                               con esta propuesta su interés nulo en NFC. 

El futuro de NFC parece complicado a pesar de los esfuerzos de Google o de fabricantes                               como Sony por impulsarlo. Lo mismo ocurre con otros estándares inalámbricos que han                         tratado de imponerse en el mercado de la Internet de las Cosas, como ZigBee o Z-wave[16],                               con poco apoyo y que también tienen un enemigo claro: el citado Bluetooth Low Energy, el                               candidato perfecto a convertirse en compañero inseparable de los dispositivos móviles. 

   

   36

 

2 MARCO TEÓRICO 

2.6 EVOLUCIÓN DE LOS TELÉFONOS INTELIGENTES El teléfono móvil es uno de los aparatos tecnológicos que caracterizan el siglo XXI. Si bien                               su auge comenzó a finales del siglo pasado, en la última década ha traspasado fronteras y                               se ha convertido en un complemento indispensable de la vida cotidiana. 

La evolución continua de los teléfonos móviles llevó a la aparición de los smartphones, sin                             embargo hace 20 años atrás los smartphones no eran tal cual los conocemos ahora.  

La idea inicial del smartphone era de, básicamente, unir las funciones de un PDA (Personal                             Digital Assistant) con las de un teléfono para mayor comodidad y compatibilidad. El primer                           dispositivo en cumplir con esta definición fue el IBM Simon, que tenía todas las funciones                             de un PDA de aquella época (1992) con capacidades telefónicas y de SMS, y una pantalla                               totalmente táctil la cual podía ser manipulada con el dedo, a diferencia de otros PDAs de                               esos tiempos que requerían un stylus. Pero, sin embargo, este no era muy conveniente por                             su peso de 510 gramos y, también, que solo podía funcionar en 190 ciudades distribuidas                             en 15 estados de los Estados Unidos, lo cual no lo hacía conveniente para viajes. 

El primer teléfono móvil en usar el término 'smartphone' fue el Ericsson GS88 el cual era                               más avanzado y poseía funciones de correo electrónico, navegación web, reloj mundial, un                         teclado QWERTY físico, modo avión, puerto infrarrojo, conexión a PC, etc. 

Durante los años tempranos del smartphone, compañías como HTC, Palm y RIM (Research                         In Motion) tuvieron un gran auge debido a la aparición de nuevos sistemas operativos como                             Windows Pocket PC (2000) y BlackBerry OS (1999). 

Sin embargo el evento que cambió la percepción de lo que era un smartphone fue el                               anuncio del iPhone y de iOS en 2007, revolucionando la industria de la telefonía móvil y de                                 los smartphones. Este nuevo OS dio paso a Android OS de Google (el mayor competidor de                               iOS) lanzado unos meses después del anuncio del iPhone, y generó cambios en la interfaz                             de Windows Phone OS, de Blackberry OS, Symbian OS, etc.  

El auge de este tipo de dispositivos ha conllevado la aparición de nuevas profesiones.                           Desarrolladores, programadores, creador de videojuegos o de aplicaciones móvil son                   únicamente algunas de las que tienen más futuro en este ámbito. Además cabe destacar                           que son de las mejor remuneradas. 

Uno de los mercados sobre los smartphones que mueve más dinero y que está en continuo                               desarrollo es el de las aplicaciones móviles. Las posibilidades son muchas y muy amplias.                           

   37

 

2 MARCO TEÓRICO 

Desde aplicaciones que ayudan en el día a día más profesional hasta las que tienen más                               que ver con el ocio o el tiempo libre. El mercado es grande y no tiene límites. 

De hecho, esos límites están tan poco claros que mucha gente ha visto la posibilidad de                               negocio en las aplicaciones móviles. Cada vez más empresas y personas usan estos                         programas para crear negocios, ganar dinero y publicitarse a través de aplicaciones para                         smartphones. Y es que los teléfonos móviles de última generación son un sector en                           expansión constante. 

 

   

   38

 

2 MARCO TEÓRICO 

2.7 SISTEMAS OPERATIVOS MÓVILES  

2.7.1 iOS  

iOS, originalmente llamado iPhone OS, es el sistema operativo para móviles creado y                         desarrollado por Apple Inc. y distribuido exclusivamente para el hardware de Apple. Es el                           sistema operativo que actualmente potencia muchos de los dispositivos móviles de la                       compañía, incluyendo el iPhone, iPad y iPod touch. Es el segundo sistema operativo móvil                           más popular del mundo por ventas, después de Android.  

La interfaz de usuario de iOS se basa en el concepto de manipulación directa, usando                             gestos multi-touch. La interacción con el sistema operativo incluye gestos como swipe, tap,                         pinch, los cuales tienen definiciones específicas en el contexto del sistema operativo iOS y                           su interfaz multi-touch. Acelerómetros internos son utilizados por algunas aplicaciones                   para responder a los movimientos shake del aparato o la rotación en tres dimensiones. 

El sistema operativo se dio a conocer con el iPhone en la Conferencia Macworld, en Enero                               2007, y publicado en Junio de ese año. En Octubre de 2007, Apple anunció que un SDK                                 nativo estaba en fase de desarrollo y que planeaba ponerlo "en manos de los                           desarrolladores en febrero". En Marzo de 2008, Apple lanzó la primer versión beta, junto con                             un nuevo nombre para el sistema operativo: "iPhone OS". 

En junio de 2010, Apple renombró a iPhone OS como iOS. Para ese entonces ya existían el                                 iPod Touch, y el iPad, que junto con el iPhone, usaban este SO. 

 

2.7.1.1 EVOLUCION 

Cuando Apple anunció el iPhone en 2007, los sistemas operativos touch-screen para                       teléfonos estaban lejos de ser algo standard. 

iPhone presento una nueva interfaz de usuario basada en una pantalla multitáctil y un                           nuevo so�ware, permitiendo a los usuarios controlar el iPhone con sólo sus dedos. iPhone                           también marcó el comienzo de una era de potencia y sofisticación de so�ware nunca antes                             visto en un dispositivo móvil, que redefinió completamente lo que los usuarios pueden                         hacer en sus teléfonos móviles [17]. Steve Jobs, CEO de Apple, consideraba que este                           cambio en la interfaz de usuario era la mas revolucionaria desde la aparicion del mouse en                               la PC. 

   39

 

2 MARCO TEÓRICO 

La primera generación del sistema operativo, llamado "iPhone OS," ofrecía Google Maps,                       iTunes, el navegador Safari y algunos widgets, como el clima, email, calendario, cámara y                           fotos, reloj, notas y calculadora. 

Con del lanzamiento del SDK en el 2008, meses después Apple lanzó el Apple Store donde                               miles de aplicaciones creadas por desarrolladores externos a la compañía fueron                     publicadas. Con el paso del tiempo Apple siguió innovando en su sistema operativo,                         desarrollando nuevas aplicaciones como Siri, iBook, FaceTime, Maps y haciéndolo cada vez                       más robusto y poderoso.   

En Junio 2013, se introdujo iOS 7 que fue el mayor cambio de iOS desde la introducción del                                   iPhone. Lo más llamativo fue el cambio radical en el nuevo diseño de iOS 7. Las                               aplicaciones nativas de Apple recibieron un look fresco, ya que la empresa se alejó del                             obsoleto skeuomorphism para pasar a un diseño flat. 

La última versión de iOS en el mercado es iOS 9 (2015) [66] que propone mejoras en                                 aplicaciones existentes, introduce el touch 3D, mayor autonomía y seguridad, nuevas                     aplicaciones y cambios para lograr una interfaz lo más elegante e intuitiva posible. 

 

2.7.1.2 DESARROLLO DE APLICACIONES 

En el 2008 Apple publicó un SDK para que desarrolladores puedan crear aplicaciones para                           el iPhone, iPad y el iPod Touch. Estas aplicaciones están disponibles a través del App Store                               [67] para dispositivos con el sistema operativo iOS.  

Las aplicaciones nativas de iOS están desarrolladas usando los lenguajes de programación                       Objective-C o Swi� (lenguaje creado en el 2014 por Apple) [68], utilizando el framework de                             desarrollo Xcode [69]. 

 

2.7.1.3 PARTICIPACION EN EL MERCADO 

iOS es el segundo sistema operativo móvil más popular del mundo por ventas, después de                             Android.  

A finales del 2011, iOS representó el 60% del mercado de los teléfonos inteligentes y tablets.                               En Enero 2016, StatCounter informó que iOS se utiliza en el 25% de los teléfonos inteligente                               y tablets del mundo[18]. 

 

   40

 

2 MARCO TEÓRICO 

2.7.1.4 BLE EN iOS 

El Framework Core Bluetooth, introducido en iOS 5, puso a Apple y iOS en la primera plana,                                 por permitir a los desarrolladores de aplicaciones móviles integrar dispositivos Bluetooth                     LE con sus aplicaciones. En general, Core Bluetooth Fue un gran logro para iOS, y en iOS 7,                                   se mejoró de manera significativa. 

Nuevas mejoras en el rendimiento y usabilidad llegaron a Core Bluetooth en iOS 7. El                             almacenamiento en caché de datos periféricos añadido en iOS 6, que mejora la eficiencia                           de la batería, se ha mejorado aún más con los datos de cada característica y servicio. 

Otra tecnología muy interesante que surge con iOS 7 es iBeacon[19][20]. Si bien                         técnicamente es parte del Framework Core Location, iBeacon proporciona una                   funcionalidad similar al existente LE Proximity Profile de Core Bluetooth, pero con mejoras                         para los servicios de localización.  

iBeacon es un protocolo de comunicación desarrollado por Apple en la parte superior de la                             tecnología Bluetooth LE. Permite a los desarrolladores crear aplicaciones móviles                   conscientes del contexto de ubicación proporcionada por beacons. Aquellos beacons que                     implementan la tecnología iBeacon se denominan iBeacon tambien. 

Un dispositivo con tecnología iBeacon se puede utilizar para establecer una región                       alrededor de un objeto. Esto permite que un dispositivo iOS pueda determinar cuándo se                           ha entrado o salido de dicha región, junto con una estimación de la proximidad a un                               iBeacon: lejos, cerca o inmediato. La idea es que la aplicación pueda cambiar su estado                             cuando el dispositivo del usuario se mueve dentro del alcance del iBeacon mientras se                           mueve frente a él. 

Debido a que iBeacon apareció con iOS 7, los dispositivos de Apple habilitados a interactuar                             con esta tecnología son: 

● iPhone 4S (o posterior)  ● iPod touch (5ta generacion) ● iPad (3ra generacion or posterior)  ● iPad mini 

 

2.7.1.5 TECNOLOGIA iBEACON 

iBeacon es un protocolo de comunicación desarrollado por Apple que brinda a las                         aplicaciones nuevas posibilidades de reconocimiento de ubicación. Aprovechando               Bluetooth Low Energy (BLE), un dispositivo con tecnología iBeacon se puede utilizar para                         establecer una región alrededor de un objeto. 

   41

 

2 MARCO TEÓRICO 

Esto permite que un dispositivo iOS pueda determinar cuándo se ha entrado o salido de                             dicha región, junto con una estimación de la proximidad a un beacon. Aquellos beacons                           que implementan la tecnología iBeacon se los denominan iBeacon. 

 

IDENTIFICADOR iBEACON 

Los beacons transmiten pequeños paquetes de datos, que contienen su iBeacon ID e                         información sobre la intensidad de la señal, por lo que el teléfono puede comprender que                             beacon está oyendo y cuán lejos se encuentra. 

Cada iBeacon ID es de 20 bytes de longitud y se divide en tres secciones: 

● UUID (16 bytes) ● major (2 bytes) ● minor (2 bytes) 

Esos valores están jerarquizados. Apple proporciona el siguiente ejemplo para comprender                     cómo deben utilizarse estos valores: Imagina una cadena de tiendas con sucursales                       distribuidas por todo el país. 

El UUID es compartida por todos las sucursales. Esto permite a un dispositivo iOS utilizar un                               identificador único para reconocer cualquiera de las sucursales. Cada una de ellas, San                         Francisco, París y Londres, se le asigna un valor mayor único, que permita un dispositivo                             identificar en qué sucursal específica se encuentra. 

Dentro de cada sucursal, cada departamento se identifica con un valor menor, éstos son los                             mismos en todas las sucursales para que sea más fácil para una aplicación en un                             dispositivo identificar los departamentos. 

 

Figura 7: Paquete protocolo iBeacon 

 

   42

 

2 MARCO TEÓRICO 

INTEGRANDO iBEACON 

iBeacon permite dos interacciones básicas entre aplicaciones y beacons: 

• Region Monitoring (Monitoreo de regiones):  

Los eventos se disparan cuando la aplicación entra o sale de la región de un beacon. Funciona tanto cuando la aplicación se encuentra en foreground como background y en ocasiones aun cuando se mata la aplicación .  

• Rangig 

Los eventos se disparan basados en la proximidad de la aplicación a un beacon.                           Solo funciona cuando la aplicación se encuentra en foreground. 

Esos dos tipos de interacción permiten desarrollar aplicaciones que aprovechan el contexto                       de ubicación por ejemplo audio guías en un museo, pagos móviles, indoor navigation, etc. 

 

Medición de la Distancia y el Rango 

iBeacon permite determinar qué tan cerca está un dispositivo de un beacon, proceso                         denominado Ranging. Basándose en escenarios de uso común, iOS aplica filtros para                       estimar la precisión y determinar un estimado de proximidad a un beacon. Esta estimación                           se indicará mediante uno de los siguientes estados de proximidad: 

• Immediate  

Esto representa un alto nivel de confianza de que el dispositivo se encuentra                         físicamente muy cerca del beacon, a centímetros de distancia. 

• Near  

Con una clara línea de visión desde el dispositivo al beacon, esto indicaría una                           proximidad de aproximadamente de 1 a 5 metros. Sin embargo, si hay obstrucciones entre                           el dispositivo y el beacon que causan atenuación de la señal, este estado puede no ser                               reportado a pesar de que el dispositivo está en este rango. 

• Far  

Este estado indica que un beacon pudo ser detectado pero la confianza en la                           precisión es demasiado baja para determinar que se encuentra Near o Immediate. Una                         consideración importante es que el estado Far no implica necesariamente "no" físicamente                       cerca del beacon. Cuando se indica un estado Far, se está basando en la exactitud para                               determinar la potencial proximidad al beacon. 

   43

 

2 MARCO TEÓRICO 

• Unknown  

La proximidad de la baliza no se puede determinar. Esto puede indicar que no                           existen medidas suficientes para determinar el estado. 

La proximidad a un beacon se ve afectada por muchos obstáculos, como paredes, muebles                           o personas. Todo esto puede debilitar la señal de un beacon, por lo que la distancia medida                                 es una estimación aproximada.  

  

2.7.2 ANDROID  

Android es un sistema operativo basado en el kernel de Linux. Fue diseñado principalmente                           para dispositivos móviles con pantalla táctil, como teléfonos inteligentes y tablets. y                       también smart watchs, televisores y automóviles. Inicialmente fue desarrollado por                   Android Inc., empresa que Google respaldó económicamente y más tarde, en 2005, la                         compró. Android fue presentado en 2007 junto la fundación del Open Handset Alliance, un                           consorcio de compañías de hardware, so�ware y telecomunicaciones, para avanzar en los                       estándares abiertos de los dispositivos móviles. En el año 2008 la primer versión del                           

sistema operativo, Android 1.0, se lanzó al mercado con la salida del teléfono fue el                              T-Mobile G1 . 

La interfaz de usuario de Android se basa principalmente en la manipulación directa,                         usando gestos táctiles sobre los objetos de la pantalla como swiping, pellizcar, tapping y                           pinching, junto con un teclado virtual para la introducción de texto. 

Al contrario que otros sistemas operativos para dispositivos móviles como iOS o Windows                         Phone, Android se desarrolla de forma abierta y se puede acceder tanto al código fuente como a                                 la lista de incidencias donde se pueden ver problemas aún no resueltos y reportar problemas                             nuevos. 

 

2.7.2.1 EVOLUCIÓN 

Android ha visto numerosas actualizaciones desde su liberación inicial. Estas                   actualizaciones al sistema operativo base típicamente arreglan bugs y agregan nuevas                     funciones. La primera versión de Android (1.0), ofrecía un navegador web, Youtube, Google                         Maps, Google Talk, sincronización de Gmail, Goolge Calendar y Goolge Contacts; y otros                         widgets como alarma, calculadora, cámara y fotos. 

Con el lanzamiento de nuevas versiones Android fue mejorando aspectos como el                       multitasking y consumo de batería, desarrollando nuevas aplicaciones como Hangouts,                   

   44

 

2 MARCO TEÓRICO 

Google Now; y mejorando otras existentes como Goolge Calendar y Gmail. Sin embargo, la                           reiterada aparición de nuevas versiones que, en muchos casos, no llegan a funcionar                         correctamente en el hardware diseñado para versiones previas, hacen que Android sea                       considerado uno de los elementos promotores de la obsolescencia programada. 

En el año 2014, con el lanzamiento de la versión 5.0, Lollipop, se introdujo Material                             Design[21], un nuevo lenguaje de diseño de la interfaz de usuario basado en la metáfora de                               las “Cards” introducidas por primera vez en Google Now, que establece una jerarquía de las                             transiciones y animaciones de imitar la vida real. Es un diseño donde la profundidad, las                             superficies, los bordes, las sombras y los colores juegan un papel principal. Este diseño es el                               que reemplaza al diseño de interfaz Holo[22] que se ha distribuido en la versión 4 y sus                                 antecesoras.  

La última versión de Android en el mercado es Android 6.0 Marshmallow (2015) que                           introduce mejoras en la gestión de la memoria RAM, soporte nativo para archivos MIDI,                           selección de texto inteligente entre otros. 

 

2.7.2.2 DESARROLLO DE APLICACIONES 

En el 2008, Junto con el lanzamiento de Android 1.0, Google también lanzó la primer                             versión del SDK de Android, lo que permitió a una gran comunidad de desarrolladores crear                             aplicaciones para extender la funcionalidad de los dispositivos. A la fecha, se ha llegado ya                             al 1.000.000 de aplicaciones disponibles en el store oficial de aplicaciones de Android:                         Google Play [70]. 

Las aplicaciones se desarrollan habitualmente en el lenguaje Java con Android So�ware                       Development Kit (Android SDK). Inicialmente el entorno de desarrollo integrado (IDE)                     utilizado era Eclipse con el plugin de Herramientas de Desarrollo de Android (ADT). Ahora se                             considera como entorno oficial Android Studio [71], descargable desde la página oficial de                         desarrolladores de Android. 

 

2.7.2.3 PARTICIPACIÓN EN EL MERCADO 

En mayo de 2010, Android superó en ventas a iPhone, su principal competidor. De acuerdo                             a un informe del grupo NPD, Android obtuvo un 28% de ventas en el mercado de los                                 Estados Unidos, un 8% más que en el trimestre anterior. 

   45

 

2 MARCO TEÓRICO 

A principios de octubre de 2010, Google agregó 20 países a su lista de lugares geográficos                               donde los desarrolladores pueden enviar aplicaciones. Para mediados de octubre, la                     compra de aplicaciones estaba disponible en un total de 32 países. 

En noviembre de 2013 Andy Rubin, uno de los cofundadores de Android, dijo que se                             activaban 1.500.000 dispositivos móviles con Android en todo el mundo. 

En abril de 2013 se hizo público que Android alcanzó el 92% en ventas de nuevos                               smartphones para el trimestre comprendido entre diciembre 2012 y febrero 2013 en                       España, seguido de iOS con un 4.4%. 

 

2.7.2.4 BLE EN ANDROID 

Android 4.3 Jelly Beans (API Level 18) introduce soporte para la plataforma integrada de                           Bluetooth LE y proporciona una API para desarrolladores que permite a las aplicaciones                         detectar dispositivos BLE. En contraste con el clásico Bluetooth, Bluetooth Low Energy                       (BLE) está diseñado para proporcionar significativamente menor consumo de energía. Esto                     permite que las aplicaciones Android comunicarse con los dispositivos BLE que tienen                       bajos requerimientos de energía, tales como sensores de proximidad, monitores de ritmo                       cardíaco, aparatos de fitness, y así sucesivamente. 

En Julio de 2015, Google introduce Eddystone[23], un formato abierto para beacons BLE.                         multiplataforma, capaz de soportar Android, iOS o cualquier plataforma que soporte                     beacons BLE. Se encuentra disponible en GitHub bajo la licencia Apache v2.0 de código                           abierto, para uso de todos.  

Provee diferentes tipos de paquetes: Eddystone-URL utilizado para la denominada web                     física, Eddystone-UID utilizado habitualmente por las aplicaciones nativas en el dispositivo                     del usuario, como Google Maps y Eddystone-TLM. 

Eddystone ofrece dos beneficios clave para los desarrolladores: mejor contexto semántico y                       precisión en la ubicación. Para soportarlo, Google lanzó la plataforma Google beacon[24]                       con nuevas API. La API Proximity Beacon[25] permite a los desarrolladores asociar a los                           beacons información almacenada en la nube. La API Proximity Beacon provee un registro de                           los beacons donde información adicional (llamada attachments), usada por las                   aplicaciones, se puede asociar con el ID del beacon. Varios attachments pueden estar                         asociados a un solo beacon. Los attachments pueden ser actualizados en tiempo real, y                           pueden ser recuperados por una aplicación utilizando la API Nearby[26]. Esta API,                       disponible tanto en Android como iOS, hace que sea más fácil para las aplicaciones                           

   46

 

2 MARCO TEÓRICO 

encontrar y comunicarse con los dispositivos y beacons BLE cercanos, proporcionando un                       mejor contexto.  

 

2.7.2.5 EDDYSTONE 

Al igual que iBeacon es un protocolo de comunicación Bluetooth 4.0 diseñado por Apple,                           Eddystone es el protocolo abierto Bluetooth 4.0 de Google. 

EDDYSTONE vs iBEACON 

● Mientras iBeacon es soportado oficialmente por los dispositivos iOS solamente,                   Eddystone tiene soporte oficial para iOS y Android. 

● Eddystone es un protocolo abierto, es decir, su especificación está disponible para                       todo el mundo. 

● El paquete de publicidad de Eddystone y el de iBeacon son diferentes. De hecho,                           Eddystone está diseñado para soportar múltiples tipos de paquetes de datos, como                       son: Eddystone-UID y Eddystone-URL. 

● Hay un tercer tipo de paquete: Eddystone-TLM, este paquete se emite junto con los                           paquetes Eddystone-UID o Eddystone-URL y contiene "health status" del beacon                   (por ejemplo, duración de la batería). Está destinado principalmente para el                     manejo de flotas de beacons, y debido a eso, el paquete TLM se emite con menos                               frecuencia que los paquetes de datos. 

● iBeacon ofrece dos métodos de la API a las aplicaciones para detectar dispositivos                         iBeacons: Ranging, que sólo funciona cuando la aplicación está activa, y                     proporciona estimaciones de proximidad; y Monitoring, que funciona incluso si la                     aplicación no se está en ejecución, y proporciona un binario indicando si la app se                             encuentra "dentro de rango" o "fuera de rango" del beacon. Eddystone se basa en                           un método único para detectar proximidad a un beacon: Eddystone discovery, que                       es similar a iBeacon Ranging. Proporciona estimaciones de proximidad y sólo                     funciona cuando la aplicación está activa. 

 

TIPO DE PAQUETES 

Eddystone-UID 

Eddystone-UID contiene un identificador de un beacon. Una aplicación instalada en                     el teléfono puede usar el identificador para disparar la acción deseada, al igual que con                             

   47

 

2 MARCO TEÓRICO 

iBeacon. Mientras que el identificador iBeacon se compone de tres partes: UUID, número                         mayor y el número menor de edad, y es de 20 bytes de longitud, Eddystone-UID es de 16                                   bytes de longitud y se divide en dos partes: 

● Namespace (10 bytes) : Tiene el mismo propósito que el iBeacons UUID. En iBeacon,                           usualmente se asigna un UUID único para todos los beacons para identificarlos                       fácilmente de los beacons de otras personas. En Eddystone-UID, se puede hacer lo                         mismo con este namespace. 

● Instance (6 bytes): Tiene igual propósito que los números major y minor de iBeacon,                           es decir, permiten diferenciar a cada beacon particular.  

Eddystone-URL 

El paquete Eddystone-URL contiene un solo campo: URL. El tamaño del campo                       depende de la longitud de la URL y relaciona directamente en el concepto de web física[27]. 

Mientras que con iBeacon o Eddystone-UID se necesita de una aplicación que tome el                           identificador del beacon y la traduce en ciertas acciones, con Eddystone-URL los datos se                           codifican directamente en el paquete de publicidad del beacon. Esto significa que el                         usuario puede acceder al contenido, por lo general en forma de un sitio web, sin que el                                 desarrollador tenga que desarrollar una experiencia nativa. 

Es necesario contar con un navegador habilitado para Web física para detectar paquetes                         Eddystone-URL. En la actualidad, existen Chrome y Opera para iOS, y más aplicaciones                         están llegando, incluyendo Chrome en Android. Alternativamente, se puede construir un                     propio navegador de Web física, o usar la aplicación de escaneo de Web física de Google                               (disponible en iOS y Android). La dirección URL puede ser una página web normal que                             proporciona información relevante para los usuarios, por ejemplo, un beacon junto a un                         póster de una película podría transmitir un enlace a un video de YouTube.  

Eddystone-TLM 

El paquete Eddystone-TLM está diseñado para ser transmitido por el beacon junto a                         los paquetes de "datos" (es decir, el UID y/o URL) para poder manejar una flota de beacons.  

Los dispositivos Bluetooth cercanos pueden leer estos paquetes y transmitirlos a un                       servicio de manejo de flotas. Este servicio puede notificar al propietario de los beacons, por                             ejemplo, que la batería se está agotando. 

El paquete TLM consiste en: 

● voltaje de la batería, que puede ser utilizado para estimar el nivel de la batería de                               un beacon, 

   48

 

2 MARCO TEÓRICO 

● la temperatura de baliza, 

● número de paquetes enviados desde el beacon desde la última vez que fue                         encendido o reiniciado, 

● tiempo de actividad del beacon, es decir, el tiempo que se encuentra funcionando                         desde la última vez que fue encendido o reiniciado. 

   49

 

 

3 |  ESPECIFICACIÓN DEL PATRÓN 

 

Con la llegada de Internet de las Cosas se produjo una acelerada aceptación de teléfonos                             móviles y tablets, donde las aplicaciones se convierten en una herramienta cada vez más                           útil para comparaciones contextuales en el entorno de los usuario.  

En este contexto aparecen nuevas tecnologías y dispositivos, y junto con ellos los                         problemas y desafíos que deben afrontar los desarrolladores de so�ware al momento de                         incorporarlos. A lo largo del documento se define un patrón de diseño para prevenir                           aquellos problemas típicos y recurrentes que puedan surgir a la hora de desarrollar una                           aplicación móvil que interactúa con dispositivos beacon para obtener información del                     contexto de los usuarios.  

 

3.1 PATRONES 

El término patrón fue utilizado por primera vez por el arquitecto Christopher Alexander en                           el libro A Pattern Language: Towns, Buildings, Construction (1977), donde definió una serie                         de patrones arquitectónicos.  

Según Alexander " Cada patrón describe un problema que ocurre una y otra vez en nuestro                             

entorno y, a continuación, se describe la esencia de la solución a ese problema, de tal manera                                 

que se puede utilizar esta solución un millón de veces, sin tener que hacer dos veces lo                                 

mismo " [72].  

A pesar de que Alexander estaba hablando de patrones en edificios y ciudades, lo que decía                               era cierto aplicado a patrones de diseño orientados a objetos. En el so�ware, las                           soluciones se expresan en términos de objetos e interfaces en lugar de paredes y puertas,                             pero la esencia de los dos tipos de patrones es una solución a un problema en un contexto                                   [73]. 

Los patrones contienen el conocimiento de experiencias anteriores y pueden utilizarse para                       crear nuevas soluciones en contextos similares. Los expertos en cualquier campo,                     normalmente no crean nuevas soluciones en cada problema que se presenta, sino que se                           

   50

 

3 ESPECIFICACIÓN DEL PATRÓN  

basan en su experiencia para adecuar soluciones de problemas anteriores (patrones) y                       aplicarlos en los nuevos problemas. 

En 1987, Ward Cunningham y Kent Beck orientaron los patrones de Alexander hacia la la                             informática en su libro Using Pattern Language for OO Programs donde desarrollaban cinco                         patrones orientados a la interacción hombre máquina.  

Pero es a principio de los 90 cuando los patrones alcanzaron su auge, utilizándose para                             aportar soluciones a los proyectos informáticos, con la publicación del libro Design                       Patterns escrito por el GoF (Gang of Four). En este caso el patrón se presenta como la                                 solución a un problema que ocurre infinidad de veces en el entorno. Este libro recogía 23                               patrones de diseño aplicados a la programación informática.  

Los patrones de diseño hacen que sea más fácil reutilizar diseños exitosos y arquitecturas.                           Expresando técnicas probadas como patrones de diseño hace que sean más accesibles a                         los desarrolladores de nuevos sistemas. Los patrones de diseño ayudan a elegir                       alternativas de diseño que hacen a un sistema reutilizable y evadir alternativas que                         comprometan la reutilización [73]. 

Los patrones de diseño pueden incluso mejorar la documentación y mantenimiento de los                         sistemas existentes mediante el suministro de una especificación explícita de las                     interacciones entre clases y objetos. En pocas palabras, patrones de diseño ayudan a un                           diseñador a conseguir un "buen" diseño más rápido [73]. 

 

3.2 ESPECIFICACIÓN DEL PATRÓN 

A continuación se describen las características del patrón. 

NOMBRE Beacon Action Manager.  

Si bien este proyecto está realizado en un contexto de habla hispana, toda la información                             investigada sobre dispositivos beacons, lenguajes de programación móvil, Bluetooth LE,                   sistemas operativos móviles, se encuentra en inglés, al igual que el mayor ámbito de                           aplicación de la tecnología beacon, es por eso que se decidió utilizar un nombre en inglés                               para el patrón. 

 

   51

 

3 ESPECIFICACIÓN DEL PATRÓN  

INTENCIÓN  Determinar el comportamiento de las clases básicas que conforman aplicaciones que                     interactúan con dispositivos beacon para obtener información del contexto de los usuarios,                       ejecutando diferentes acciones cuando ingresan o salen de la región de un beacon o                           cuando cambia su proximidad al mismo. 

 

MOTIVACIÓN 

A la hora de plantear la arquitectura de una aplicación que se relaciona con beacons para                               lograr un mejor conocimiento del contexto del usuario, es necesario conocer cómo                       funcionan estos dispositivos y qué es necesario hacer del lado de la aplicación para que el                               funcionamiento de la misma y la interacción con los dispositivos sea la correcta. 

Debido a que es una tecnología bastante nueva todavía, no existe mucha documentación                         confiable sobre esta tecnología , por lo que es necesario invertir cierto tiempo investigando                           para poder definir la mejor forma de utilizarla.  

Lo que se pretende aquí es brindar una herramienta útil, confiable y probada para aquellos                             desarrolladores que decidan incorporar esta nueva tecnología en sus aplicaciones,                   determinando los roles específicos de cada una de las clases que intervienen, evitando así                           problemas comunes que puedan surgir al utilizar esta nueva tecnología. 

 

ESTRUCTURA 

La Figura 8 presenta el modelo estático del patrón de diseño describiendo las clases que                             intervienen. 

 Figura 8: Diagrama de Clases. 

   52

 

3 ESPECIFICACIÓN DEL PATRÓN  

 

PARTICIPANTES 

Aquí se enumeran y describen las entidades (y sus roles) que participan en el patrón. 

1) ManagerController 

El rol principal de esta clase es iniciar la búsqueda de beacons próximos a la                             aplicación. Para poder lograrlo es necesario que realice ciertas tareas. A continuación se                         describen las tareas que la clase debe realizar: 

● Verificar que el bluetooth del dispositivo móvil se encuentre encendido. 

● Determinar el ID de aquellos beacons que a la aplicación le interese saber cuando el                             dispositivo móvil se encuentre dentro de su región. 

● Determinar el objeto, de tipo ActionHandler, que va manejar los eventos que                       ocurran al interactuar con los dispositivos beacons, ya sea porque la aplicación                       entra o sale de la región de un beacon, porque la proximidad al mismo cambia, etc. 

● Iniciar el escaneo de los beacons que se identifiquen con los ID especificados                         anteriormente. 

 

2) ActionHandler 

El rol de esta clase es manejar todos los eventos que se disparen cuando la                             aplicación se encuentra interactuando con los beacons. La clase ManagerController es la                       que determina cuál es el objeto que actúa como ActionHandler.  

Los métodos de esta clase se determinan según las APIs o librerías que se utilicen. Son                               métodos que se disparan automáticamente cuando ocurren eventos al interactuar con                     beacons, ya sea cuando el dispositivo entra o sale de la región del beacon o su proximidad                                 al mismo cambia.  

 

3) Beacon 

El rol de esta clase es representar los beacons detectados por los métodos de la                             clase ActionHandler. Representa aquellos beacon con los que está interactuando la                     aplicación. En la clase beacon se definen los métodos y atributos propios para este tipo de                               

   53

 

3 ESPECIFICACIÓN DEL PATRÓN  

objetos que van a depender del tipo de aplicación en la que se lo utilice, por ejemplo: id,                                   nombre, proximidad, etc.  

 

COLABORACIONES 

Aquí se explican las interrelaciones que se dan entre los participantes. 

La clase ManagerController es la que inicia el escaneo de los beacons y determina cual es el                                 objeto, de tipo ActionHandler, que va a manejar los eventos que se disparen cuando la                             aplicación comience a interactuar con beacons.  

ActionHandler es la clase que maneja todos los eventos que se disparan al estar la                             aplicación en contacto con los beacons, ya sea porque la aplicación entra o sale de la                               región de un beacon, porque cambia la proximidad a un beacon, etc.  

Beacon es la clase que representa a todos los beacons detectados en los métodos del                             ActionHandler, o sea todos los beacons con los que está interactuando la aplicación. 

La Figura 9 describe un diagrama de secuencia mostrando la colaboración entre los                         componentes: 

   54

 

3 ESPECIFICACIÓN DEL PATRÓN  

 Figura 9: Diagrama de secuencia genérico.  

 

APLICABILIDAD Utilizar el patrón Beacon Action Manager en las siguientes situaciones: 

● La aplicación necesite ejecutar una acción cuando el dispositivo móvil se encuentre                       dentro de la región de beacons específicos. Se necesita identificar cuáles son los                         beacons con los que la aplicación va a interactuar. 

● Se necesite ejecutar una misma acción o acciones diferentes cada vez que la                         aplicación interactúa con los beacons especificados. 

   55

 

3 ESPECIFICACIÓN DEL PATRÓN  

● Se deban ejecutar acciones específicas cuando el dispositivo móvil ingresa en la                       región de un beacon. 

● Se deban ejecutar acciones específicas cuando el dispositivo móvil sale de la región                         de un beacon. 

● Estando el dispositivo móvil dentro de la región del beacon, se deban ejecutar                         acciones específicas según la proximidad a la que se encuentre el dispositivo móvil                         del beacon. 

● Determinar qué acciones ejecutar al cambiar la proximidad del dispositivo móvil al                       beacon, encontrándose dentro de la región del beacon. 

 

 

   56

 

 

4 |   APLICACIÓN DEL PATRÓN 

 

En el presente capítulo se describen diferentes aplicaciones móviles que se realizaron                       aplicando el patrón Beacon Action Manager presentado en el capítulo anterior. 

4.1 LUGGAGE FINDER 

Luggage Finder es una aplicación iOS que permite saber cuándo recoger el equipaje en el                             aeropuerto. Todo lo que se necesita es colocar un beacon dentro del bolso, especificar los                             datos del beacon en la aplicación, y ésta se encargará de detectar la valija, indicando a qué                                 distancia se encuentra. La distancia máxima de alcance es de aproximadamente 50 metros.                         En caso que la aplicación se encuentre en background el usuario recibirá notificaciones                         sobre su equipaje. 

4.1.1 ESTRUCTURA DE LA APLICACIÓN  

Las principales clases que componen la aplicación son: 

UIViewController Es la clase con que se inicia la aplicación. Contiene el botón ‘+’. 

AddBeaconTableViewController Esta clase permite al usuario ingresar los valores identificadores del beacon: UUID, major y minor. 

SearchViewController Clase que cumple el rol de ManagerController del patrón Beacon Action Manager. 

Beacon Clase que cumple el rol de Beacon del patrón Beacon Action Manager. 

ActionHandler Clase que cumple el rol de ActionHandler del patrón Beacon Action Manager. 

 

Este ejemplo se realizó utilizando el framework CoreLocation [75] proveído por Apple. A                         continuación se detalla el funcionamiento de cada clase. 

   57

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 10: Diagrama de Clases. 

CLASE: AddBeaconTableViewController 

Al iniciar la aplicación el usuario observa una vista de la clase UIViewController que                           contiene un botón ‘+’ (Figura 11). Al presionarlo lo lleva a la siguiente vista de la clase                                 AddBeaconTableViewController, donde se cargan los datos que permiten identificar al                   beacon (UUID, Major y Minor) que se colocará dentro de la valija o bolso (Figura 12).  

Al presionar el botón ‘Save’ los datos se guardan y se accede a la siguiente vista de la clase                                     SearchViewController que escanea el beacon. 

 

58

 

4 APLICACIÓN DEL PATRÓN 

 

   

Figura 11: vista inicial de la aplicación. 

Figura 12: Vista para cargar la información del beacon. 

 

CLASE: SearchViewController La clase SearchViewController actúa como ManagerController en el patron Beacon Action                     Manager. 

class    SearchViewController:    UIViewController,   CBCentralManagerDelegate    {                //   variable   declaration               var    beaconToRange      :   CLBeaconRegion!              let     locationManager:   CLLocationManager!              var    actionHandler      :   ActionHandler!              var    centralManager   :   CBCentralManager!                 override   func    viewDidLoad()   { 

 super. viewDidLoad() 

                      ...  

 //   check   status   of   BLE   hardware                                                                              (1) centralManager   =       CBCentralManager (delegate:    self,  

                                                                                                                                          queue:    dispatch_get_main_queue ()) 

 

59

 

4 APLICACIÓN DEL PATRÓN 

 

  //   requests   permission   to   use   location   services                              (2) 

                     locationManager   =   CLLocationManager()                       locationManager. requestAlwaysAuthorization () 

  //   set   the   ActionHandler                                                                                                   (3) 

                     actionHandler   =   ActionHandler()                       locationManager. delegate    =   actionHandler 

  //   set   beacons   to   monitor                                                                                                (4) setBeaconsToMonitor()   //   start   monitoring                                                                                                                  (5) startMonitoring() 

                     ...             } 

 

En el método  viewDidLoad() , la línea de código en (1) verifica si el Bluetooth en el                               dispositivo móvil se encuentra activado. De lo contrario se muestra un mensaje de                         advertencia al usuario (Figura 13). 

 

Figura 13: Notificación de Bluetooth  desactivado. 

 

 

60

 

4 APLICACIÓN DEL PATRÓN 

 

En (2)  se solicita al usuario los permisos necesarios para usar los servicios de localización                             cada vez que la aplicación se está ejecutando. 

En (3) se determina que el objeto actionHandler  de tipo ActionHandler  va a ser el                             encargado de manejar todos los eventos que ocurran al interactuar con los beacons. 

En (4) el método setBeaconsToMonitor() determina el ID de aquellos beacons que a la                           aplicación le interese saber cuándo el dispositivo móvil se encuentre dentro su región. En                           este caso, se toman los datos que el usuario ingreso (UUID, major, minor) inicializando el                             objeto beaconToRange. 

             func    setBeaconsToMonitor()   {  

                     //   get   the   beacon   id   values    let    defaults   =    NSUserDefaults.standardUserDefaults ()  let    UUID      =    NSUUID( UUIDString:   defaults.stringForKey(defaultsKeys.keyUUID)!)  let    major   =    UInt16( defaults.stringForKey(defaultsKeys.keyMajor)!)  let    minor   =    UInt16( defaults.stringForKey(defaultsKeys.keyMinor)!) 

                       //   set   the   id   to   range                        beaconToRange   =    CLBeaconRegion (   proximityUUID:   UUID!,                                                                                                                                               major:   major!,                                                                                                                                               minor:   minor!,                                                                                                                                identifier:    "" )  } 

 

En (5) el método startMonitoring() inicia el escaneo del beacon identificado con los                         valores almacenados previamente en el objeto beaconToRange. 

             func    startMonitoring()   {                      locationManager. startMonitoringForRegion (beaconToRange) 

locationManager. startRangingBeaconsInRegion (beaconToRange)             } 

 

Las aplicaciones pueden interactuar de dos formas con los beacons, es por esto que se                             invocan los métodos startMonitoringForRegion()  y startRangingBeaconsInRegion() . 

• Monitoring: Permite recibir notificaciones cuando la aplicación entra o sale de la región de                             un beacon.  

• Ranging: Permite recibir notificaciones cuando la aplicación ya se encuentra dentro del                         rango de un beacon y la proximidad al mismo cambia.  

 

61

 

4 APLICACIÓN DEL PATRÓN 

 

CLASE: ActionHandler La clase ActionHandler actua como ActionHandler en el patrón Beacon Action Manager. Esta                         clase implementa el protocolo CLLocationManagerDelegate  que define métodos para                 recibir información sobre la localización del dispositivo. Éstos son invocados desde el                       thread donde se inició el servicio de localización (el inicio del escaneo de beacons). Este                             thread tiene su propio loop de ejecución activo. 

Los métodos del protocolo son los siguientes: 

Respondiendo   a   eventos   de   Localización: locationManager(_:didUpdateLocations:) locationManager(_:didFailWithError:) locationManager(_:didFinishDeferredUpdatesWithError:)  Pausando   actualizaciones   de   Localización:  locationManagerDidPauseLocationUpdates(_:) locationManagerDidResumeLocationUpdates(_:)  Respondiendo   a   eventos   de   Heading locationManager(_:didUpdateHeading:) locationManagerShouldDisplayHeadingCalibration(_:)  Respondiendo   a   eventos   de   Regiones  locationManager(_:didEnterRegion:) locationManager(_:didExitRegion:) locationManager(_:didDetermineState:forRegion:) locationManager(_:monitoringDidFailForRegion:withError:) locationManager(_:didStartMonitoringForRegion:)  Respondiendo   a   eventos   de   Alcance,   Distancia: locationManager(_:didRangeBeacons:inRegion:) locationManager(_:rangingBeaconsDidFailForRegion:withError:)  Respondiendo   a   eventos   de   Visita: locationManager(_:didVisit:)  Respondiendo   a   eventos   de   cambios   de   Autorización: locationManager(_:didChangeAuthorizationStatus:)  

 

En el ejemplo, se implementaron solo algunos de los métodos que ofrece el protocolo: 

class    ActionHandler:    NSObject,   CLLocationManagerDelegate    {  

             var    notifiedOutOfRange   =    false              var    notifiedFound   =    false              var    notifiedinRange   =    false 

 

62

 

4 APLICACIÓN DEL PATRÓN 

 

             var    beaconFound   :   Beacon!              let    defaults   =    NSUserDefaults.standardUserDefaults ()               //   the   user   entered   the   specified   region.                                                         (1)              func    locationManager(manager:    CLLocationManager,                                   didEnterRegion   region:    CLRegion)    { 

notifyInRange()              }               //   the   user   left   the   specified   region.                                                                  (2)              func    locationManager(manager:    CLLocationManager,                                      didExitRegion   region:    CLRegion)    { 

notifyOutOfRange()             } 

 

Los métodos en (1) y (2) notifican cuando la aplicación ha entrado o salido de la región                                 del beacon mostrando una notificación push en el dispositivo como se observa en la figura                             14 y 15. 

 

Figura 14: Notificación en background cuando la aplicación 

entra a la región del beacon. 

Figura 15: Notificación en background cuando la aplicación 

sale de la región del beacon. 

 

63

 

4 APLICACIÓN DEL PATRÓN 

 

Una vez dentro de la región de un beacon se ejecuta el método en (3) que determina la                                   distancia o proximidad del dispositivo al beacon. El método se ejecuta repetidamente                       mientras la aplicación se encuentran dentro del rango del beacon, y brinda información                         actualizada de la proximidad. 

             //   one   or   more   beacons   are   in   range.                                                                        (3)              func    locationManager(   manager:    CLLocationManager,                                didRangeBeacons   beacons:   [ CLBeacon] ,                                                        inRegion   region:    CLBeaconRegion)    { 

  if    beacons.count   >    0    {              let    beacon   =   beacons[0] 

                                  if    beaconFound   ==    nil    {                                            //   get   the   beacon   found                                                                                 (4) 

beaconFound   =   Beacon(beaconfound:   beacon)               } 

                                  //   update   the   user   information                                                                     (5)                                  NSNotificationCenter.defaultCenter().postNotificationName (                                                                                                                            "NotificationBeacon" ,object:   beaconFound) 

                                  //   background   notifications                                                                              (6)  

             if    beaconFound.lastSeenBeacon!. proximity    ==   . Immediate    {                         notifyIsHere()             }    else   if    beaconFound.lastSeenBeacon!. proximity    !=   . Unknown    { 

   notifyInRange()                                  } else    { 

   notifyOutOfRange()             } } 

            }  

 En  (4)  se crea un objeto de tipo Beacon con la información del beacon encontrado y en                                 (5) se notifica al usuario los cambios en la proximidad invocando al método                         NotificationBeacon()  de la clase SearchViewController. El usuario observará el cambio                   de proximidad como se observa en la figura 16. 

 

64

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 16: Aplicación notifica al usuario cambios en la proximidad. 

En (6) se invocan diferentes métodos para mostrar notificaciones en background según la                         proximidad al beacon. Las notificaciones son las mismas que se observan en las figuras 14,                             15 y 17 para cuando la aplicación se encuentra a una proximidad inmediata (Immediate),                           desconocida (Unknown), o simplemente dentro del rango. 

 

 

65

 

4 APLICACIÓN DEL PATRÓN 

 

   

Figura 17: Notificación en background  cuando la aplicación se encuentra  

a una proximidad inmediata. 

 

CLASE: Beacon 

La clase Beacon actúa como Beacon en el patrón Beacon Action Manager. Contiene una                           variable de tipo CLBeacon  que almacena información del beacon encontrado como ser: los                         valores UUID, major, minor que permiten identificar al beacon, la proximidad del                       dispositivo al beacon, la precisión de la proximidad y la intensidad de la señal emitida por                               el beacon. 

class    Beacon:    NSObject    {              var    lastSeenBeacon:    CLBeacon? 

              override   init( )   { 

lastSeenBeacon   =    CLBeacon( )             } 

              init( beaconfound:    CLBeacon)    { 

lastSeenBeacon   =   beaconfound             } } 

 

66

 

4 APLICACIÓN DEL PATRÓN 

 

4.1.2 DIAGRAMAS 

ESCENARIO 1: BLE desactivado 

El usuario inicia la aplicación, ingresa los datos que identifican al beacon pero el bluetooth                             se encuentra desactivado en el dispositivo. 

 

Figura 18: Diagrama de Secuencia BLE desactivado. 

ESCENARIO 2: inicio del escaneo 

El usuario inicia la aplicación, ingresa los datos que identifican al beacon, el bluetooth se                             encuentra activado y se inicia el escaneo y monitoreo del beacon. 

 

67

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 19: Diagrama de Secuencia inicio de escaneo. 

ESCENARIO 3: ingreso a la región en background  

Se asume que el usuario inició la aplicación, ingresó los datos que identifican al beacon, el                               bluetooth se encuentra activado y el escaneo y monitoreo del beacon ya están iniciados.  

En el diagrama se modela la secuencia donde la aplicación entra a la región del beacon                               corriendo en background. 

 

68

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 20: Diagrama de Secuencia ingresar a la región de un beacon en background. 

ESCENARIO 4: cambio de proximidad  

Se asume que el usuario inició la aplicación, ingresó los datos que identifican al beacon, el                               bluetooth se encuentra activado, el escaneo y monitoreo del beacon se iniciaron y la                           aplicación se encuentra dentro del rango del beacon y corriendo en foreground.  

En el diagrama se modela el cambio de proximidad de la aplicación al beacon, donde pasa                               de ser 10 metros a 5 metros. 

 

69

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 21: Diagrama de secuencia de cambio de proximidad. 

 

 

   

 

70

 

4 APLICACIÓN DEL PATRÓN 

 

4.2 AIRPORT APP 

Airport es una aplicación Android que ayuda a los usuarios a ubicarse dentro del                           Aeropuerto. El usuario ingresa el número de gate de su próximo vuelo, y los beacons                             distribuidos en el interior del aeropuerto interactúan con la aplicación indicandole hacia                       donde dirigirse y donde podrán encontrar más información para llegar a destino.  

Al aproximarse a los beacons, la aplicación no solo muestra la información sino que                           también la reproduce para que personas con capacidades visuales reducidas puedan                     utilizarla también. 

4.2.1 ESTRUCTURA DE LA APLICACIÓN  

Las clases que componen la aplicación son: 

MainActivity Esta clase permite al usuario ingresar el número de gate (puerta) que está buscando. 

FinderActivity Clase que cumple el rol de ManagerController del patrón Beacon Action Manager. 

ActionHandler Clase que cumple el rol de ActionHandler del patrón Beacon Action Manager. 

BeaconEST Clase que cumple el rol de Beacon del patrón Beacon Action Manager. 

 

Este ejemplo se realizó utilizando el SDK brindado por la empresa Estimote [74] para                           interactuar con los beacons. A continuación se detalla el funcionamiento de cada clase. 

 

71

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 22: Diagrama de clases. 

CLASE: MainActivity 

La vista de esta es la clase que se observa al iniciar la aplicación. Aquí el usuario ingresa el                                     número de gate al cual quiere dirigirse (Figura 23). Luego, al presionar el botón ‘OK’ se                               accede a la siguiente vista de la clase FinderActivity donde se escanean los beacons. 

 

72

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 23: Vista para ingresar  el número de gate. 

CLASE: FinderActivity 

Esta clase actúa como ManagerController en el patrón Beacon Action Manager. 

public   class    FinderActivity    extends    AppCompatActivity                                                                                      implements    SensorEventListener   {                 private    BeaconManager    beaconManager ;              private    List<Region>    regionList    =    new    ArrayList<Region>();              private    ActionHandler    rangingListener ;             ...              @Override             protected   void    onCreate(Bundle   savedInstanceState)   {                          super .onCreate(savedInstanceState);                         setContentView(R.layout. activity_finder );                           beaconManager    =    new    BeaconManager( this );                          //   Check   Bluetooth                                                                                                                  (1)                         SystemRequirementsChecker. checkWithDefaultDialogs ( this );                          //   set   ActionHandler                                                                                                            (2)                          rangingListener    =    new    ActionHandler( this );                           beaconManager .setRangingListener( rangingListener ); 

 

73

 

4 APLICACIÓN DEL PATRÓN 

 

                          //   set   beacons   to   find                                                                                                      (3)                          setBeaconsToFind();                          ... } 

 

En (1)  se verifica si el Bluetooth en el dispositivo móvil se encuentra activado. De lo                               contrario se muestra un mensaje de advertencia al usuario (Figura 24). 

 

Figura 24: Notificación de Bluetooth  desactivado. 

 

En el método  onCreate() , las líneas de código en (2)  determinan que el objeto                           rangingListener  de tipo ActionHandler  va a ser el encargado de manejar todos los                         eventos que ocurran al interactuar con los beacons. 

En (3)  el método setBeaconsToFind() determina el ID de aquellos beacons que a la                           aplicación le interese saber cuándo el dispositivo móvil se encuentre dentro su región. En                           este caso, se crea un objeto de tipo Region  con los valores identificador, UUID, major y                               minor de cada beacon y se los agrega en el array regionList  como se observa a                               continuación. 

            private   void    setBeaconsToFind(){                         Region   region   =    new    Region( "cofeeShop" ,  

 

74

 

4 APLICACIÓN DEL PATRÓN 

 

                                                                                                          "B9407F30‐F5F8‐466E‐AFF9‐25556B57FE6D" ),                                                                                                           21382 ,                                                                                                           62091 );                           regionList .add(region);                         ...           } 

 

En el método  onResume() , en (4) se inicia el escaneo de los beacons identificados con los                               valores UUID, major y minor de cada uno de los objetos del array regionList. 

            @Override              protected   void    onResume()   {                          super .onResume();                           beaconManager .connect( new    BeaconManager.ServiceReadyCallback()   {                                      @Override                                   //   Start   Ranging                                                                                                               (4)                                   public   void    onServiceReady()   {                                               for (   Region   item   :    regionList    )   {                                                           beaconManager .startRanging(item);                                              }                                  }                      });           }  

 

CLASE: ActionHandler 

La clase ActionHandler actua como ActionHandler en el patrón Beacon Action Manager. Esta                         clase implementa la interface RangingListener  que define el método                 onBeaconsDiscovered  que se invoca cuando el dispositivo se encuentra dentro del rango                       de los beacons. Determina todos los beacons que se encuentran actualmente en rango. 

 

public   class    ActionHandler    implements       BeaconManager.RangingListener{               private    Context    context ;              public   static    Boolean    isShowing ;             ...               @Override              public   void    onBeaconsDiscovered(Region   region,   List<Beacon>   list)   {                          if    (!list.isEmpty())   {                                     Beacon   nearestBeacon   =   list.get( 0 );                                      //   get   the   Beacon   found                                                                                       (5) 

 

75

 

4 APLICACIÓN DEL PATRÓN 

 

                                    BeaconEST   beaconFound   =    new    BeaconEST(nearestBeacon);                                      int    section   =   getInfoToShow(beaconFound);                                      //   show   info   to   the   user                                                                                    (6)                                      if    (ActionHandler. isShowing    ==    false )   {                                                 FinderActivity. showInfo (section,    context );                                     }                         }             } 

 

En  (5)  se crea un objeto de tipo BeaconEST  con la información del beacon encontrado y                               en (6) el método showInfo  le informa al usuario hacia dónde debe dirigirse mostrándole                           un cartel y reproduciendo la misma información en un audio, teniendo en cuenta el                           número de gate ingresado y la región del beacon en la que se encuentra, como se observa                                 en la figura 25.  

 

Figura 25: Aplicación notifica al usuario su proximidad a diferentes beacons. 

CLASE: BeaconEST 

La clase BeaconEST actúa como Beacon en el patrón Beacon Action Manager. Contiene una                           variable de tipo Beacon  (clase proveída por el SDK) que almacena información del beacon                           encontrado como ser: los valores UUID, major, minor que permiten identificar al beacon y                           la intensidad y precisión de la señal emitida por el beacon. 

 

76

 

4 APLICACIÓN DEL PATRÓN 

 

public   class    BeaconEST   {           public    Beacon    beaconInfo ;           private    String    name ;            public    BeaconEST(Beacon   beacon){                       this . beaconInfo    =   beacon;                       this . name    =    "   " ;          }            public    BeaconEST(String   uuid,    int    major,    int    minor){                      UUID   newUUID   =      UUID. fromString (uuid);                      MacAddress   mac   =   MacAddress. fromString ( "" );                       this . beaconInfo    =    new    Beacon(newUUID,   mac,   major,   minor,    0 ,    0 );                       this . name    =    "   " ;          } }  

 

4.2.2 DIAGRAMAS 

ESCENARIO 1: BLE desactivado 

El usuario inicia la aplicación, ingresa el número de gate pero el bluetooth se encuentra                             desactivado en el dispositivo. 

 

Figura 26: Diagrama de secuencia BLE desactivado. 

 

77

 

4 APLICACIÓN DEL PATRÓN 

 

ESCENARIO 2: inicio del escaneo 

El usuario inicia la aplicación, ingresa el número de gate pero el bluetooth se encuentra                             activado y se inicia el escaneo. 

 

Figura 27: Diagrama de secuencia inicio de escaneo. 

ESCENARIO 3: ingreso a la región 

Se asume que el usuario inició la aplicación, ingresó número de gate, el bluetooth se                             encuentra activado y el escaneo ya está iniciado.  

En el diagrama se modela la secuencia donde la aplicación entra a la región de 2 beacon e                                   informa al usuario la información del más próximo. 

 

78

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura   28:   Diagrama   de   secuencia   ingreso   a   la   region   de   un   beacon.  

 

   

 

79

 

4 APLICACIÓN DEL PATRÓN 

 

4.3 ZOO APP 

Zoo App es una aplicación iOS de un zoológico que brinda información de los animales a                               medida que se va recorriendo el lugar. El usuario selecciona los animales de los cuales le                               interesa conocer más información durante el recorrido. Dentro del zoológico se encuentran                       distribuido diferentes beacons que interactúan con la aplicación de tal forma que cuando el                           usuario se encuentre observando los animales que seleccionó previamente, reciba                   información detallada sobre ellos. 

4.3.1 ESTRUCTURA DE LA APLICACIÓN  

Las clases que componen la aplicación son: 

ZooCollectionViewController 

Esta clase permite al usuario seleccionar los             

animales de los cuales le interesa recibir             

información durante su visita. 

SearchViewController Clase que cumple el rol de ManagerController del               

patrón Beacon Action Manager. 

Beacon Clase que cumple el rol de Beacon del patrón                 

Beacon Action Manager. 

ActionHandler Clase que cumple el rol de ActionHandler del patrón                 

Beacon Action Manager. 

Constants Clase que contiene variables globales de la             

aplicación. 

 

Este ejemplo se realizó utilizando el framework CoreLocation [75] proveído por Apple. A                         continuación se detalla el funcionamiento de cada clase. 

 

80

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 29: Diagrama de clases. 

CLASE: ZooCollectionViewController 

Al iniciar la aplicación el usuario observa una lista de opciones para seleccionar los                           animales de los que quisiera recibir más información (figura 30) . Al presionar el botón                             siguiente (‘>’), por cada animal seleccionado se guarda una key en la variable                         selectedAnimals  de la clase SearchViewController que los identifica, y se accede a dicha                         clase para escanear los beacons asociados a cada animal. 

 

81

 

4 APLICACIÓN DEL PATRÓN 

 

  

Figura 30: Vista para seleccionar los animales de interés. 

 

CLASE: SearchViewController La clase SearchViewController actúa como ManagerController en el patron Beacon Action                     Manager. 

class    SearchViewController:    UIViewController,   CBCentralManagerDelegate    {                //   variable   declaration               var    beaconsToRange      :   [CLBeaconRegion]!              let     locationManager:   CLLocationManager!              var    actionHandler      :   ActionHandler!              var    centralManager   :   CBCentralManager!                var    selectedAnimals   :   [String]!                 override   func    viewDidLoad()   { 

 super. viewDidLoad() 

                      ...  

 //   check   status   of   BLE   hardware                                                                              (1) centralManager   =       CBCentralManager (delegate:    self,  

                                                                                                                                          queue:    dispatch_get_main_queue ())  

 

82

 

4 APLICACIÓN DEL PATRÓN 

 

 //   requests   permission   to   use   location   services                              (2)                      locationManager   =   CLLocationManager()                       locationManager. requestAlwaysAuthorization () 

  //   set   the   ActionHandler                                                                                                   (3) 

                     actionHandler   =   ActionHandler()                       locationManager. delegate    =   actionHandler 

  //   set   beacons   to   monitor                                                                                                (4) setBeaconsToMonitor()   //   start   monitoring                                                                                                                  (5) startMonitoring() 

                     ...             } 

 

En el método  viewDidLoad() , la línea de código en (1) verifica si el Bluetooth en el                               dispositivo móvil se encuentra activado. De lo contrario se muestra un mensaje de                         advertencia al usuario (Figura 31). 

 

Figura 31: Notificación de Bluetooth  desactivado. 

 En (2)  se solicita al usuario los permisos necesarios para usar los servicios de localización                             cada vez que la aplicación se está ejecutando. 

 

83

 

4 APLICACIÓN DEL PATRÓN 

 

En (3) se determina que el objeto actionHandler  de tipo ActionHandler  va a ser el                             encargado de manejar todos los eventos que ocurran al interactuar con los beacons. 

En (4) el método setBeaconsToMonitor() determina el ID de aquellos beacons que a la                           aplicación le interese saber cuándo el dispositivo móvil se encuentre dentro su región. En                           este caso, a cada uno de los animales seleccionados se le asocia un Beacon y se los agrega                                   en el array beaconsToRange. 

             func    setBeaconsToMonitor()   {                       var    animalBeacon:   Beacon                        for    animalKey    in    selectedAnimals   { 

            animalBeacon   =    Beacon (animalKey:   animalKey)             beaconsToRange.append(animalBeacon) } 

 

En (5) el método startMonitoring() inicia el escaneo de todos los beacons almacenados                         previamente en el array beaconsToRange. 

             func    startMonitoring()   {                       for    item    in    beaconsToRange   {                                  locationManager. startMonitoringForRegion (item)               locationManager. startRangingBeaconsInRegion (item)                      }             } 

 

CLASE: ActionHandler La clase ActionHandler actua como ActionHandler en el patrón Beacon Action Manager. Esta                         clase implementa el protocolo CLLocationManagerDelegate  que define métodos para                 recibir información sobre la localización del dispositivo. Éstos son invocados desde el                       thread donde se inició el servicio de localización (el inicio del escaneo de beacons). Este                             thread tiene su propio loop de ejecución activo. 

En el ejemplo, se implementaron solo algunos de los métodos que ofrece el protocolo:                           cuando el dispositivo se encuentra dentro de la región de un beacon, se invoca el método                               en (1) . El método se invoca repetidamente mientras la aplicación se encuentran dentro                         del rango de alguno de los beacons, y muestra al usuario información del animal                           correspondiente al beacon detectado. 

class    ActionHandler:    NSObject,   CLLocationManagerDelegate    {              var    beaconFound   :   Beacon! 

 

84

 

4 APLICACIÓN DEL PATRÓN 

 

              //   one   or   more   beacons   are   in   range.                                                                        (1)              func    locationManager(   manager:    CLLocationManager,                                didRangeBeacons   beacons:   [ CLBeacon] ,                                                        inRegion   region:    CLBeaconRegion)    { 

  for    beacon    in    beacons   {           if    beacon. proximity    ==   . Immediate    { 

                                          //   get   the   beacon   found                                                                                 (2)                                            beaconFound   =    Beacon (proximityUUID:   beacon.proximityUUID,                                                                                                                                   major:   beacon.major.unsignedShortValue,                                                                                                                                   minor:   beacon.minor.unsignedShortValue,                                                                                                                    identifier:   region.identifier) 

                                           beaconFound.lastSeenBeacon   =   beacon                                           //   update   the   user   information                                                            (3)                                            NSNotificationCenter.defaultCenter().postNotificationName (                                                                                                                          "NotificationBeacon" ,   object:   beaconFound)  

} } 

 

En  (2)  se crea un objeto de tipo Beacon con la información del beacon encontrado y en                                 (3) se muestra al usuario la información del animal correspondiente al beacon encontrado                         invocando al metodo NotificationBeacon()  de la clase SearchViewController. El usuario                   observará la información de los diferentes animales como se observa en la figura 32. 

 

85

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 32: Aplicación notifica al usuario proximidad a diferentes animales. 

CLASE: Beacon 

La clase Beacon actúa como el actor Beacon del patrón Beacon Action Manager. Extiende                           de la clase CLBeaconRegion por lo que hereda todas sus propiedades. Además posee el                           constructor init(animalKey: String) que permite crear el beacon asociado a cada                     Animal. 

class    Beacon: CLBeaconRegion    {               override   init( proximityUUID:    NSUUID,    major:    UInt16,    minor:    UInt16,                                                                                                                                                                                         identifier:    String)    { 

 super.init( proximityUUID:   proximityUUID,   major:   major,   minor:   minor,                                                                                                                                                                             identifier:   identifier)             }               init( animalKey:    String)    { 

 if    animalKey   ==   animalsKeys.keyFish   {                                   super.init (proximityUUID:   FishID,   major:   FishMajor,                                                                                            minor:   FishMinor,   identifier:   animalKey)  

} else   if    animalKey   ==   animalsKeys.keyBird   {              super.init (proximityUUID:   BirdID,   major:   BirdMajor,  

                                                                                          minor:   BirdMinor,   identifier:   animalKey)  

 

86

 

4 APLICACIÓN DEL PATRÓN 

 

} else                                 ...                      }              } } 

 

4.3.2 DIAGRAMAS 

ESCENARIO 1: inicio del escaneo 

El usuario inicia la aplicación, selecciona el ítem oveja y tortuga, y se inicia el escaneo. Se                                 asume que el bluetooth del dispositivo se encuentra activado. 

 

Figura 33: Diagrama de secuencia inicio de escaneo. 

 

87

 

4 APLICACIÓN DEL PATRÓN 

 

ESCENARIO 2: ingreso a la región 

Se asume que el usuario inició la aplicación, seleccionó los ítems oveja y tortuga, el                             bluetooth del dispositivo se encuentra activado y el escaneo ya está iniciado.  

En el diagrama se modela la secuencia donde la aplicación entra a la región del beacon que                                 representa al ítem oveja e informa al usuario la información. 

 

Figura 34: diagrama de secuencia ingreso a la región de un beacon. 

 

   

 

88

 

4 APLICACIÓN DEL PATRÓN 

 

4.4 BAKERY APP  

Bakery App es una aplicación Android de la pastelería Bakery Good que ofrece diferentes                           promociones a los clientes que se encuentran en su local según su ubicacion dentro de la                               tienda.  

4.4.1 ESTRUCTURA DE LA APLICACIÓN  

Las clases que componen la aplicación son: 

MainActivity Clase que cumple el rol de ManagerController del patrón Beacon Action Manager.  

ActionHandler Clase que cumple el rol de ActionHandler del patrón Beacon Action Manager. 

Beacon Clase que cumple el rol de Beacon del patrón Beacon Action Manager. 

Util Clase que contiene variables globales de la aplicación. 

 

Este ejemplo se realizó utilizando las APIs de BLE que provee Android en su versión 4.3 (API                                 Level 18) [76], utilizando el protocolo de comunicación establecido por BLE. A continuación                         se detalla el funcionamiento de cada clase. 

 

89

 

4 APLICACIÓN DEL PATRÓN 

 

 

Figura 35: Diagrama de clases. 

CLASE: MainActivity 

Esta clase actúa como ManagerController en el patrón Beacon Action Manager, es la clase                           que se observa al iniciar la aplicación. Aquí es donde se setea la información de los beacons                                 y se realiza el escáner. 

public   class    MainActivity    extends    AppCompatActivity   {               private    BluetoothAdapter    mBLEAdapter ;             private    ActionHandler    mScanCallback ;             private    BluetoothLeScanner    mBluetoothLeScanner ;             private    List<Beacon>    regionList    =    new    ArrayList<Beacon>();             ...              @Override             protected   void    onCreate(Bundle   savedInstanceState)   {                          super .onCreate(savedInstanceState);                         setContentView(R.layout. activity_main );                          //   set   ActionHandler                                                                                                            (1)                         mBLEAdapter    =   BluetoothAdapter. getDefaultAdapter ();                          mBluetoothLeScanner    =    mBLEAdapter .getBluetoothLeScanner();                         mScanCallback    =    new    ActionHandler( this );                           //   Check   Bluetooth                                                                                                                  (2)                          if    (! mBLEAdapter .isEnabled()   )   {                                     showAlert()                          } 

 

90

 

4 APLICACIÓN DEL PATRÓN 

 

                          //   set   beacons   to   find                                                                                                      (3)                           setBeaconsToScan();                         ...             } 

 

En el método  onCreate() , las líneas de código en (1) se inicializa el objeto mScanCallback                              que  va a ser el encargado de manejar todos los eventos que ocurran al interactuar con los                                 beacons. 

En (2)  se verifica si el Bluetooth en el dispositivo móvil se encuentra activado. De lo                               contrario se muestra un mensaje de advertencia al usuario (Figura 36). 

 

Figura 36: Notificación de Bluetooth desactivado.  

En (3)  el método setBeaconsToScan() determina el ID de aquellos beacons que a la                           aplicación le interese saber cuándo el dispositivo móvil se encuentre dentro su región. En                           este caso, se crea un objeto de tipo Beacon  con los valores UUID, major y minor de cada                                   beacon y se los agrega en el array regionList    como se observa a continuación. 

            private   void    setBeaconsToScan(){                         Beacon   beaconBread   =    new    Beacon(Util. breadUUID ,    21769 ,    32384 )   ;                         Beacon   beaconCookie   =    new    Beacon(Util. cookieUUID ,    0 ,    1288 );                         ...    

 

91

 

4 APLICACIÓN DEL PATRÓN 

 

                         regionList .add(beaconBread);                          regionList .add(beaconCookie);                         ...           } 

 

El método  onResume() , que se ejecuta cada vez que la aplicación se activa, realiza el                             escaneo de cada uno de los objetos del array regionList  que se inicia y se detiene cada 1                                   segundo. 

            @Override              protected   void    onResume()   {                          super .onResume();                         scanHandler .post( scanRunable );              }               //   start   scan              final    Runnable    scanRunable    =   ()   {                        mBluetoothLeScanner .startScan(setScanFilter(),                                                                                                                          setScanSettings(),                                                                                                                            mScanCallback );                         scanHandler .postDelayed( stopscanRunable , 1000 );              };               //   stop   scan              final    Runnable    stopscanRunable    =   ()   {                        mBluetoothLeScanner .stopScan( mScanCallback );                        scanHandler .postDelayed( scanRunable ,    1000 );              };               //   set   filters              private    List<ScanFilter>   setScanFilter()   {                      List<ScanFilter>   filters   =    new    ArrayList<ScanFilter>();                       for(   Beacon   item   :   regionList   )   {                                  UUID   currentUUID   =   UUID.fromString(item.getUuid());                                  ParcelUuid   parcelableUUID   =    new    ParcelUuid(currentUUID);                                  ScanFilter   filter   =   new   ScanFilter.Builder()                                                             .setServiceUuid(parcelableUUID)                                                             .build();                                   filters.add(filter);                      }                       return    filters;             }               //   set   settings              private    ScanSettings   setScanSettings()   {                         ScanSettings.Builder   mBuilder   =    new    ScanSettings.Builder();                         mBuilder.setReportDelay( 0 ); 

 

92

 

4 APLICACIÓN DEL PATRÓN 

 

                        mBuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER);                         ScanSettings   mScanSettings   =   mBuilder.build();                          return    mScanSettings;             }  

 

CLASE: ActionHandler 

La clase ActionHandler actua como ActionHandler en el patrón Beacon Action Manager. Esta                         clase extiende a la clase ScanCallBack  que define el método onScanResult  que se invoca                           cuando el dispositivo se encuentra dentro del rango de los beacons, pero no determina la                             proximidad a la que se encuentran, ni tampoco cuando esa proximidad cambia, o cuando                           se sale de la región. Es por esto que el escaneo se reinicia cada 1 segundo. De esta forma se                                       puede conocer los cambios en la proximidad y si todavía se encuentra dentro del rango del                               beacon.  

public   class    ActionHandler    extends    ScanCallback{              public   void    onScanResult( int    callbackType,   ScanResult   result)   {                      //   get   the   Beacon   found                                                                                       (4)                       Beacon   device   =    new    Beacon(result);                       //   calculate   the   proximity                                                                              (5)                        if    (Objects. equals (device.getProximity(),    "Immediate" ))   {                                   if    (ActionHandler. isShowing    ==    false )   {                       //   show   info   to   the   user                                                                                    (6)                                              MainActivity. showPromotion (Util. getSection (device),    context );                                  }                      }          } } 

 

En     (4)     se crea un objeto de tipo Beacon    con la información del beacon encontrado.  

En (5) el método getProximity de la clase Beacon  aplica una fórmula para calcular la                             proximidad al beacon. Esta fórmula no es muy precisa, es la utilizada por la compañía                             Radius Network [77] en su propio SDK, luego de realizar varias pruebas. 

            public   static   double    calucateDistance( int    rssi,    int    TxPower){                       double    ratio   =   (( float )rssi)   /   TxPower;                        if (ratio   <    1.0 ){                                     return    Math. pow (ratio,    10 );                       }                        return       0.89976    *   Math. pow (ratio,    7.7095 )   +    0.111 ; 

 

93

 

4 APLICACIÓN DEL PATRÓN 

 

             } 

 

En (6) el método showPromotion  le informa al usuario las promociones asociadas a ese                           beacon, como se observa en la figura 37.  

 

Figura 37: Aplicación notifica al usuario las diferentes promociones segun su ubicacion. 

CLASE: Beacon 

La clase Beacon actúa como Beacon en el patrón Beacon Action Manager. Contiene                         variables para almacenar toda información del beacon encontrado como ser: los valores                       UUID, major, minor que permiten identificar al beacon y la intensidad y precisión de la                             señal emitida por el beacon.   

      public   class   Beacon   {           private    String     uuid ;          private    String     name ;          private   int    major ;          private   int    minor ;          private   int    rssi ;          private   double    distance ;          private    BluetoothDevice    beaconFound ; 

 

 

94

 

4 APLICACIÓN DEL PATRÓN 

 

Para obtener esta información, cada vez que se crea un objeto Beacon es necesario parsear                             la información que viene en una cadena de bytes con el siguiente formato : 

          /*       Beacon   advertisement   packet:       |   0x02   |   0x15               |   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   ‐   |   ‐   ‐   ‐   |   ‐   ‐   ‐   |   ‐   ‐   ‐   ‐|       |      ID      |   Data   Len   |            uuid                                                                           |   major   |   minor   |Tx   power|       0                  1                              2                                                                                                18                  20                  22                     24          example   :       02   |   15   |   E2   0A   39   F4   73   F5   4B   C4   A1   2F   17   D1   AD   07   A9   61   |   00   00   |   00   00   |   C8       */           public    Beacon(ScanResult   result){                       Beacon   device     =    null;                       byte []   scanRecord   =   result.getScanRecord().getBytes();                      int    startByte   =   2;                      int    txPower   =   0;                      boolean    patternFound   =    false;                       while    (startByte   <=    5 )   {                                  //Identifies   an   iBeacon   &&   Identifies   correct   data   length                                  if    ((( int )   scanRecord[startByte   +     2 ]   &     0xff )   ==    0x02    &&                                                            (( int )   scanRecord[startByte   +    3 ]   &    0xff )   ==     0x15 )   {                                                 patternFound   =    true;                                              break;                                   }                                  startByte++;                      }                        if    (patternFound)   {                                   //Convert   to   hex   String                                   byte []     uuidBytes   =    new   byte [ 16 ];                                    System. arraycopy (scanRecord,   startByte   +     4 ,    uuidBytes,     0 ,    16 );                                   String   hexString   =   Util. bytesToHex (uuidBytes);                                     //UUID                                    this. uuid     =       hexString.substring( 0 , 8 )   +   "‐"   +                                                          hexString.substring( 8 , 12 )   +   "‐"   +                                                          hexString.substring( 12 , 16 )   +   "‐"   +                                                          hexString.substring ( 16 , 20 )   +   "‐"   +                                                          hexString.substring( 20 , 32 );                                     //Major   value                                   this. major     =    (scanRecord[startByte+ 20 ]   &    0xff )   *    0x100    +                                                                             (scanRecord[startByte+ 21 ]   &    0xff );                                    //Minor   value                                   this. minor     =    (scanRecord[startByte+ 22 ]     &    0xff )   *    0x100    +                                                                                (scanRecord[startByte+ 23 ]   &     0xff ); 

 

95

 

4 APLICACIÓN DEL PATRÓN 

 

                                   //   Power                                   txPower    =    scanRecord[startByte+    24 ];                                    //   RSSI                                   this. rssi     =    result.getRssi();                                    //   Distance                                   this. distance     =    Util.calucateDistance( rssi ,txPower);                                    //Name                                   this . name     =    "" ;                        }          }   

 

4.4.2 DIAGRAMAS 

ESCENARIO 1: dentro del rango 

La aplicación se encuentra dentro del rango del beacon que contiene la promoción de café,                             a una proximidad inmediata. 

 

 

 

96

 

 

5 |  CONCLUSIONES 

 

En los últimos años se ha presenciado una serie de revoluciones que han llevado al punto                               de que hablar de Internet de las cosas no sea más simple teoría, sino una realidad y una                                   tendencia inevitable con todas las consecuencias sociales y económicas que pueden                     preverse.  

Estas revoluciones e innovaciones incluyen el impresionante alcance que ha logrado la                       conectividad a internet, el internet inalámbrico, las tecnologías de transferencia de datos                       inalámbricas en general, el gran desarrollo de las telecomunicaciones, específicamente el                     desarrollo tecnológico que se ha alcanzado con los teléfonos móviles, y con todos los                           dispositivos móviles en general. 

Los dispositivos móviles se convirtieron en una herramienta muy útil para comprender el                         entorno de los usuarios. Su interacción con los dispositivos beacon generan nuevas                       posibilidades de reconocimiento de ubicación de los usuarios y permiten obtener mejores                       experiencias.  

A la hora de plantear la arquitectura de una aplicación móvil que se relaciona con                             dispositivos beacon, aparecen nuevos problemas y desafíos de diseño para los                     desarrolladores que necesitan integrar esta nueva tecnología en sus aplicaciones móviles. 

En el trabajo desarrollado se ha validado que es posible definir un patrón de diseño para                               aplicaciones móviles que interactúan con dispositivos beacons para conocer el contexto de                       los usuarios. La utilización de este patrón permite prevenir aquellos problemas típicos y                         recurrentes que puedan surgir a la hora de desarrollar este tipo de aplicaciones móviles. 

Para llevar a cabo el objetivo se desarrollaron diferentes aplicaciones móviles que                       interactúan con dispositivos beacon situadas en diversos contextos.  

A los fines de no dificultar la lectura de este documento, sólo se detallaron algunas de ellas.                                 En cada una de estas aplicaciones se implementó exitosamente el patrón especificado en                         esta tesis para establecer la comunicación entre las aplicaciones móviles y los dispositivos                         beacon, obteniendo un diseño claro de fácil comprensión. 

 

   97

 

5 CONCLUSIONES 

Finalmente, como contribución, se puede mencionar que este trabajo de tesis proporciona                       una herramienta útil, confiable, probada e independiente del lenguaje de construcción de                       sistemas para los desarrolladores que decidan incorporar esta nueva tecnología en sus                       aplicaciones.  

 

98

 

 

6 |  FUTURAS EXTENSIONES 

 

Algunas de las posibles extensiones de este trabajo de investigación incluyen: 

● Adaptación del patrón de diseño para utilizarlo en aplicaciones de dispositivos                     

wearables.  

Los dispositivos wearables hacen referencia a aquellos aparatos y dispositivos                   electrónicos que se incorporan en alguna parte del cuerpo interactuando de forma                       continua con el usuario y con otros dispositivos, por ejemplo, relojes inteligentes,                       zapatillas de deportes con GPS incorporado, anteojos inteligentes como Google                   Glass [78], etc. Se propone adaptar el patrón para que los dispositivos beacons                         puedan interactuar con dispositivos wearables proveídos de la tecnología BLE. 

 

● Extensión del patrón para ser utilizado en aplicaciones móviles que interactúan con                       

dispositivos beacons para establecer localización en interiores (indoor location).  

La información que una aplicación móvil recibe al interactuar con un beacon se                         puede utilizar para situar al usuario en un mapa dentro del lugar donde se                           encuentre. Llegados aquí se aprecian ya tres de las limitaciones actuales de la                         localización en interiores: 

○ No hay mapas previos. No se trata únicamente de posicionar en un mapa la                           información provista por los beacons, sino que cada lugar donde se                     implemente tiene que crear su propia “cartografía”. 

○ Hay que asociar los beacons a una posición permanente dentro de esa                       cartografía, o no se podrá asociar la información digital generada con su                       correspondencia física. Si se mueve el beacon sin recodificar su posición                     dentro de la “cartografía” se estará generando información incorrecta. 

○ La exactitud debe ser mucho mayor que en el caso del GPS. Una                         aproximación de 10 metros puede ser la diferencia entre estar, por ejemplo,                       en la sección de los lácteos o en la de panadería dentro de un                           supermercado. 

  

  99

 

6 FUTURAS EXTENSIONES 

Estos aspectos dan idea de las dificultades de despliegue que presentan los                       proyectos de este tipo. 

 

● Desarrollo de una herramienta gráfica que represente la interacción en aplicaciones                     

móviles y dispositivos beacons. 

Desarrollar una herramienta que permita al usuario representar gráficamente la                   interacción entre una aplicación móvil y los dispositivos beacons y a partir de allí                           generar automáticamente el código fuente utilizando el patrón planteado en este                     documento. Ejemplo: Se desea generar una aplicacion iOS que interactúe con 3                       beacons y que ejecute diferentes acciones teniendo en cuenta: 

○ la región del beacon dentro de la cual se encuentra. ○ la proximidad a la que se encuentra. 

En este caso, el usuario de la herramienta deberá colocar en el dashboard un objeto                             que represente el dispositivo iOS relacionado a tres objetos beacons. Para todos los                         objetos se deberán asignar las propiedades y acciones necesarias de tal forma que                         el código generado represente correctamente el modelo graficado. Por lo tanto, a                       cada objeto beacon, se le asignarán los atributos necesarios para identificarlo y las                         acciones a ejecutar cada vez que el dispositivo se encuentre dentro de su región                           especificando qué acción realizar según la proximidad. 

   100

 

 

7 |  REFERENCIAS  

 [1] Internet World Stats (2015). World internet usage and population statitics, Noviembre                       2015, http://www.internetworldstats.com/stats.htm . Último ingreso Septiembre 2016.  [2] Weiser, M (1991). The Computer for the 21st Century, Scientific American, Septiembre                         1991, http://web.media.mit.edu/~anjchang/ti01/weiser-sciam91-ubicomp.pdf. Último     ingreso Septiembre 2016.  [3] Auto-ID Labs. La red de laboratorios Auto-ID es un grupo de investigación centrado en                             el desarrollo de etiquetas RFID y sensores, con centros en varios países,                       http://www.autoidlabs.org/ . Último ingreso Septiembre 2016.  [4] Kevin Ashton (2009). That 'Internet of Things' Thing, RFID Journal, Junio 2009,                         http://www.rfidjournal.com/articles/pdf?4986 . Último ingreso Septiembre 2016.  [5] Intel (2015). 50 Years of Moore's Law, Fueling Innovation We Love and Depend On,                             http://www.intel.com/content/www/us/en/silicon-innovations/moores-law-technology.html . Último ingreso Septiembre 2016.  [6] Fundación Innovación Bankinter (2013). Video de Paul Horn presentando An Internet of                           Everything en el XV FTF, Diciembre 2010, https://www.youtube.com/watch?v=pqyV4pi3RaE               . Último ingreso Septiembre 2016.  [7] Bluetooth®. What is Bluetooth Technology?, Bluetooth, https://www.bluetooth.com/what-is-bluetooth-technology/bluetooth. Último ingreso Septiembre 2016.  [8] Bluetooth®. What is Bluetooth Technology?, Basic Rate/Enhanced Data Rate (BR/EDR), https://www.bluetooth.com/what-is-bluetooth-technology/bluetooth-technology-basics/br-edr. Último ingreso Septiembre 2016.  [9] Bluetooth®. What is Bluetooth Technology?, Low Energy, http://www.bluetooth.com/what-is-bluetooth-technology/bluetooth-technology-basics/low-energy . Último ingreso Septiembre 2016.  [10] Ed Gravianowski. Is Wibree going to rival Bluetooth?, How Stu� Works, http://electronics.howstu�works.com/wibree.htm . Último ingreso Septiembre 2016.  

   101

 

REFERENCIAS  

[11] Bluetooth®. What is Bluetooth Technology?, Adopted Specifications, Core Specification 4.2, https://www.bluetooth.org/en-us/specification/adopted-specifications. Último ingreso Septiembre 2016.  [12] William Ablondi (2015). Smart Home Systems and Services: Competitor Profiles, Strategy Analytics, Febrero 2015, https://www.strategyanalytics.com/access-services/devices/connected-home/smart-home/reports/report-detail/smart-home-systems-and-services-competitor-profiles#.Vp7qa1MrKRs. Último ingreso Septiembre 2016.  [13] Jamie Fox (2014). Indoor Positioning to Post Robust Growth in 2015, IHS technology,                           Noviembre 2014, https://technology.ihs.com/515328. Último ingreso Septiembre 2016.  [14] Blake Kozak (2014). Apple NFC could be lightning Rod for Change in Access Control                             Industry, IHS technology, Septiembre 2014, https://technology.ihs.com/510715  [15] Craig Foster (2014). Sector Roadmap: Smart home platforms, GigaOM Research,                     Octubre 2014, https://gigaom.com/report/sector-roadmap-smart-home-platforms/ . Último       ingreso Septiembre 2016.  [16] Stacey Higginbotham (2013). ZigBee wants to be the Bluetooth of the internet of things. Too bad everyone hates it, GigaOM, Agosto 2013, https://gigaom.com/2013/08/30/zigbee-wants-to-be-the-bluetooth-of-the-internet-of-things-too-bad-everyone-hates-it/ . Último ingreso Septiembre 2016.  [17] Apple Press Info (2007). Apple Reinvents the Phone with iPhone, Comunicado de Apple el dia del lanzamiento del iPhone en el MACWORLD SAN FRANCISCO, 9 de Enero 2007, http://www.apple.com/pr/library/2007/01/09Apple-Reinvents-the-Phone-with-iPhone.html. Último ingreso Septiembre 2016.  [18] StatCounter Global Stats (2016). Top 8 Mobile & Tablet Operating Systemn on February 2016, Febrero 2016, http://gs.statcounter.com/#mobile+tablet-os-ww-monthly-201602-201602-bar . Último ingreso Septiembre 2016.  [19] Apple inc. (2014). iBeacon for developrers, https://developer.apple.com/ibeacon/. Último ingreso Septiembre 2016.  [20] Apple inc. (2014). Getting Started with iBeacon Version 1.0, 2014, https://developer.apple.com/ibeacon/Getting-Started-with-iBeacon.pdf . Último ingreso Septiembre 2016.  [21] Google (2014). Google Design, https://design.google.com/ . Último ingreso Septiembre 2016.  

   102

 

REFERENCIAS  

[22] Toni Miquel (2013). ¿Qué es Holo? Algo más que una interfaz gráfica, El Android Libre, Junio 2013, http://www.elandroidelibre.com/2013/06/que-es-holo-algo-mas-que-una-interfaz-grafica.html. Último ingreso Septiembre 2016.  [23] Google (2015). Especificación de Eddystone, un formato abierto para beacon by Google. https://github.com/google/eddystone . Último ingreso Septiembre 2016.  [24] Google (2015). Google Developers: Beacons, https://developers.google.com/beacons/ . Último ingreso Septiembre 2016.  [25] Google (2015). Google Developers: Proximity Beacon API, https://developers.google.com/beacons/proximity/guides. Último ingreso Septiembre 2016.  [26] Google (2015). Google Developers: Nearby, https://developers.google.com/nearby/ . Último ingreso Septiembre 2016.  [27] Google (2015). Physical Web, Walk up and use anything, http://google.github.io/physical-web/ . Último ingreso Septiembre 2016.  [28] Lockitron (2016). https://lockitron.com/ . Último ingreso Septiembre 2016. 

[29] Philips (2014). http://www.philips.com/c-m-ho/saeco-espresso/granbaristo-avanti.       Último ingreso Septiembre 2016. 

[30] P&G (2015). http://www.pg.com/es_LATAM/AR/. Último ingreso Septiembre 2016.  [31] A Digital Universe Decade – Are You Ready? (2010). https://gigaom.files.wordpress.com/2010/05/2010-digital-universe-iview_5-4-10.pdf. Último ingreso Septiembre 2016.  [32] PG&E. www.pge.com/. Último ingreso Septiembre 2016.  [33] PG&E, SmartMeter. http://www.pge.com/en/myhome/customerservice/smartmeter/index.page. Último ingreso Septiembre 2016.  [34] Libelium. http://www.libelium.com/products/waspmote/. Último ingreso Septiembre 2016.  [35] Waspmote. http://www.libelium.com/downloads/documentation/waspmote_datasheet.pdf. Último ingreso Septiembre 2016.  [36] Open Source Lion Tracking Collars, GroundLab. http://home.groundlab.cc/lioncollars.html. Último ingreso Septiembre 2016. 

   103

 

REFERENCIAS  

[37] GroundLab. http://home.groundlab.cc. Último ingreso Septiembre 2016.  [38] Assessment of Landslides using Acoustic Real-time Monitoring Systems (ALARMS). http://www.bgs.ac.uk/research/tomography/ALARMS.html. Último ingreso Septiembre 2016.  [39] British Geological Survey. http://www.bgs.ac.uk/home.html. Último ingreso Septiembre 2016.  [40] Smart Structures Inc. http://aii.transportation.org/Documents/EDC/edc-smartpile-introduction.pdf. Último ingreso Septiembre 2016.  [41] en-Gauge, Inc. http://www.engaugeinc.net. Último ingreso Septiembre 2016.  [42] Trips Reddy (2014). 15 Companies from airports to retail already using beacon technology, Nov 2014, https://www.umbel.com/blog/mobile/15-companies-using-beacon-technology/. Último ingreso Septiembre 2016.  [43] Introducing ParkSight™ 2.0 Parking Analytics. http://www.streetline.com/parking-analytics/. Último ingreso Septiembre 2016.  [44] Streetline. http://www.streetline.com. Último ingreso Septiembre 2016.  [45] Bigbelly. http://es.bigbelly.com. Último ingreso Septiembre 2016.  [46] Sistema inteligente para la administración de residuos y materiales reciclables, Bigbelly (2015). http://es.bigbelly.com/solutions/. Último ingreso Septiembre 2016.  [47] Awesense. http://www.awesense.com/#awesense-introduction. Último ingreso Septiembre 2016.  [48] nest. https://nest.com. Último ingreso Septiembre 2016.  [49] Matt Hickman (2013). HarvestGeek: 'Modern Farmer's Almanac' takes guesswork out of gardening. http://www.mnn.com/your-home/organic-farming-gardening/blogs/harvestgeek-modern-farmers-almanac-takes-guesswork-out-of. Último ingreso Septiembre 2016.  [50] Ninja Blocks. https://ninjablocks.com. Último ingreso Septiembre 2016.  [51] Proteus Digital Health. http://www.proteus.com. Último ingreso Septiembre 2016.  [52] Mimo. http://mimobaby.com/. Último ingreso Septiembre 2016.  

   104

 

REFERENCIAS  

[53] Opower. https://opower.com/. Último ingreso Septiembre 2016.  [54] Sensors and sensibilities (2010).  http://www.economist.com/node/17388338. Último ingreso Septiembre 2016.  [55] General Electric. http://www.ge.com/. Último ingreso Septiembre 2016.  [56] Whirlpool. http://www.whirlpool.com/. Último ingreso Septiembre 2016.  [57] Daily Mail Reporter (2010). Google refuses to rule out face recognition technology despite privacy rows. http://www.dailymail.co.uk/sciencetech/article-1280145/Google-facial-recognition-debate-goggles-privacy-controversy.html. Último ingreso Septiembre 2016.  [58] Google Street View. https://www.google.com/maps/streetview/. Último ingreso Septiembre 2016.  [59] Travel Radar. http://travelradar.awwapps.com/. Último ingreso Septiembre 2016.  [60] Launch Here. http://launchhere.awwapps.com/. Último ingreso Septiembre 2016.  [61] FC Barcelona and city of Barcelona develop Smart Espai Barça (2015). http://www.fcbarcelona.com/club/barca-2-0/detail/article/season/2014-2015/el-fc-barcelona-i-la-ciutat-de-barcelona-desenvolupen-l-smart-espai-barca. Último ingreso Septiembre 2016.   [62] The Estimote Team Blog. Reality matters (2015). http://blog.estimote.com/post/132670826675/fc-barcelona-builds-smart-spaces-in-camp-nou-with. Último ingreso Septiembre 2016.  [63] Prophets. http://www.prophets.be/#/work/ibeacon/. Último ingreso Septiembre 2016.  [64] Tulepaland. http://www.fluwelstulpenland.com/about-us/fluwel. Último ingreso Septiembre 2016.  [65] iTunes, aplicación Tulepaland (2015). https://itunes.apple.com/nl/app/tulpenland/id835736097?mt=8. Último ingreso Septiembre 2016.  [66] Apple inc., iOS 9. http://www.apple.com/la/ios/what-is/ . Último ingreso Septiembre 2016.  [67] Apple inc., App Store. www.appstore.com/. Último ingreso Septiembre 2016.  

   105

 

REFERENCIAS  

[68] Apple inc., Swi�. https://developer.apple.com/swi�/ . Último ingreso Septiembre 2016.  [69] Apple inc., Xcode. https://developer.apple.com/xcode/ . Último ingreso Septiembre 2016.  [70] Google, Google Play. https://play.google.com/ . Último ingreso Septiembre 2016.  [71] Google, Developers. http://developer.android.com/intl/es/sdk/index.html. Último ingreso Septiembre 2016.  [72] 1977. Christopher Alexander, Sara Ishikawa, Murray Silverstein, Max Jacobson, Ingrid                       Fiksdahl-King, and Shlomo Angel. A Pattern Language. Oxford University Press, NewYork,                     1997. 

[73] 1994. Design Patterns. Elements of Reusable Object-Oriented So�ware - Erich Gamma,                         Richard Helm, Ralph Johnson, John Vlissides - Addison Wesley (GoF- Gang of Four). Addison                           Wesley.  

[74] Estimote, Estimote SDK for Apple iOS. https://github.com/Estimote/iOS-SDK . Último ingreso Septiembre 2016.  [75] Apple inc, Core Location Framework Reference. https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CoreLocation_Framework/index.html#//apple_ref/doc/uid/TP40007123 . Último ingreso Septiembre 2016.  [76] Google, API Bluetooth Low Energy Android. https://developer.android.com/guide/topics/connectivity/bluetooth-le.html . Último ingreso Septiembre 2016.  [77] Radius Network, http://www.radiusnetworks.com/ .Último ingreso Septiembre 2016.  [78] Google, Google Glass. https://www.google.com/glass/start/ .Último ingreso Septiembre 2016.  [79] Edward Sykes, Stephen Pentland, Saverio Nardi (2015). Context-aware mobile apps using iBeacons: towards smarter interactions, 2015, http://dl.acm.org/citation.cfm?id=2886463. Último ingreso Septiembre 2016.  [80] P. C. Deepesh, Rashmita Rath, Akshay Tiwary, Vikram N. Rao, N. Kanakalata (2016), Experiences with using iBeacons for Indoor Positioning, publicado en: 9th India So�ware Engineering Conference, 2016, http://dl.acm.org/citation.cfm?id=2856654. Último ingreso Septiembre 2016.  

   106

 

REFERENCIAS  

[81] Paul Martin, Bo-Jhang Ho, Nicholas Grupen, Samuel Muñoz, Mani Srivastava (2014), An iBeacon primer for indoor localization: demo abstract, publicado en: The 12th ACM Conference on Embedded Networked Sensor Systems, 2014, http://dl.acm.org/citation.cfm?id=2675028. Último ingreso Septiembre 2016.  [82] Prateek Jain, Sanket Subhash Khanwalkar, Rohit Malhotra, Ajey Dheenrajappa, Gaurav Gupta, Alfred Kobsa (2016), uBeacon: Configuration based Beacon tracking, publicado en: Institute of Electrical and Electronics Engineers, 2016, http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7457066&queryText=beacon&sortType=desc_p_Publication_Year&rowsPerPage=100. Último ingreso Septiembre 2016.  [83] Dojun Byun, Jaeweon Cho, Sang-Jun Moon, Dohy Hong (2016), S-Beacon: Next generation BLE beacon solution for enhanced personalization, publicado en: Institute of Electrical and Electronics Engineers, 2016, http://ieeexplore.ieee.org/xpl/articleDetails.jsp?arnumber=7430566&queryText=beacon&sortType=desc_p_Publication_Year&rowsPerPage=100. Último ingreso Septiembre 2016.        

   107