Dispositivos IoT en Sofia2. Integración y Gestión (V. Jugando con los datos)

Este es el quinto 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

Parte III. Conectando con el dispositivo

Parte IV. Visualización de datos

 

Continuando en la línea del tutorial, si en los apartados anteriores veíamos simplemente como representarlos, tal cual o bajo alguna transformación, de diversas maneras según el uso del dato, en este apartado vamos a configurar una regla, que se ejecutará por cada dato recibido, y vamos a configurar un API para ofrecer una interfaz de acceso a los datos de una manera controlada.

Configurando reglas en tiempo real

 

En el contexto de nuestra prueba, que consiste en recibir datos de los sensores configurados en el SensorTag, vamos a controlar que uno de los valores no excede de un valor, y en caso de que esto ocurra, mandaremos un SMS al teléfono del administrador.

Para ello, vamos crear una regla de ontología, que se ejecutará por cada dato que se inserte en nuestra ontología demoDispositivos_RTFrame. Esta opción la podemos encontrar en el menú Reglas, submenú Wizard de Creación de Reglas

 

creacion-scripts

 

Una vez seleccionados los campos de nombre, timeout (valor obligatorio), Tipo de regla (Ontología), ontología a la que queremos asociar la ejecución del código (en nuestro caso, demoDispositivos_RTFrame), y lenguaje (en nuestro ejemplo seleccionaremos Groovy), podemos comenzar a introducir el código.

 

Para facilitar la estructura del código, localizaremos la condición de la regla en la sección IF, que en caso de devolver un true, continuará ejecutando la sección escrita en la pestaña THEN, y en caso opuesto, ejecutará la sección codificada en la pestaña ELSE. La pestaña ERROR contendrá el código para la gestión de los errores de ejecución del script.

 

En nuestro caso, codificaremos las secciones IF y THEN.

 

En la sección IF (podéis ver el código en la imagen anterior), se importan las librerías a utilizar, se declaran las variables de instancia de nuestro ThinKp, y su token, cargamos la ontología en la variable ontologyJson, y evaluamos el valor de humedad (si es superior a 30, la evaluación devolverá un true, y el script continuará ejecutando el código de la pestaña THEN)

 

if-script

 

En la sección THEN utilizaremos un proveedor de SMS para enviar un mensaje indicando la alerta del dispositivo. A través de una conexión httpGET

 

then-script

 

Así de simple. Una vez guardado y activado el script, éste se ejecutará por cada dato insertado o modificado en la ontología.

Si vas  a jugar con scripting en Sofia2, te interesará saber los siguientes trucos:

  • Con el cursor en la sección de edición de scripts, pulsa F11 para conseguir que se amplíe a toda la pantalla y así tendrás más espacio para escribir.
  • Para verificar si la ejecución del script ha sido correcta, o detalles de cualquier error de ejecución, puedes ir al menú Herramientas, submenú visualización de estado de procesos, y verás toda la información necesaria para poner en marcha tu script.

 

Publicando APIs de acceso a los datos

 

Ahora vamos a definir interfaces sobre los datos que estamos gestionando. Para ello, una de las opciones disponibles es la configuración de servicios REST a través del API Manager de Sofia2, que nos permitirá definir operaciones de lectura, escritura (POST), actualización (PUT), borrado (DELETE) búsqueda básica o búsquedas avanzadas (GET).

Para crear un conjunto de operaciones sobre la ontología demoDispositivos_RTFrame que estamos usando en este ejemplo, accederemos al menú ‘Mis APIS’, opción ‘Crear API’.

 

creacion-apis

 

Por defecto, el formulario propone la configuración de un API externa. En nuestro ejemplo, desmarcaremos esta opción, para poder seleccionar la ontología demoDispositivos_RTFrame en el combo, y esta acción nos propondrá un nombre para el API (demoDispositivos_RTFramees, que podremos actualizar a lo que prefiramos)

Para habilitar cada una de las operaciones disponibles (GET, POST, PUT, DELETE…), solo tendremos que seleccionarlas en el listado, y añadirle una descripción. En nuestro caso, haremos un ejemplo sencillo de la operación CUSTOM QUERY.

 

custom-query

 

Donde la invocación al método ‘ultimoDato’, lanzará la query:

db.demoDispositivos_RTFrame.find().sort({\’demoDispositivos_RTFrame.date\’:1}).sort({\’contextData.timestamp\’:-1})

 

Devolviendo el último dato insertado en la ontología.

Para información más detallada de todas las posibilidades del API Manager en Sofia2, os recomentamos que visitéis los siguientes post del Blog:

 

Dispositivos IoT en Sofia2. Integración y Gestión (V. Jugando con los datos)

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