Dispositivos IoT en Sofia2. Integración y Gestión (III. Conectando con el dispositivo)

Este es el tercer post de la serie Dispositivos IoT en Sofia2. Integración y Gestión:

 

Parte I. Introducción

Parte II. Creación de usuario y ontología

 

Este post cubrirá la parte encargada de interconectar el dispositivo IoT en cuestión con la platatorma Sofia2. La actividad se dividirá en dos pasos, uno a cada lado de la comunicación.

En primer lugar comenzaremos con la definición del ThinKP en la plataforma Sofia2. Para ello hay que pulsar sobre el tercer icono del menú de comandos de la izquierda de la pantalla, y seleccionar Mis ThinKPs.

 

menu-thinkp

 

En la parte derecha de la siguiente pantalla parecerá el botón de creación de un nuevo ThinKP.

 

nuevo-thinkp

 

Tras pulsar el botón se desplegará el cuadro de creación del nuevo ThinKP. La creación es muy sencilla y tan solo requiere la introducción de un identificador y una breve descripción.

 

creacion-thinkp

 

Además será necesario asociar al menos una ontología asociada al ThinKP. En este caso tan solo se accederá a la ontología que creamos en los apartados anteriores, demoDispositivos_RTFrame, por lo que habría que seleccionarla y pulsar el botón de creación. Con esto quedaría tal y como se muestra en la siguiente captura.

 

consultar-thinkp

 

 

Pulsando en la etiqueta de Mis Tokens, se pueden ver los tokens asociados a los ThinKP. Este token será el que se utilice en el dispositivo para establecer la conexión con Sofia2. Al final de la línea se puede ver la hora de la última conexión para este ThinKP

 

thinkp-token.png

 

Tras finalizar la definición del ThinKP, quedaría listo para que distintas instancias del mismo pudieran interactuar con la plataforma. En esta demostración, se utilizará una instancia de ThinKP en el dispositivo que posee el rol de Gateway entre la placa de sensores y la plataforma Sofia2, el smartphone. Utilizando una instancia de ThinKP, se habilitará la inserción, lectura y en definitiva uso de las capacidades de Sofia2 desde el dispositivo Android.

En la siguiente captura, se muestra parte del código de la aplicación que corre en el smartphone Android. En el código se puede ver como simplemente bastaría con introducir los valores de los parámetros asociados al ThinKP recién creado en Sofia2.

 

declaracion-instancia-thinkp

 

En esta demostración se enviarán los datos de sensores hacia la plataforma, utilizando el protocolo REST que otorga una gran simplicidad a la inserción de datos utilizando operaciones POST. En la siguiente captura, se muestra un extracto del método de envío de tramas a Sofia2, en donde se produce el mensaje de JOIN para abrir una sesión en Sofia2, realizando un POST que utiliza los parámetros de la instancia de ThinKP asociada.

 

envio-thinkp

 

Con esto se obtendría un conector con Sofia2, a través del cual se pueden introducir datos en la ontología asociada siendo en este caso demoDispositivos_RTFrame. En cuanto a la toma de datos, en esta demostración se conecta el smartphone con el dispositivo SensorTag a través de BLE (Bluetooth Low Energy). Las características de los servicios disponibles para esta placa en concreto se pueden encontrar en la web asociada de Texas Instruments (http://processors.wiki.ti.com/index.php/CC2650_SensorTag_User’s_Guide).

La captura de datos del dispositivo SensorTag se puede estructurar en 3 bloques principales, reflejados en el siguiente diagrama.

 

estados-captura-datos

 

En la fase de SCAN, basta con utilizar el API de BLE de Android. En este ejemplo en concreto se ha desarrollado la aplicación para que sea soportada desde la versión KitKat de Android hasta las actuales. Para el escaneo se utiliza la llamada del sistema onLeScan, que se ejecuta cada vez que una nueva MAC de un dispositivo BLE ha sido detectada por el smartphone. En esta aplicación en concreto, simplemente se filtra la dirección del SensorTag y se lanza un Runnable para conectar con el dispositivo.

 

ble-scan

 

Para iniciar/pausar el escáner basta con llamar a las funciones startLeScan/stopLeScan, mostradas en la figura, pasándoles la referencia del callback de escaneo definido anteriormente.

 

ble-runnable

 

Una vez se establece la conexión con el equipo, se pasa a la fase de ENABLE, donde hay que activar los sensores que se deseen monitorizar, siguiendo las directrices de la wiki de SensorTag.

El servidor GATT del SensorTag presenta un servicio para cada sensor de los que monta, y que a su vez constan de 3 características principales:

 

  • Configuración: Sirve para encender/apagar el sensor
  • Datos: Característica donde se almacena el valor capturado por el sensor
  • Periodo: Característica que almacena el valor de la resolución de lectura del sensor.

 

Si se desea recibir notificaciones cuando varíen los datos de la característica de datos, habrá que activarlas siguiendo las indicaciones, y la aplicación recibirá un callback con el nuevo valor.

En esta demostración se utilizan los sensores de temperatura a través de IR (con capacidad de leer temperatura ambiente, y temperatura de un objeto a corta distancia) y el de movimiento (con capacidad de leer datos de acelerómetro, giróscopo y magnetómetro). En siguiente captura, se presenta un extracto de la información necesaria para interactuar con el sensor. En la fase de ENABLE, habría que escribir ‘0x01’ en la característica de configuración del equipo, mientras que en la fase FETCH, se puede o bien leer directamente la característica de datos, o activar las notificaciones periódicas (usado en el proyecto).

 

tabla-gatt-ir

 

Con los datos de sensores obtenidos, bastará con encapsularlos en base a la ontología creada, por ejemplo conformando un String como el de la siguiente captura. En este ejemplo en concreto, se reporta también el código IMEI del dispositivo móvil a modo de indicador, y se añade la localización por GPS del smartphone para geo-localizar las medidas.

 

construccion-trama-android

 

 

Dispositivos IoT en Sofia2. Integración y Gestión (III. Conectando con el dispositivo)

2 comentarios en “Dispositivos IoT en Sofia2. Integración y Gestión (III. Conectando con el dispositivo)

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s