Ejecución de cliente Java Sofia2 en entornos Linux

En esta entrada se muestra paso a paso cómo descargar y probar el cliente java de Sofia2 en cualquier dispositivo con sistema operativo Linux. Un ejemplo de dispositivo con so Linux es Raspberry Pi.

 

El cliente java de Sofia2 viene con las herramientas necesarias para ser autoexplicativa y comenzar a usarse sin apenas configuración ni conocimientos previos: Un cliente interactivo por linea de comandos y un test suite de Junit configurable.

Preparación del entorno

Las herramientas necesarias para la realización de este tutorial son maven y git. También es necesario que el dispositivo tenga la conexión a internet configurada. Por supuesto es necesario tener instalado Java que ya viene instalado por defecto en sistemas unix

Para comprobar que maven y git están instalados ejecutar los siguientes comandos:

> mvn -version

> git –version

Si alguno de los dos no están instalados en el sistema podemos instalarlo mediante los siguientes comandos (Opcionalmente en el caso de maven se puede seguir este tutorial para una una instalación más ligera).

> sudo apt-get install maven

> sudo apt-get install git

Una vez que el entorno está listo procedemos al siguiente paso.

Descarga y compilación de cliente java

El código cliente de Sofia2 se encuentra alojado de forma libre en github https://github.com/Sofia2. Una vez dentro de la cuenta de Sofia2 navegar al cliente java y copiar la dirección del repositorio master para ejecutar el siguiente comando.

> git clone git@github.com:Sofia2/java-api.git

Una vez descargado el código podemos compilarlo mediante maven.

mvn clean package -Dmaven.test.skip=true

Con el código compilado podemos proceder a ejecutar el cliente java en el dispositivo.

Ejecución de tests unitarios integrados

El api de Sofia2  viene con una tests suite Junit configurada para funcionar directamente contra la plataforma.

Estos tests tienen dos objetivos principales:

  1. Servir de ejemplo de uso del cliente java (api autoexplicativa).
  2. Comprobar de forma rápida la conectividad con Sofia2.

Para ejecutar los tests basta con ejecutar el siguiente comando (previamente se puede configurar el fichero de log4j.properties de tests para el nivel información a visualizar).

mvn test

Es posible configurar los tests unitarios con una ontologia y un thinkp propios ejecutando dos sencillos pasos. Se pueden ver los pasos necesarios para  crear una ontología y un thinkp en el siguiente Link.

  1. Configuración de la sección GENERAL SETTINGS del fichero test.properties.
  2. Colocación de datos de prueba de para la ontología propia en la carpeta fixtures.

Una vez ejecutados estos pasos ya podríamos compilar y volver a ejecutar los tests.

Ejecución de ejemplo interactivo

Adicionalmente en el api de Sofia2 viene incorporado un pequeño  ejemplo inteexractivo  para poder experimentar con Sofia2 mediante linea de comandos UNIX.

Para usar el ejemplo basta con ejecutar el siguiente comando en la consola de UNIX.

> mvn exec:java -Dexec.mainClass=”com.indra.sofia2.ssap.kp.examples.Example”

Una vez ejecutado por linea de comandos unix nos aparecerán las siguientes acciones a ejecutar.

List of kp actions to perform (Type de option and pulse enter):

query
insert
update
delete
quit

Una vez elegida la opción deseada la consola interactiva ofrece la opción de ejecutar la acción de forma nativa (mongoDB es la base de datos de referencia de Sofia2) o sqllike.

En el tercer paso se introduce la sentencia sql o mongo que se desee lanzar contra la plataforma Sofia2. A continuación se listan una serie de ejemplos.

Ejemplo de query tanto en nativo como en sqllike:

nativo -> db.TestSensorTemperatura.find().limit(1)
sql  ->  SELECT * FROM TestSensorTemperatura LIMIT 1;

Operation success with response: [ { “_id” : { “$oid” : “585a4fc9e4b0f6e1f805f2e1”} , “Sensor” : { “geometry” : { “coordinates” : [ 40.512967 , -3.67495] , “type” : “Point”} , “assetId” : “S_Temperatura_00066” , “measure” : 25 , “timestamp” : { “$date” : “2014-04-29T08:24:54.005Z”}}}]

Ejemplo de insert tanto en nativo como sqllike:

nativo -> {“Sensor”:{“geometry”:{“coordinates”:[40.512967,-3.67495],”type”:”Point”},”assetId”:”S_Temperatura_00066″,”measure”:25,”timestamp”:{“$date”:”2014-04-29T08:24:54.005Z”}}}

sql -> insert into TestSensorTemperatura(geometry, assetId, measure, timestamp) values (“{ ‘coordinates’: [ 40.512967, -3.67495 ], ‘type’: ‘Point’ }”, “S_Temperatura_00067”, 15, “{ ‘$date’: ‘2014-04-29T08:24:54.005Z’}”);

Operation success with response: {“_id”:ObjectId(“585a8c35e4b060800da5e8c4”)}

Ejemplo de update tanto en nativo como sqllike:

native -> db.TestSensorTemperatura.update({“Sensor.assetId” : “asset1”}, {$set : {“measure” : 21}}, {multi : true})
sql -> update TestSensorTemperatura set measure = 20 where Sensor.assetId = “S_Temperatura_00067”;

Operation success with response: {“_ids”:[{“_id”:ObjectId(“585a887ae4b060800da5e820”)},{“_id”:ObjectId(“585a8a97e4b060800da5e835”)},{“_id”:ObjectId(“585a8aa6e4b060800da5e837”)},{“_id”:ObjectId(“585a8c35e4b060800da5e8c4”)}]}

En estos ejemplos se utilizan el thinkp y ontología demo. De la misma forma que en el caso de los tests unitarios en posible utilizar ontologías propias configurando el fichero example.properties.

Con estas consultas puedes experimentar y explorar toda la potencia de Sofia2 en cuanto a ingesta y gestión de datos en tiempo real.

Conclusión

Si estas interesado en integrar tus datos en Sofia2 o simplemente buscas adentrarte en el mundo de IoT, aquí tienes un ejemplo con pocos pasos y configuración pero con muchas posibilidades para empezar.

Si ya estás integrado con Sofia2 y necesitas realizar pruebas AdHoc de funcionamiento, el cliente Java puede resultar una buena herramienta interactiva de trabajo.

Ejecución de cliente Java Sofia2 en entornos Linux

Un comentario en “Ejecución de cliente Java Sofia2 en entornos Linux

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