Вы находитесь на странице: 1из 111

 

Universidad Nacional de San Luis 


Facultad de Ciencias Físico Matemática y Naturales 
 
 
 
 
Tesis para optar a la titulación de postgrado correspondiente a la 
Maestría en Ingeniería de 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 5
2.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 

 
 

 
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 

 
 

 
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 

 
 

 
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 zettabytes1 , cuarenta y cuatro veces más grande que en el año 2009 [31]. 

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 
 
 

 
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 

 
 

 
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  Access Address  PDU  CRC 


(1 byte)  (4 bytes)  (2 a 39 bytes)  (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: 

Es la clase con que se inicia la aplicación. Contiene 


UIViewController 
el botón ‘+’. 

Esta clase permite al usuario ingresar los valores 


AddBeaconTableViewController 
identificadores del beacon: UUID, major y minor. 

Clase que cumple el rol de ManagerController del 


SearchViewController 
patrón Beacon Action Manager. 

Clase que cumple el rol de Beacon del patrón 


Beacon 
Beacon Action Manager. 

Clase que cumple el rol de ActionHandler del patrón 


ActionHandler 
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  Figura 12: Vista para cargar la 
aplicación.  información del beacon. 

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

class   
SearchViewController:    
UIViewController, 
 C
 BCentralManagerDelegate 
 {    
 
    /
 /  v
 ariable  d
 eclaration  
     
var    
beaconToRange   :
  C
 LBeaconRegion! 
     
let    
locationManager:  C
 LLocationManager! 
     
var    
actionHandler   :
  A
 ctionHandler! 
     
var    
centralManager  :
  C
 BCentralManager!   
 
     
override   f
 unc   
viewDidLoad() 
 {
  
super. 
  viewDidLoad() 

       .
 ..  

 / 
/  c
 heck 
 s
 tatus 
 o
 f 
 B
 LE 
 h
 ardware 
                          ( 1) 
centralManager 
 =
    
CBCentralManager 
(delegate: 
  
self,  
                                              q
 ueue: 
  dispatch_get_main_queue 
()) 

59
 
4 APLICACIÓN DEL PATRÓN
 
 

 
// 
   r
 equests  p ermission   t
 o 
 u se 
 l
 ocation  s
 ervices 
          (
 2) 
       l
 ocationManager   =
  C LLocationManager()  
       l
 ocationManager.  requestAlwaysAuthorization  () 
 
// 
   s
 et 
 t
 he  A
 ctionHandler                                   (  3) 
       a
 ctionHandler   =
  A ctionHandler()  
       l
 ocationManager.  delegate    
= a ctionHandler 
 
// 
   s
 et 
 b
 eacons   t o  m
 onitor                                 (  4) 
setBeaconsToMonitor() 
 
// 
   s
 tart  m
 onitoring                                        (  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()   {
  
 
       /
 /  g
 et  t
 he  b
 eacon   i
 d  v
 alues   
let 
    
defaults   =
   NSUserDefaults.standardUserDefaults  () 
let 
    
UUID   =
   NSUUID(  UUIDString: 
 d
 efaults.stringForKey(defaultsKeys.keyUUID)!) 
let 
    
major  =
   UInt16(  defaults.stringForKey(defaultsKeys.keyMajor)!) 
let 
    
minor  =
   UInt16(  defaults.stringForKey(defaultsKeys.keyMinor)!) 
 
        
//  s
 et  t
 he  i
 d  t
 o  r
 ange   
       b
 eaconToRange   =
   CLBeaconRegion ( p
 roximityUUID: 
 U UID!,  
                                               m  ajor: 
 m
 ajor!,  
                                               m  inor: 
 m
 inor!,  
                                          i  dentifier: 
   ) 
"" 

 

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

     
func   
startMonitoring() 
 {
  
       l
 ocationManager. 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
  e
 ventos 
 d
 e  L
 ocalización: 
locationManager(_:didUpdateLocations:) 
locationManager(_:didFailWithError:) 
locationManager(_:didFinishDeferredUpdatesWithError:) 
 
Pausando 
 a
 ctualizaciones  d
 e  L
 ocalización:  
locationManagerDidPauseLocationUpdates(_:) 
locationManagerDidResumeLocationUpdates(_:) 
 
Respondiendo 
 a
  e
 ventos 
 d
 e  H
 eading 
locationManager(_:didUpdateHeading:) 
locationManagerShouldDisplayHeadingCalibration(_:) 
 
Respondiendo 
 a
  e
 ventos 
 d
 e  R
 egiones  
locationManager(_:didEnterRegion:) 
locationManager(_:didExitRegion:) 
locationManager(_:didDetermineState:forRegion:) 
locationManager(_:monitoringDidFailForRegion:withError:) 
locationManager(_:didStartMonitoringForRegion:) 
 
Respondiendo 
 a
  e
 ventos 
 d
 e  A
 lcance,  D istancia: 
locationManager(_:didRangeBeacons:inRegion:) 
locationManager(_:rangingBeaconsDidFailForRegion:withError:) 
 
Respondiendo 
 a
  e
 ventos 
 d
 e  V
 isita: 
locationManager(_:didVisit:) 
 
Respondiendo 
 a
  e
 ventos 
 d
 e  c
 ambios  d
 e  A
 utorización: 
locationManager(_:didChangeAuthorizationStatus:) 
 

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

class   
ActionHandler:   
NSObject,   C
 LLocationManagerDelegate 
 {  
 
     
var    
notifiedOutOfRange  =   
false 
     
var    
notifiedFound 
 =   
false 
     
var   n
 otifiedinRange  =
   
false 

62
 
4 APLICACIÓN DEL PATRÓN
 
 

 
    v
 ar   beaconFound  :  B
 eacon! 
     
let   defaults  =
   
NSUserDefaults.standardUserDefaults  () 
 
     
//  t
 he  u
 ser 
 e ntered  t
 he  s
 pecified  r
 egion.                    (
 1) 
     
func    
locationManager(manager:    
CLLocationManager,  
           d  idEnterRegion   r
 egion:   
CLRegion)   {
  
notifyInRange()  
    }
  
 
    /
 /  t
 he  u
 ser 
 l
 eft  t he 
 s
 pecified  r egion. 
                      ( 2) 
     
func    
locationManager(manager:    
CLLocationManager,  
            d  idExitRegion   r
 egion:   
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  Figura 15: Notificación en 


background cuando la aplicación  background cuando la aplicación 
entra a la región del beacon.  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. 

     
// 
 o ne 
 o r  m
 ore   b
 eacons   a
 re  i n 
 r ange.                         (  3) 
     
func   
locationManager(   m anager:    CLLocationManager,  
          d idRangeBeacons   b eacons:   [
  CLBeacon] 
,  
                  i  nRegion   r egion:    CLBeaconRegion)  {
  
 
if 
   b eacons.count   >
   0 {  
     let   beacon   =  b
 eacons[0] 
             if  b
 eaconFound   = =   
nil   { 
                //  g
 et   t
 he  b
 eacon   f
 ound                             (  4) 
beaconFound   =  B eacon(beaconfound:   b
 eacon)   
    }  
 
           /  / 
 u pdate   t he  u
 ser   i
 nformation                         (  5) 
           N  SNotificationCenter.defaultCenter().postNotificationName  ( 
                                         "  NotificationBeacon"  ,object:   b
 eaconFound) 
 
           /  / 
 b ackground   n
 otifications                            (  6)  
     if  b
 eaconFound.lastSeenBeacon!.  proximity   == 
 .
  Immediate    

        n  otifyIsHere() 
    }   else   i
 f   
beaconFound.lastSeenBeacon!.  proximity    
!= 
 .
  Unknown    

 n otifyInRange() 
           }   
else    

 n otifyOutOfRange() 
    }  

    }
   

 
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 
de  la  clase  SearchViewController.  El  usuario  observará  el  cambio 
NotificationBeacon()   
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   i
 nit( ) {
  
lastSeenBeacon   =
   CLBeacon( ) 
    }
  
 
     
init(  beaconfound:   CLBeacon)  {
  
lastSeenBeacon   =
  b eaconfound 
    }
  

66
 
4 APLICACIÓN DEL PATRÓN
 
 

4.1.2 DIAGRAMAS 

ESCENARIO 1: BLE desactivado 


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

Figura 18: Diagrama de Secuencia BLE desactivado. 

ESCENARIO 2: inicio del escaneo 


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

67
 
4 APLICACIÓN DEL PATRÓN
 
 

Figura 19: Diagrama de Secuencia inicio de escaneo. 

ESCENARIO 3: ingreso a la región en background  


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

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

68
 
4 APLICACIÓN DEL PATRÓN
 
 

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

ESCENARIO 4: cambio de proximidad  


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

En  el  diagrama  se  modela  el  cambio  de proximidad de la aplicación al beacon, donde pasa 


de ser 10 metros a 5 metros. 

69
 
4 APLICACIÓN DEL PATRÓN
 
 

Figura 21: Diagrama de secuencia de cambio de proximidad. 

   

70
 
4 APLICACIÓN DEL PATRÓN
 
 

4.2 AIRPORT APP 


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

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

4.2.1 ESTRUCTURA DE LA APLICACIÓN  


Las clases que componen la aplicación son: 

Esta clase permite al usuario ingresar el número de 


MainActivity 
gate (puerta) que está buscando. 

Clase que cumple el rol de ManagerController del 


FinderActivity 
patrón Beacon Action Manager. 

Clase que cumple el rol de ActionHandler del patrón 


ActionHandler 
Beacon Action Manager. 

Clase que cumple el rol de Beacon del patrón 


BeaconEST 
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 
 c
 lass    
FinderActivity    extends   AppCompatActivity  
                            i  mplements    SensorEventListener   {
  
   
     
private   BeaconManager    
beaconManager  ; 
     
private   List<Region>    regionList    =  
new   ArrayList<Region>(); 
     
private   ActionHandler    
rangingListener  ; 
    .
 .. 
 
    @
 Override 
    p
 rotected   v
 oid    
onCreate(Bundle   s
 avedInstanceState)   {
  
         super .onCreate(savedInstanceState); 
        s
 etContentView(R.layout.  activity_finder  ); 
 
         beaconManager    
=  
new    
BeaconManager(  this 
); 
 
        /
 /  C
 heck   B
 luetooth                                        (  1) 
        S
 ystemRequirementsChecker.  checkWithDefaultDialogs  (t
 his 
); 
 
        /
 /  s
 et  A
 ctionHandler                                      (  2) 
         rangingListener    
=  new    
ActionHandler(  this );  
         beaconManager  .setRangingListener(  rangingListener ); 

73
 
4 APLICACIÓN DEL PATRÓN
 
 

 
         
// 
 s
 et 
 b
 eacons 
 t
 o 
 f
 ind 
                                  (
 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 
de  tipo  ActionHandler   va  a  ser  el  encargado  de  manejar  todos  los 
rangingListener   
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. 

    p
 rivate 
 v
 oid   
setBeaconsToFind(){ 
        R
 egion 
 r
 egion  =
   
new 
  Region( 
"cofeeShop" 
,  

74
 
4 APLICACIÓN DEL PATRÓN
 
 

                                    
"B9407F30‐F5F8‐466E‐AFF9‐25556B57FE6D" 
),  
                                   2
 1382 
,  
                                   6
 2091 
);  
         
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  v
 oid   onResume() 
 {
  
         super .onResume(); 
 
         beaconManager  .connect( new   
BeaconManager.ServiceReadyCallback() 
 {
  
             @Override 
            //  S
 tart  R anging 
                                     (  4) 
            public   v
 oid   
onServiceReady()   {
  
                 for 
( R egion 
 i
 tem  :
   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 
que  se  invoca  cuando  el  dispositivo  se  encuentra  dentro  del rango 
onBeaconsDiscovered   
de los beacons. Determina todos los beacons que se encuentran actualmente en rango. 

public 
 c
 lass   ActionHandler    implements    
BeaconManager.RangingListener{ 
 
     
private   Context    
context ; 
     
public  s
 tatic    
Boolean   
isShowing  ; 
    .
 .. 
 
     
@Override 
     
public  v
 oid   onBeaconsDiscovered(Region   r
 egion, 
 L
 ist<Beacon> 
 l
 ist) 
 {
  
         if 
 (
 !list.isEmpty())   {
  
            B eacon   n
 earestBeacon   =
  l
 ist.get( 0)
 ; 
              // 
 g
 et  t he 
 B
 eacon  f ound 
                             (
 5) 

75
 
4 APLICACIÓN DEL PATRÓN
 
 

            B
 eaconEST   b
 eaconFound   =
   
new 
  BeaconEST(nearestBeacon); 
             
int   section  =
  g etInfoToShow(beaconFound); 
             
//  s
 how  i
 nfo  t
 o  t
 he 
 u
 ser 
                            ( 6) 
             
if  (
 ActionHandler.  isShowing 
  
==  f
 alse 
) {  
                F inderActivity.  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 
 c
 lass   BeaconEST   {  
    
public 
  
Beacon    
beaconInfo  ; 
    
private 
  String   name ; 
 
    
public 
  
BeaconEST(Beacon   b
 eacon){ 
        
this .b
 eaconInfo    = b eacon; 
        
this .n
 ame   
=  " " ;
  
   }
  
 
    
public 
  
BeaconEST(String   u
 uid,   
int 
  major, 
  
int   
minor){ 
       U
 UID 
 n ewUUID   =
   U UID.  fromString (uuid); 
       M
 acAddress   m
 ac   =
  M acAddress.  fromString  ("
 " 
); 
        
this .b
 eaconInfo    =  new   
Beacon(newUUID,  m
 ac,  m
 ajor, 
 m
 inor, 
  0,
   
0) ; 
        
this .n
 ame   
=  " " ;
  
   }
  

 
 

4.2.2 DIAGRAMAS 

ESCENARIO 1: BLE desactivado 


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

Figura 26: Diagrama de secuencia BLE desactivado. 

77
 
4 APLICACIÓN DEL PATRÓN
 
 

ESCENARIO 2: inicio del escaneo 


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

Figura 27: Diagrama de secuencia inicio de escaneo. 

ESCENARIO 3: ingreso a la región 


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

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

78
 
4 APLICACIÓN DEL PATRÓN
 
 

Figura  2
  8:  D
  iagrama  d
  e  s  ecuencia  i ngreso  a
   l a  r  egion  d
  e  u
  n  b
  eacon. 
 

   

79
 
4 APLICACIÓN DEL PATRÓN
 
 

4.3 ZOO APP 


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

4.3.1 ESTRUCTURA DE LA APLICACIÓN  


Las clases que componen la aplicación son: 

Esta  clase  permite  al  usuario  seleccionar  los 


ZooCollectionViewController  animales  de  los  cuales  le  interesa  recibir 
información durante su visita. 

Clase  que  cumple  el  rol  de  ManagerController  del 


SearchViewController 
patrón Beacon Action Manager. 

Clase  que  cumple  el  rol  de  Beacon  del  patrón 


Beacon 
Beacon Action Manager. 

Clase  que  cumple  el  rol  de ActionHandler del patrón 


ActionHandler 
Beacon Action Manager. 

Clase  que  contiene  variables  globales  de  la 


Constants 
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 
de  la  clase  SearchViewController  que  los  identifica,  y  se  accede  a dicha 
selectedAnimals   
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,  C
 BCentralManagerDelegate 
 {    
 
    /
 /  v
 ariable  d
 eclaration  
     
var    
beaconsToRange   :  [
 CLBeaconRegion]! 
     
let    
locationManager:  C LLocationManager! 
     
var    
actionHandler   :
  A ctionHandler! 
     
var    
centralManager  :
  C BCentralManager!   
     
var   s
 electedAnimals  :
  [ String]! 
  
 
     
override   f
 unc   
viewDidLoad()  {
  
super. 
  viewDidLoad() 

       .
 ..  

 / 
/  c
 heck 
 s
 tatus 
 o
 f 
 B
 LE 
 h
 ardware 
                          ( 1) 
centralManager 
 =
    
CBCentralManager 
(delegate: 
  
self,  
                                              q
 ueue: 
  dispatch_get_main_queue 
()) 
 

82
 
4 APLICACIÓN DEL PATRÓN
 
 

// 
   r
 equests  p ermission   t
 o 
 u se 
 l
 ocation  s
 ervices 
          (
 2) 
       l
 ocationManager   =
  C LLocationManager()  
       l
 ocationManager.  requestAlwaysAuthorization  () 
 
// 
   s
 et 
 t
 he  A
 ctionHandler                                   (  3) 
       a
 ctionHandler   =
  A ctionHandler()  
       l
 ocationManager.  delegate    
= a ctionHandler 
 
// 
   s
 et 
 b
 eacons   t o  m
 onitor                                 (  4) 
setBeaconsToMonitor() 
 
// 
   s
 tart  m
 onitoring                                        (  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  a
 nimalBeacon: 
 B eacon 
 
        
for  a
 nimalKey 
  
in 
 s
 electedAnimals   {
  
    a nimalBeacon 
 =   
Beacon (animalKey: 
 a
 nimalKey) 
    b eaconsToRange.append(animalBeacon) 


 

En  (5) el método startMonitoring() inicia el escaneo de todos los beacons  almacenados 


previamente en el array beaconsToRange. 

     
func   
startMonitoring() 
 {
  
        
for  i
 tem 
  
in 
 b
 eaconsToRange  {
  
           l ocationManager. 
startMonitoringForRegion (item) 
      l ocationManager. 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,  C
 LLocationManagerDelegate 
 {  
     
var    
beaconFound 
 :
  B eacon! 

84
 
4 APLICACIÓN DEL PATRÓN
 
 

 
     
// 
 o
 ne  o r 
 m
 ore   b
 eacons   a re 
 i n  r
 ange.                         ( 1) 
     
func   
locationManager(   m
 anager:    CLLocationManager,  
          d idRangeBeacons   b
 eacons:   [
  CLBeacon] ,  
                  i  nRegion   r
 egion:    CLBeaconRegion)  {  
 
for 
   b
 eacon    in  b
 eacons   {
  
    if 
 b
 eacon.  proximity   = = 
 .  
Immediate  {  
              /  /   g
 et  t he 
 b
 eacon   f
 ound                             ( 2)  
              b  eaconFound   =
   Beacon  (proximityUUID:   b
 eacon.proximityUUID,  
                                           m  ajor:  b
 eacon.major.unsignedShortValue,  
                                           m  inor:  b
 eacon.minor.unsignedShortValue,  
                                      i  dentifier:  r
 egion.identifier) 
 
              b  eaconFound.lastSeenBeacon   =
  b
 eacon 
              /  /   u
 pdate   t
 he  u ser  i nformation                     ( 3) 
                NSNotificationCenter.defaultCenter().postNotificationName  ( 
                                          "NotificationBeacon" , o
 bject:  b
 eaconFound) 
 


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   i
 nit( proximityUUID:    
NSUUID,  m
 ajor:    
UInt16,   m
 inor:   
UInt16,  
                                                             i  dentifier:   
String) 
 {  
super.init( 
  proximityUUID:   p
 roximityUUID,   m
 ajor:   m
 ajor,  m
 inor: 
 m
 inor,  
                                                         i  dentifier:  i
 dentifier) 
    }
  
 
     
init(  animalKey:    
String)  {
  
if 
   a
 nimalKey   =
 =  a
 nimalsKeys.keyFish   {
   
           s  uper.init  (proximityUUID:  F ishID,  m ajor:  F ishMajor,  
                              m  inor: 
 F
 ishMinor,   i
 dentifier:   a
 nimalKey) 
 

else  i
 f 
  animalKey  =
 = 
 a nimalsKeys.keyBird   {  
     super.init  (proximityUUID:  B irdID,   m
 ajor:   B
 irdMajor,  
                              m  inor: 
 B
 irdMinor,   i
 dentifier:   a
 nimalKey) 
 

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: 

Clase que cumple el rol de ManagerController del 


MainActivity 
patrón Beacon Action Manager.  

Clase que cumple el rol de ActionHandler del patrón 


ActionHandler 
Beacon Action Manager. 

Clase que cumple el rol de Beacon del patrón 


Beacon 
Beacon Action Manager. 

Clase que contiene variables globales de la 


Util 
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 
 c
 lass    
MainActivity    extends    
AppCompatActivity   {
  
  
    p
 rivate   BluetoothAdapter    mBLEAdapter  ; 
    p
 rivate   ActionHandler    mScanCallback  ; 
    p
 rivate   BluetoothLeScanner    
mBluetoothLeScanner  ; 
    p
 rivate   List<Beacon>    regionList    
=  new   
ArrayList<Beacon>(); 
    .
 .. 
 
    @
 Override 
    p
 rotected   v
 oid   
onCreate(Bundle   s
 avedInstanceState)   {
  
         super .onCreate(savedInstanceState); 
        s
 etContentView(R.layout.  activity_main  ); 
 
        /
 /  s
 et  A
 ctionHandler                                      (  1) 
        m
 BLEAdapter    = B
 luetoothAdapter.  getDefaultAdapter  (); 
         mBluetoothLeScanner    
=  mBLEAdapter  .getBluetoothLeScanner(); 
        m
 ScanCallback    
=  
new   
ActionHandler(  this 
); 
 
         // 
 C
 heck   B
 luetooth                                        (  2) 
         if 
 (
 ! mBLEAdapter  .isEnabled()   )
  {  
            s howAlert()  
        }
  

90
 
4 APLICACIÓN DEL PATRÓN
 
 

 
         
// 
 s
 et 
 b
 eacons 
 t
 o 
 f
 ind 
                                  (
 3)   
        s
 etBeaconsToScan(); 
        .
 .. 
  
    }

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 
 c
 omo se observa a continuación. 

    p
 rivate 
 v oid   
setBeaconsToScan(){ 
        B
 eacon  b
 eaconBread  =
   new 
  Beacon(Util. 
breadUUID 
,  
21769 ,  
32384 ) ;
  
        B
 eacon  b
 eaconCookie  =   
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   v oid 
  onResume()   {
  
          super  .onResume(); 
        s canHandler  .post(  scanRunable  ); 
     

 
     
//  s
 tart   s
 can 
     
final    
Runnable    scanRunable    = (
 )  {
  
        mBluetoothLeScanner  .startScan(setScanFilter(),  
                                        s  etScanSettings(),    
                                        m  ScanCallback  ); 
 
        scanHandler  .postDelayed(  stopscanRunable  ,1 000 ); 
     
}; 
 
    /
 /  s
 top  s can 
     
final    
Runnable    stopscanRunable    = ( ) 
 {  
        mBluetoothLeScanner  .stopScan(  mScanCallback  ); 
        scanHandler  .postDelayed(  scanRunable  ,  
1000  ); 
     
}; 
 
    /
 /  s
 et  f
 ilters 
     
private   L
 ist<ScanFilter>   s etScanFilter()   {  
       L ist<ScanFilter>   f
 ilters   =   new  A
 rrayList<ScanFilter>(); 
 
       f or(  B eacon  i
 tem   :
  r egionList   )
  {  
           U  UID   c
 urrentUUID   =
  U UID.fromString(item.getUuid()); 
           P  arcelUuid   p
 arcelableUUID   =
    new  P
 arcelUuid(currentUUID); 
           S  canFilter   f
 ilter   =  n
 ew  S canFilter.Builder() 
                    .  setServiceUuid(parcelableUUID) 
                    .  build(); 
 
           f  ilters.add(filter); 
       }  
        return   f ilters; 
    }
  
 
    /
 /  s
 et  s
 ettings 
     
private   S
 canSettings   s etScanSettings()   {  
        S canSettings.Builder   m Builder   =   new  S canSettings.Builder(); 
        m Builder.setReportDelay(  0)
 ; 

92
 
4 APLICACIÓN DEL PATRÓN
 
 

        m
 Builder.setScanMode(ScanSettings.SCAN_MODE_LOW_POWER); 
        S
 canSettings 
 m
 ScanSettings 
 =
  m
 Builder.build(); 
         
return 
 m
 ScanSettings; 
    }
  
 

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 
 c
 lass    
ActionHandler    
extends    
ScanCallback{ 
 
    p
 ublic  v
 oid    onScanResult(  int 
  callbackType, 
 S
 canResult  r
 esult) 
 {
  
       /
 / 
 g et  t
 he   B
 eacon   f ound                              (  4)  
       B
 eacon   d
 evice   =   
new   
Beacon(result); 
 
       /
 / 
 c alculate   t
 he  p roximity                           (  5)  
        
if  (
 Objects.  equals  (device.getProximity(),    "Immediate" 
)) 
 {
  
             if 
 ( ActionHandler.  isShowing   
== 
 f
 alse 
) {
  
        
//  s
 how   i
 nfo   t
 o  t
 he  u
 ser                             (  6) 
               M  ainActivity.  showPromotion (Util. 
getSection (device),   
context 
); 
           }  
       }
  
   }
  

En  (4) se crea un objeto de tipo Beacon 


    c
 on 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. 

    p
 ublic  s
 tatic  d ouble   calucateDistance(  int 
  rssi, 
  int 
  TxPower){ 
       d
 ouble   
ratio   =
  ( ( float 
)rssi)   /
  T
 xPower; 
        
if (ratio  <
   1.0 ){ 
            return    
Math. pow (ratio,   
10 ); 
       }
  
        
return    0.89976    
* M ath. 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.   

  p
 ublic 
 c
 lass  B
 eacon  {
  
 
   p
 rivate 
  String 
  
uuid ; 
   p
 rivate 
  String 
  
name ; 
   p
 rivate 
 i
 nt   
major ; 
   p
 rivate 
 i
 nt   
minor ; 
   p
 rivate 
 i
 nt   
rssi ; 
   p
 rivate 
 d
 ouble   distance 

   p
 rivate 
  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 : 

 
   /
 * 
  B
 eacon   a
 dvertisement   p
 acket: 
  |
  0 x02  |
  0 x15      |   ‐
  ‐  ‐  ‐  ‐  ‐
  ‐  ‐  ‐
  ‐  ‐  ‐
  ‐  ‐  ‐  ‐  |  ‐
  ‐  ‐  |
  ‐  ‐  ‐  |
  ‐  ‐
  ‐  ‐
 | 
  |
   I D 
  |  D ata  L en 
 |     u  uid                           |   m
 ajor   |
  m inor   |
 Tx  p
 ower| 
  0
       1            2                                  1  8       2  0 
      2  2 
       2  4 
   
  e
 xample   :  
  0
 2  |
  1
 5  |
  E 2  0
 A  3
 9  F
 4  7
 3  F 5  4
 B 
 C 4 
 A 1 
 2 F 
 1 7 
 D 1  A
 D  0
 7  A 9 
 6 1 
 |  0
 0  0
 0  |  0
 0  0
 0  |
  C
 8 
  *
 / 
    public   Beacon(ScanResult   r
 esult){ 
        Beacon   d evice    
= n ull; 
 
       b yte  []  s
 canRecord   =
  r esult.getScanRecord().getBytes(); 
       i nt   s
 tartByte   =
  2 ; 
       i nt   txPower   =  0
 ; 
       b oolean   p atternFound   =
   false; 
 
       w hile    (startByte   < =   
5)  {
  
           /  /Identifies   a
 n  i Beacon   &
 &  I
 dentifies   c orrect   d ata  l
 ength 
           i  f 
  ((( int ) s canRecord[startByte   +
   2]
  &   0xff  ) = = 
  0x02   
&&  
                     (( 
int  ) s canRecord[startByte   +   3]
  &   0xff ) = = 
  0x15  ) {
   
                 patternFound   =   
true; 
               b  reak; 
           }   
           s  tartByte++; 
       }  
 
 
       i f   (patternFound)   {
  
             //Convert   t
 o  h ex  S
 tring 
             byte  [] 
  
uuidBytes   =   
new  b
 yte [1 6 ]; 
             System.  arraycopy  (scanRecord,   s
 tartByte   +
   4,   
uuidBytes,    
0,   
16 ); 
             String   h
 exString   =
  U til.  bytesToHex  (uuidBytes); 
 
             //UUID 
             this.  uuid   
=    hexString.substring(  0,
 8 )
  +  " ‐"  +
  
                   h  exString.substring(  8,
 1 2 
) +  " ‐"  +  
                   h  exString.substring(  12 ,1
 6 ) +  "
 ‐"   +
  
                   h  exString.substring  (1 6 ,2
 0 ) +  " ‐"  +
  
                   h  exString.substring(  20 ,3
 2 ); 
 
             //Major   v alue 
             this.  major   =  (scanRecord[startByte+  20 ] &
   0xff  ) *
   0x100   +
   
                         (  scanRecord[startByte+  21 ] &   0xff ); 
 
             //Minor   v alue 
             this.  minor   = ( scanRecord[startByte+  22 ]  
&  0xff  ) *
   0x100   +
   
                          (  scanRecord[startByte+  23 
] &   0xff ); 

95
 
4 APLICACIÓN DEL PATRÓN
 
 

 
            
// 
 P
 ower 
            
txPower   
=  scanRecord[startByte+    
24 
]; 
 
            
// 
 R
 SSI 
            
this. rssi   
=  
result.getRssi(); 
 
            
// 
 D
 istance 
            
this. distance    
=  Util.calucateDistance( 
rssi 
,txPower); 
 
            
//Name 
            
this .n
 ame   
=  
"" ; 
 
        

   }
    

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.ht
ml . Ú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/b
r-edr. Último ingreso Septiembre 2016. 
 
[9] Bluetooth®. What is Bluetooth Technology?, Low Energy, 
http://www.bluetooth.com/what-is-bluetooth-technology/bluetooth-technology-basics/lo
w-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#.Vp7qa1MrK
Rs. Ú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-thing
s-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.h
tml. Ú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-f
armers-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-barcelo
na-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-n
ou-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/CoreLoc
ation_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&s
ortType=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&s
ortType=desc_p_Publication_Year&rowsPerPage=100. Último ingreso Septiembre 2016. 
 
 
  
 
 
 

 
 
 
107

Вам также может понравиться