Los posibles casos de uso y modelos de negocio para la baliza, que permite la interacción del usuario según la ubicación, incluso dentro de edificios, son objeto de un intenso debate. La publicidad y los descuentos en tiendas, los pagos móviles, la navegación, el transporte público, la localización en edificios públicos y museos, y la domótica son solo la punta del iceberg. Y, por supuesto, la omnipresente recopilación de datos, ahora nueva y con información precisa de la ubicación. Antes de profundizar en la tecnología iBeacon, también mencionaremos el SDK de iBeacon en este artículo.
¿A qué se debe tanto revuelo?
El protocolo iBeacon desarrollado por Apple, basado en Bluetooth de baja energía, es compatible con diversos dispositivos. Este artículo explica los iBeacons y el Bluetooth de baja energía y utiliza el ejemplo del desarrollo de una aplicación Android para listas de la compra según la ubicación para mostrar la interacción de una aplicación con iBeacons según la ubicación. La implementación se basa en el SDK iBeacon de MOKOSmart.
iBeacon, Bluetooth 4.0, BLE, SMART. ¿Qué?
La tecnología básica de iBeacon es Bluetooth. Bluetooth Low Energy (BLE), también conocido como la etiqueta de marketing Bluetooth Smart, se ha incluido en la versión 4.0 del estándar Bluetooth. BLE no es retrocompatible con versiones anteriores llamadas Bluetooth Classic. Bluetooth 4.0 especifica que los dispositivos compatibles con el estándar deben implementar una o ambas variantes, es decir, Low Energy o Classic.
BLE está implementado en casi todos los smartphones actuales, como el iPhone 4+ y el Samsung Galaxy 3+. Un iPhone puede funcionar tanto como receptor de señales iBeacon como, a diferencia de Android, como emisor . Android incluye controladores BLE a partir de la versión 18 de la API, es decir, Android 4.3. Cabe mencionar que los ordenadores actuales también son compatibles con BLE. Sin embargo, en Windows, los controladores solo están disponibles a partir de Windows 8, y desde mediados de 2011, BLE está disponible en ordenadores Apple.
BLE continúa brindando soporte a una variedad de dispositivos periféricos como monitores de frecuencia cardíaca y helicópteros de juguete, termómetros, equipos de fitness y cepillos de dientes, sí, cepillos de dientes y zapatillas deportivas.
Un aspecto interesante en relación con los iBeacons es el sensor
Tag de Texas Instruments, que además de funcionar como iBeacon, también mide temperatura, humedad, presión y aceleración. El Sensor Tag también incluye un giroscopio, un magnetómetro y dos botones. Es el dispositivo ideal para controlar presentaciones remotamente, a la vez que transmite y muestra la humedad y la temperatura de las manos del orador. Creo que mi próximo proyecto de arenero será una alfombra para el miedo escénico. Puedes encontrar una lista detallada de dispositivos en el sitio web oficial de Bluetooth.
Listo para el GATT
El modelo de comunicación que utilizan los dispositivos para intercambiar datos se denomina GATT (Perfil de Atributo Genérico). GATT define los roles del cliente y del servidor. El cliente solicita datos del servidor a través de servicios. Un servicio agrupa varios pares clave-valor atómicos, denominados características. Tanto los servicios como las características se identifican mediante UUID y pueden contener descripciones adicionales. Los servicios y sus características se catalogan en forma de perfiles; la especificación define una amplia gama de ellos, procedentes de los ámbitos de la salud, el deporte y el fitness, y, en nuestro caso, la detección de proximidad. Los perfiles individuales, sus servicios y características se pueden encontrar en el portal para desarrolladores de Bluetooth, en la sección "Especificaciones GATT".

Llegar a la baliza
¿Qué son los iBeacons? iBeacon es una tecnología muy sencilla (y una marca registrada de Apple) que permite la interacción con aplicaciones según la ubicación. Un iBeacon emite una señal que puede ser recibida por dispositivos compatibles con BLE y procesada por las aplicaciones instaladas. La señal contiene la identificación del iBeacon y la intensidad de la señal. Por lo tanto, los iBeacons, contrariamente a afirmaciones inexactas de la prensa, no pueden entregar contenido ni rastrear el comportamiento del usuario. Esto es responsabilidad de las aplicaciones receptoras y, por lo tanto, de los desarrolladores.
iBeacon en la vida real
Las implementaciones a mayor escala de iBeacons en Alemania probablemente tardarán mucho en llegar, pero existen ejemplos en EE. UU. y Países Bajos. Por ejemplo, la Major League Baseball ha equipado 28 estadios con iBeacons y los utiliza, entre otras cosas, para el registro en la aplicación de la MLB "At the Ballpark".
En la Casa Rubens de Amberes se ha instalado una vitrina que ofrece a los visitantes información de fondo como radiografías de pinturas y juegos de geocaching.
El mejor ejemplo en términos de tamaño proviene de la propia Apple. Más de 250 tiendas Apple han sido equipadas con iBeacons. En combinación con la app de la Apple Store, se envían mensajes según la ubicación a los compradores que se encuentran en la tienda. Sin embargo, las posibles interacciones actualmente parecen ser bastante limitadas: las primeras reseñas solo reportan dos mensajes diferentes (y bastante genéricos) que habrían recibido. No se ofrecieron ofertas especiales ni información específica sobre productos cercanos.
Funcionalidad
El SDK de iBeacon no utiliza un perfil BLE independiente, sino paquetes de publicidad Bluetooth (paquetes de difusión) que se utilizan para detectar dispositivos Bluetooth. Si le interesa la estructura exacta del paquete, puede consultarla, por ejemplo, en el blog de Adam Warski.
Este paquete se envía a intervalos regulares configurables mediante GATT. Contiene el UUID de la baliza, que suele estar preconfigurado por el fabricante. Por lo tanto, todas las balizas MOKOSmart envían el mismo UUID. Los ID principales y secundarios también se utilizan para identificar las balizas individuales. Los ID principales pueden representar, por ejemplo, una sucursal de una tienda o un restaurante de una cadena de franquicias, mientras que los ID secundarios pueden representar un estante o una mesa.
Además, la intensidad de la señal está incluida en el paquete publicitario, lo que permite medir la distancia entre el receptor y la baliza. Sin embargo, no se puede esperar una alta precisión, ya que la señal puede verse obstruida por obstáculos como muebles o personas.
El SDK de IBeacon ofrece dos conceptos para la interacción de una aplicación con esta información: medición de distancia y monitorización regional. Al medir la distancia, se determina la distancia a la baliza. Debido a la imprecisión mencionada, esto se realiza en solo tres etapas: «Inmediata» es una distancia de unos pocos centímetros, «Cerca» es una distancia de unos pocos metros y «Lejos» es una distancia de más de diez metros. La medición de distancia solo es posible si la aplicación receptora está activa.
Esto no es necesario para la monitorización regional. En este modo, también se puede notificar a una aplicación inactiva al entrar o salir de una región definida por una o más balizas. Actualmente, se está poniendo de manifiesto el atractivo de esta tecnología para la publicidad y el comercio minorista. Además, para la mayoría de las balizas, la intensidad y el intervalo de transmisión se pueden configurar para optimizar la duración de la batería según las condiciones locales.
"La mayoría de las balizas" implica que hay más de un fabricante de iBeacons en el mercado. De hecho, hay bastantes: MOKOSmart, Kontakt.io, Gelo, Estimote y Gimbal. Además del hardware, estos fabricantes también ofrecen el servicio iBeacon SDK y soluciones en la nube para la gestión de balizas. Los aficionados pueden configurar transmisores iBeacon ellos mismos con relativa facilidad usando Raspberry Pi o Arduino.
Lista de parpadeos
Supongamos la siguiente situación para el ejemplo de implementación: El desarrollador está en el supermercado el sábado por la mañana. Niños hambrientos esperan en casa y por la tarde hay una venta de pasteles en el colegio. Solo entonces empieza realmente el fin de semana. Así que hay buenas razones para darse prisa. Desafortunadamente, la lista de la compra es larga y no se adapta a la distribución del supermercado. Si el supermercado estuviera equipado con iBeacons en los diferentes departamentos, una aplicación de lista de la compra podría resaltar las entradas adecuadas y reducir significativamente el nivel de estrés del desarrollador (por supuesto, completamente ficticio).
Dado que nuestra aplicación necesita comunicarse con Bluetooth, primero necesitamos las autorizaciones BLUETOOTH y BLUETOOTH_ADMIN en el manifiesto de Android. Para poder usar el servicio que ofrece la API de Estimote para interactuar con iBeacons, también debemos darlo a conocer y guardar la API descargada en nuestro directorio libs/.
Nuestro prototipo consta de una lista simple y predefinida, con regiones predefinidas (es decir, departamentos de nuestro supermercado). Cada entrada de la lista sabe a qué región está asignada. En nuestro ejemplo, solo asignamos una baliza a cada región. También es posible combinar varias balizas en una sola región. La actividad principal reconoce la región actual y envía esta información a un adaptador, que se encarga de resaltar las entradas de la lista. Además, añadimos la opción de seleccionar la región activa sin balizas para que nuestra interfaz de usuario sea testeable sin hardware adicional.
En el método "on Create" de la actividad, instanciamos un Beacon Manager de MOKOSmart para nuestra aplicación. Usamos un receptor para la monitorización de la región, informando a nuestro adaptador sobre la región actual y definiendo el intervalo de escaneo de la baliza. En el ejemplo, definimos que se debe escanear un segundo y luego esperar 250 ms. Estos valores se eligen de forma bastante agresiva para obtener resultados rápidos en las pruebas. En realidad, el difícil equilibrio entre la capacidad de respuesta y la duración de la batería es crucial. En este prototipo, también completamos nuestra lista de la compra con valores ficticios. Iniciamos o detenemos la monitorización en el método "on() Start" o "onStop()" de la actividad principal.
La lista de artículos
El adaptador se implementa como un derivado de android.widget.Array Adapter y anula el método getView(), que se llama para cada línea que se muestra. El título del elemento se escribe en la primera línea de la reseña definida en el diseño, y en la segunda, la región asignada.
Como se puede ver en el Listado 1, la región introducida se transfiere al adaptador mediante la llamada "Entered Region()" del MonitoringListener, que está asignado a nuestro BeaconManager: item list Adapter. segregation (region). Al llamar a getView(), se comprueba si la región de la entrada en la línea coincide con la región actual. De ser así, se colorea el fondo de la línea. Como alternativa, también se pueden colocar las entradas de la zona actual al principio ordenando la lista.
El código de la aplicación es claro; recibir señales iBeacon y gestionarlas en la app no requiere mucha implementación. Los conceptos de alcance y monitorización de iBeacon están mapeados en el SDK iBeacon de MOKOSmart para que su uso sea intuitivo. El código fuente completo de la app está disponible en GitHub.
Conclusión y perspectiva
Vimos que interactuar con iBeacons mediante el SDK iBeacon de MOKOSmart es sencillo. Por lo tanto, no preveo grandes obstáculos en la tecnología de implementación, sino más bien en el despliegue de las balizas y el ajuste de la potencia de transmisión. Estos parámetros tienen un impacto directo en la capacidad de respuesta de la aplicación cuando cambia la ubicación. En cualquier caso, el equilibrio debería ser complejo.
Para un uso particularmente interesante, por ejemplo, en el ámbito de la domótica, considero la combinación de iBeacons con sensores, como el Sensor Tag de Texas Instruments mencionado anteriormente. Estimote también lanzará al mercado balizas móviles con sensores de movimiento y temperatura mediante Estimote Stickers. Las primeras versiones preliminares para desarrolladores debían entregarse a finales de octubre de 2014, pero no se enviaron kits a finales de ese año.
Queda por ver si el área de aplicación de "Navegación en interiores" puede mapearse robustamente con esta tecnología. Debido a la susceptibilidad de la señal Bluetooth a interferencias, sería necesaria una iluminación intensa con señales iBeacon del área correspondiente y cálculos de posición mediante triangulación con planos de la sala. MOKOSmart (SDK iBeacon para Navegación en Interiores) y otros fabricantes como LabWerk ofrecen soluciones adecuadas, pero el autor desconoce informes prácticos.
Al desarrollar una aplicación que interactúe con iBeacons, también deben considerarse aspectos de seguridad y protección de datos. Debido a la simplicidad de la señal, iBeacon es susceptible a la suplantación de identidad, algo que no debe olvidarse durante el desarrollo. Datos como la ubicación actual y el perfil de movimiento que se pueden recopilar según el comportamiento del usuario también requieren una alta protección.







