Reflexiones sobre IoT por Pivotal

En este post sobre IoT se plantean una serie de cuestiones interesantes….

Desde que significa IoT en función del rol:

A consideraciones sobre por qué IoT requiere una nueva Plataforma: Volumen, Escalado y Velociddad:

· Volume: Managing many things is hard. Managing many things without standard data-models, protocols or device interoperability is untenable.

· Scale: Auto scaling of resources that underpin an IoT platform is important not only to address high variability system loads, but also to expose resource costs and allow control over consumption.

· Speed: Ability to analyze data-streams, enable two-way operations and push updates in a continuous manner are necessary for security and reliability of a platform.

Leer más

Reflexiones sobre IoT por Pivotal

The Internet Of things in Banking

En esta infografía :

Infographic: M2M Reinventing the Banking Industryfrom Verizon Enterprise Solutions

Se muestra como IoT reinventa la Banca.

Resulta especialmente interesante las aplicaciones actuales y las que se prevén en los próximos meses que acometan las empresas financieras:

En todos estos casos de uso la Plataforma Sofia2 puede aportar sus capacidades para simplificar la creación de aplicaciones de por ejemplo Smart Cajeros o incorporación de información social al perfil del cliente del banco.

The Internet Of things in Banking

Dashboards y Gadgets v3.0: Parte 2

En este segundo post de Dashboards y Gadgets 3.0, mostraremos, en primer lugar, el nuevo gadget tabla. Posteriormente, los tipos de datos permitidos por cada gadget en cada campo y para terminar, los dashboards con gadgets interactivos tipo Maestro-Detalle.

Nuevo Gadget Tabla:

El nuevo Gadget tabla, tendrá todas las posibilidades de todos los Gadgets como queries temporizadas, subscripciones a ontologías, queries parametrizadas o transformaciones de los datos. Como características a destacar tenemos:

– Puede contener un número elevado de columnas, que serán añadidas como una serie del mismo

– En dashboards, puede funcionar como gadget maestro de otros gadgets, permitiendo interacción con otros gadgets

– Admisión de datos tipo Boolean

– Ordenación por cada columna

– Actualización en tiempo real de los datos

Tipos de datos soportados por cada Gadget:

A continuación se especifican los diferente datos que pueden recibir los gadgets. No hay que confundir esto con el campo base que se selecciona, sino que hay que entenderlo a nivel de dato ya transformado.

Gadget Área:

Float Integer String Date Boolean Geometry
Eje X Permitido Permitido Permitido Permitido No permitido No permitido
Eje Y Permitido Permitido No permitido No permitido No permitido No permitido

Gadget Columna:

Float Integer String Date Boolean Geometry
Eje X Permitido Permitido Permitido Permitido No permitido No permitido
Eje Y Permitido Permitido No permitido No permitido No permitido No permitido
Eje de Intercambio Permitido Permitido Permitido Permitido No permitido No permitido

Gadget Pie:

Float Integer String Date Boolean Geometry
Categoría No permitido No permitido Permitido No permitido No permitido No permitido
Valor Permitido Permitido No permitido No permitido No permitido No permitido
Eje de Intercambio No permitido No permitido Permitido No permitido No permitido No permitido

Gadget Maps:

Float Integer String Date Boolean Geometry
Campo No permitido No permitido No permitido No permitido No permitido Permitido

Gadget Gauge:

gauge

Float Integer String Date Boolean Geometry
Campo Permitido Permitido No permitido No permitido No permitido No permitido

Gadget Valor Simple:

Float Integer String Date Boolean Geometry
Valor Permitido Permitido Permitido No permitido No permitido No permitido

Gadget Tabla:

Float Integer String Date Boolean Geometry
Columna Permitido Permitido Permitido Permitido Permitido No permitido

Dashboard Interactivo:

Se han añadido mejoras a los actuales dashboards, haciendo posible la interacción básica entre diferentes gadgets en forma de Maestro-Detalle.

Esta interacción, está permitida entre cualquier gadget tabla, que funcionará como maestro de los gadgets tipo columna y tipo pie que se configuren como su detalle.

Cualquier selección de una fila de la tabla, filtrará los datos de sus gadgets detalle por su campo de referencia (el primer campo de la tabla en esa fila). Los gadgets detalle, filtrarán por su campo categoría o eje X, e intercambiarán el mismo a uno nuevo (el configurado como eje de Intercambio en los gadget columna o pie que se quieran configurar como detalle). Todo el proceso se realiza a nivel de dato ya transformado, tanto en la emisión del campo tabla, como en la recepción del mismo, esto nos permite relacionar gadgets de diferentes ontologías, sin tener explícitamente el mismo campo en ambas.

Para establecer los gadgets como detalle, necesitamos configurar el campo “Eje de Intercambio” a un campo de la ontología, con lo que nos permite dos comportamientos:

· Filtrado y exploración a una subcategoría

· Filtrado y mantenimiento de la categoría, en el caso de utilizar el mismo eje de intercambio que de categoría o eje X.

Se permite la combinación de ambos y de varios details del mismo maestro:

Y funcionar en combinación con otros elementos estáticos:

Dashboards y Gadgets v3.0: Parte 2

Dashboards y Gadgets v3.0: Parte 1

En la nueva versión de sofia2, se ha dado un paso más en la creación de Gadgets y Dashboards en la plataforma, haciéndolos más potentes y configurables.

Se ha modificado la interfaz de creación de todos los Gadgets, para hacerla más amigable al usuario y se han incrementado las posibilidades de la misma:

A nivel de nuevas características tenemos:

Transformaciones de dato en tiempo real: Se permiten transformaciones de cada uno de los datos y ejes, esto es, usar pequeños fragmentos de código javascript, con los que poder modificar datos y mostrarlos como queramos, incluso transformar el tipo de dato, o usar funciones anónimas o funciones auxiliares.

Para poder aplicar estas transformaciones, cada dato posee un campo adicional, asociado a su transformación, denominado transformación del dato:

$0 representa el valor actual que llega y se recibe y que puede ser usado en cualquier expresión. Tenemos dos tipos principales de transformaciones según su complejidad:

– Si la transformación es simple y se puede realizar en una sentencia se escribirá directamente, por ejemplo: new Date($0), $0 + ‘€’ o Math.random()*100

– Si la expresión es más compleja, por ejemplo, se necesitan sentencias condicionales, deberá usarse una función anónima para la misma como se muestra a continuación:

function(){

   if($0==’Paco’)

        return true;

    else

    return false;

}

En este caso, el valor devuelto por la función será el enviado al Gadget.

Debemos tener en cuenta, que para cada valor tipo “Date” que tengamos, debemos hacer un new Date($0) del campo concreto, para realizar su transformación, al tipo fecha utilizado en los Gadgets.

Utilización de arrays en los datos: se permite utilizar los campos de tipo array, de forma que se puede acceder a cualquier elemento simple del mismo. Teniendo un array del tipo:

“measures”: [

  {

    “name”: “Coches”,

    “value”: 440,

  },

  {

    “name”: “Aviones”

    “value”: 7,

  },

  {

    “name”: “Trenes”,

    “value”: 16

   }

]

Tenemos dos maneras de conseguir el acceso:

– Directamente al elemento: si queremos acceder a su elemento 0 del array y ver el campo “value” del mismo, lo podemos hacer directamente, a través de la transformación de su dato: $0[0][‘value’]

– Como la posición de los datos puede variar, tenemos la función predefinida arrayFind(array, nameField, valueField, fieldToFind) que busca, en ese tipo de estructura, el campo nameField igual a valueField y en ese elemento del array devuelve el campo fieldToFind. Con el array del ejemplo, si queremos obtener el valor de los aviones: arrayFind($0,’name’,’Aviones’,’value’) que nos devolverá el valor 7

Gadgets paramétricos: en una nueva configuración de los Gadgets en los que, antes de renderizarse, pedirán datos al usuario, que se insertarán en una query previamente fijada:

Se podrá parametrizar toda la parte de filtrado de la query a lanzar, de la siguiente manera:

${“Nombre Label”,”formato”} Siendo formato: date, datetime, number o string, para permitir validaciones en el formulario. Por cada estructura insertada, se generará un campo con el nombre “Nombre Label” para valores de tipo “formato”. Viendo el ejemplo anterior más en detalle, tendremos una query como la siguiente:

select * from ontologiaComprasWeb where contextData.timestamp>${“Inicio Compra”,”datetime”} and contextData.timestamp<${“Fin Compra”,”date”} and ontologiaComprasWeb.Usuario=${“Cliente”,”string”} and ontologiaComprasWeb.Precio>${“Precio Mayor A”,”number”}

En la que al insertar los datos en el formularío:

Obtendremos el resultado de la query haciendo click en el botón “Draw!”, con los parámetros fijados:

Otras nuevas características son: Gadgets Columna multiserie, uso de datos de tipo numérico, integer, string, array, boolean y date en muchos más ejes y Gadgets, nombre en series y categorías y más configuraciones permitidas.

Dashboards y Gadgets v3.0: Parte 1

Vista Capas Plataforma Sofia2 Smart Platform

Donde

  • Sistemas de Captación: los forman tanto las redes sensores como dispositivos, Sistemas IT, RRSS,…
  • Capa de Adquisición: ofrece los mecanismos para la captación de los datos desde los Sistemas de Captación.
  • Capa de Conocimiento ofrece el soporte para el procesado de los datos, la incorporación de valor y la transformación de servicio.
  • Capa de Interoperabilidad facilita la prestación de los servicios
  • Capa de Servicios Inteligentes: Servicios conectados a través de la plataforma y de los APIs provistos.
Vista Capas Plataforma Sofia2 Smart Platform