Proyecto DAM 2017: Internet of Things

En el módulo de proyecto del ciclo de Desarrollo de Aplicaciones Multiplataforma hemos comenzado a explorar las posibilidades del Internet de las cosas.

Partiendo de los datos recogidos vía wifi por un sensor de temperatura y humedad (montado y programado por los propios alumnos) han desarrollado el control ambiental de una habitación, utilizando un enchufe inteligente para encender o apagar un calefactor simulado y mostrando la información recopilada en un sitio web.

Balizas de Kontakt.io

Las balizas que me dejó Jon tienen una pega: están asociadas a la cuenta de kontakt.io de quien las ha comprado y no tenía opción a modificar nada en ellas. Esta tarde hemos conseguido transferírmelas y ahora las puedo manipular.

Después de ponerles pilas nuevas y actualizar el firmware, este es el panorama:

La qEAq es una baliza estanca (IP68) y para cambiarle la pila habría que romperla. Esperaremos a que se apague.

Para futuras referencias, los valores que emiten estas balizas son:

IDUUIDmajorminor
TPk4f7826da6-4fa2-4e98-8024-bc5b71e0893e5838733802
Y3ddf7826da6-4fa2-4e98-8024-bc5b71e0893e2166636076
hbRpf7826da6-4fa2-4e98-8024-bc5b71e0893e2366325598
qEAqf7826da6-4fa2-4e98-8024-bc5b71e0893e2180217694

También les he sacado fotos mientras les cambiaba la pila:

Ya solo queda hacer algo útil con ellas.

¿Cómo funcionan los iBeacon?

Las balizas iBeacon son un sistema diseñado para la localización en interiores.

El problema

Cuando estamos dentro de un edificio, el sistema GPS de nuestro smartphone no tiene visibilidad de los satélites de posicionamiento y resulta complicado ubicarlo. Además, el GPS tiene un error de varios metros en el mejor de los casos, lo que no nos permite ser lo suficientemente precisos intentando ubicar a una persona dentro de una habitación, por ejemplo.

La solución

Para solucionarlo se utilizan balizas Bluetooth que emiten constantemente una serie de identificadores que permiten que nuestro móvil las identifique y mida la potencia de señal que nos llega desde ellas. Sabiendo qué baliza es y la distancia a la que estamos de ella, podemos deducir nuestra posición en el edificio.

Tal como se explica en este documento de Apple, las balizas emiten unos valores predefinidos:

CampoLongitudDescripción
UUID16 bytesIdentificador único de la aplicación o el proveedor de la baliza.
major2 bytesRegión de la baliza.
minor2 bytesSubdivisión de la región.

El identificador completo de una baliza será UUID/major/minor y podemos utilizarlo como queramos. Por ejemplo, podríamos tener un UUID correspondiente a Egibide, el valor major podría representar el campus y el minor un aula concreta.

Convirtiendo un iPhone en baliza

Partiendo de estos tutoriales sobre como crear un emisor y un receptor, he creado una aplicación de ejemplo que convierte al iPhone en una baliza y en un receptor, mostrando los parámetros que se emiten y reciben.

El código fuente está disponible en este repositorio de GitHub.