Este es el quinto post de la serie Dispositivos IoT en Sofia2. Integración y Gestió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
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)
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
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’.
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.
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:
[…] este antiguo post (enlace) puedes seguir las normas para crear Scripts en Sofia2, échale un vistazo para ver dónde se crea […]