Patrón de Diseño Beacon Action Manager para comunicar ... Boccardo - Informe de Tesis.pdfTesis...
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
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
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