Actualización Versión Community Sofia2

Sofia2 sigue apostando por el compromiso open source, y ha actualizado la versión Community de Sofia2 a la 2.17 estable.

Los usuarios de esta versión pueden actualizarse a esta nueva versión y empezar a trabajar con ella.

Para conocer en detalle las funcionalidades que se han ido incluyendo en la plataforma podemos consultar las releases previas.

Recordemos las características de la versión community:

  • Licencia open-source.
  • Sin coste por uso.
  • Versión base de la Plataforma operativa.
  • No ofrece Consolas Web ni Herramientas avanzadas (Reglas y CEP).
  • Fuentes descargables desde Forja SOFIA2: http://sofia2.org
  • Incluye Guías de Uso y SDK http://sofia2.com

Para tener acceso basta con acceder al formulario de registro: http://sofia2.org/redmine/account/register

Para contactar con soporte basta escribir un email al Usuario genérico Soporte Plataforma Sofia2 supportsofia2@indra.es

Actualización Versión Community Sofia2

Integración capacidades Social Media V1

En la versión 2.14 de Sofia2 se han integrado capacidades Social Media sobre Twitter.

Desde la consola se pueden realizar acciones que suponen un punto de partida a la hora de integrar twitter como fuente de datos en la plataforma.

En esta primera versión se permite realizar lo siguiente:

Toda la información recuperada de este modo se puede almacenar finalmente en ontologías Sofia2, lo que permite analizarlas a posteriori mediantes herramientas analíticas.

Búsqueda de usuarios: podremos acceder a la información propia de cada usuario,

Y finalmente almacenar la búsqueda en una nueva ontología o en una existente:

Cada usuario puede crear sus configuraciones de acceso o usar una configuración genérica, esto permitirá evitar problemas con el consumo del API:

También se pueden hacer búsquedas soportando operadores lógicos:

  • Por defecto la búsqueda aplicará el operador AND sobre los términos introducidos.
  • Búsqueda de un texto exacto al entrecomillarlo: p. ej: “buenos días”.
  • Excluir términos con el operador “-“ Ej: big data -hadoop.
  • OR: combinar resultados de varios términos:

También podremos filtrar la búsqueda especificando un círculo a través de un punto (latitud y longitud) y un radio (Km). Por ejemplo, tráfico en un radio de 50 km del centro de Madrid:

Podremos también buscar en base a la zona las tendencias o Trending Topics:

Como vemos, se trata de un punto de partida que permitirá en un futuro la automatización de obtención de información desde redes sociales, para posteriormente aplicar reglas, lógica y analítica a los datos. Teniendo en cuenta las capacidades de interoperabilidad de la plataforma podremos cruzarlos con otro tipo de fuentes heterogéneas, dando lugar a funcionalidades más complejas (imaginemos por ejemplo el hecho de poder monitorizar el tráfico a partir de sensores e información de redes sociales en ese mismo entorno para identificar accidentes, atascos, etc.).

Integración capacidades Social Media V1

Borrado de registros anteriores a una fecha en BDTR

Cuando haya que borrar registros antiguos en BDTR estas queries os pueden ser útiles.

Buscamos lo que queremos borrar:

db. feedGasolinera.find({‘contextData.timestamp’:{‘$lt’:ISODate(‘2014-11-14T00:00:00.000Z’)}})

Nos aseguramos de que los registros son previos a la fecha con un find y una proyección:

db.feedGasolinera.find({‘contextData.timestamp’:{‘$lt’:ISODate(‘2014-16-14T00:00:00.000Z’)}},{‘contextData.timestamp’:1}).sort({‘contextData.timestamp’: -1}).limit(5)

Ej de salida de una query de este tipo:

Y ya una vez seguros, borramos:

db. feedGasolinera.remove({‘contextData.timestamp’:{‘$lt’:ISODate(‘2014-11-14T00:00:00.000Z’)}})

Borrado de registros anteriores a una fecha en BDTR

Control de luminarias con Sofia2

Otro de los demostradores de la plataforma IoT disponible en el visor geográfico trabaja con los focos y sensores de unos campos de fútbol del ayuntamiento de Rivas:

En este caso la interacción con los focos se realiza a través del API ofrecida por uno de los proveedores del ayuntamiento (LUIX).

Esta demo permite reflejar un ejemplo claro de uso en el que tenemos publicadores y suscriptores de información en un mismo sistema y en el que participan varios elementos de la plataforma:

· Dos tipos de usuario: básico y administrador. Se aplica seguridad en base a la ontología.

  • Dos ontologías: una con la información sensórica (A) y otra para el comandado de los focos (B)
  • Apps Sofia2:
    • Recepción de datos : está a la espera de la llegada de datos desde el ayuntamiento, momento en el cual inserta en la ontología A.
    • App visor: está suscrita a la ontología sensórica, reflejando visualmente los cambios recibidos. Además, realiza inserciones en la ontología de comando cuando un administrador modifica el valor de un foco.
    • App de control: está suscrita a la ontología de comando (B). Cuando recibe una orden comunica con el API del ayuntamiento. En función del resultado insertará el valor correspondiente en la ontología A.

En este diagrama vemos un resumen del funcionamiento:

El usuario básico (sólo lectura) únicamente es capaz de ver el detalle de los focos y sensores de movimiento, mientras que el administrador tendrá acceso al control del nivel de iluminación de cada foco a través de unos sliders. La autenticación del administrador se realiza a través del token de seguridad de la ontología de comandado:

Control de luminarias con Sofia2

Ayuda contextual para usuarios de la plataforma

En la versión 2.9.0 de Sofia2 se ha introducido una nueva página de bienvenida en la consola que sirve como resumen del estado actual de nuestro trabajo con la plataforma.
De un simple vistazo podremos ver y recorrer las ontologías a las que estamos suscritos, los KPs asociados a las mismas y acceder además a sus tokens de seguridad.

Para los nuevos desarrolladores sirve como una pequeña guía que describe los primeros pasos para trabajar con Sofia2, sirviendo de orientación en una primera toma de contacto ágil.

El usuario podrá acceder a más o menos información disponible en función de los pasos ya completados.

A continuación podemos ver cómo un usuario va completando los pasos sugeridos por la plataforma y los datos de sus suscripciones, Kps y tokens se van actualizando:

Partiendo de cero:

Una vez se ha suscrito a una ontología:

Y una vez dado de alta un KP para dicha ontología (por defecto al dar de alta un KP se crea un token ya activo listo para su uso)

La página se completa incluyendo además links a un ejemplo de kp java y otro javascript como punto de partida.

Estos ejemplos están listos para funcionar con unas mínimas modificaciones que consisten en ajustar los datos de la ontología y token con los que se desea trabajar.

Por último se mostrará también desde esta página la información dinámica sobre los mensajes procesados por la instancia Sofia2 InCloud

Ayuda contextual para usuarios de la plataforma

Información sobre mensajes procesados por la instancia SOFIA2 InCloud

A partir de la versión 2.9.0 de Sofia2 se ha incluido una funcionalidad para mostrar los mensajes procesados en tiempo real por la instancia SOFIA2 InCloud:

Esta funcionalidad muestra un ejemplo de uso de plugins de infraestructura en la plataforma. En este caso el funcionamiento es simple: se define un plugin que actúa sobre los mensajes que llegan al SIB, y se define un post-procesado de los mensajes recibidos. Siempre que la respuesta cumpla con las condiciones definidas(p. ej. que no sea un error) se incrementará el número de mensajes procesados almacenado en la BDTR.

Con las herramientas disponibles en Sofia2 hacer esto es tan sencillo como definir una clase que implemente SSAPMessagePluginAsync (en nuestro ejemplo queremos que la ejecución de nuestro plugin sea asíncrona) y definirla como bean de Spring. El post procesado de los mensajes se realizará en la implementación del método postProcess:

El recuento de mensajes procesados es un registro de la BDTR que se puede consultar a partir de un servicio REST expuesto para tal fin. A la hora de mostrar el contador, bastará una llamada ajax que consulte y actualice el contador periódicamente.

Información sobre mensajes procesados por la instancia SOFIA2 InCloud