IoT Data Models: Iniciativas y Sofia2 Data Model

¿Qué es un Data Model?

Un Data Model representa la estructura de tus datos y relaciones, por tanto organiza los elementos y estandariza como se relacionan unos con otros.

¿Por qué utilizar un Data Model en el ámbito IoT?

Los Data Models son fundamentales en el ámbito IoT donde tratamos con assets físicos, medidas, dispositivos, procesos, personas,… y el nuestro IoT Data Model debe ser capaz de modelar todos estos conceptos.

Un Data Model nos da una representación uniforme de todos los elementos de nuestro sistema, esto tienen numerosos beneficios:

  • Reuso: la capacidad de modelar componentes que luego podré reusar es una práctica estándar que permite ahorrar en costes
  • Flexibilidad: una vez creado el modelo, este permite que sea fácil actualizar, modificar o eliminar elementos del modelo sin necesidad de rehacer el sistema
  • Escalabilidad: simplifica el clonado y modificación de dispositivos que son similares o se comportan de la misma forma que otros ya testados.
  • Interoperabilidad: usar un Data Model que se base en estándares (JSON, XML,…) simplifica que este Data Model pueda usarse en aplicaciones futuras de forma sencilla
  • Colaboración: Un Data Model nos permite predefinir links, relaciones, acciones entre componentes, permitiendo que esto se defina cuando se está creando el modelo de modo que diferentes equipos puedan trabajar en partes
  • Independencia de la Plataforma: un Data Model permite una integración transparente con otros sistemas. Un modelo correctamente formado hará más sencillo crear aplicaciones como analítica sobre los datos

Iniciativas de estandarización de un Data Model en IoT

NOTA: No hemos considerado los protocolos de comunicación como MQTT-SN, LWM2M o CoAP, aunque en algunos casos hay ciertos solapes puestos estos protocolos pueden llevar embebido un Data Model.

 

En el mundo IoT existen varias propuestas para intentar estandarizar un Data Model único, aunque la realidad es que ninguna de ellas tiene una penetración en el mercado suficiente como para decantarse de forma unívoca por ella.

A continuación se incluye una tabla con información relevante sobre algunas de estas iniciativas:

  Descripción Organiz Formato Versión
SensorML http://www.opengeospatial.org/standards/sensorml

Sensor Model Language pretende definir semánticamente prceoss y componentes relacionados con las medidas, con el objetivo de conseguir interoperabilidad

OGC XML +XSD 2.0

2014

AMON https://amee.github.io/AMON/

Formato para definir datos de dispositivos

AMEE JSON 3.1

2012

SensorThings http://www.opengeospatial.org/standards/sensorthings

Forma abierta y unificada de conectar dispositivos, datos y aplicaciones.

OGC JSON +

OData

1.0

2016

GSMA IoT Big Data Armonized Data Model https://www.gsma.com/iot/wp-content/uploads/2016/11/CLP.26-v1.0.pdf

Definición de entidades de uso común en IoT y Big Data creando modelos harmonizados en ámbitos Agricultura, Automoción, Environment, Industria, Smart City y Smart Home

GSMA JSON +schema.org 1.0

2016

FIWARE Data Model https://www.fiware.org/data-models/

Adaptación de GSMA Data Model sustituyendo schema.org para definición de Data Modelo por JSON-Schema para simplificar su uso

FIWARE JSON +

JSON-Schema

1.0

2017

¿Qué tienen en común estas iniciativas?

El grueso de estas iniciativas (sobre todo las más actuales) usan JSON como formato de intercambio.

Respecto a JSON podemos decir:

  • Es un formato de intercambio ligero, en la actualidad se ha convertido en el estándar de intercambio sustituyendo a XML en la mayoría de los escenarios

a2.jpg

  • Es el formato usado “para todo” por los grandes en el mundo Web: Google, Amazon,…
  • Es el formato por defecto de la “API Economy” con la que por ejemplo los bancos y organizaciones ofrecen sus datos
  • Es un formato que se usa en las modernas aplicaciones Web y móviles por ser mucho más ligero que XML
  • Es un formato ligero, adecuado para dispositivos IoT

Para definir la estructura de un JSON (por ejemplo que atributos son obligatorios o el tipo de datos) existe JSON-Schema (el equivalente a XML-Schema), aunque en la actualidad no es de uso obligatorio ni está ampliamente estandarizado y existen otras iniciativas.

Sobre JSON y JSON-Schema y por debajo de estándares como los que mencionábamos tenemos otros formatos y definiciones como OData o schema.org, pero tampoco tienen una penetración masiva.

Sofia2 Data Model

Ontologías Sofia2

En Sofia2 a la Entidad del Data Model usado (Sofia2 Data Model) la denominamos Ontologías.

Las Ontologías Sofia2 permiten modelar desde conceptos sencillos como una medida a conceptos complejos como una organización.

Las Ontologías en Sofia2 se definen en JSON+JSON Schema.

Origen de las Ontologías Sofia2

El concepto de Ontología viene del proyecto europeo I+D SOFIA del que se origina Sofia2, que usaba como Data Model Ontologías RDF/OWL conforme los principios de la Web semántica.

Cuando en 2013 Indra considera evolucionar SOFIA para crear una plataforma empresarial (Sofia2) que pueda usarse en proyectos productivos y complejos se realiza un análisis y pruebas empíricas y se concluye que la tecnología subyacente a las ontologías tradicionales modeladas en OWL no escala conforme a las necesidades de los proyectos IoT y Big Data.

Tras considerar diversas opciones se considera que JSON+JSON Schema es la mejor propuesta de presente y futuro.

Conceptos del Sofia2 Data Model

El concepto clave del Sofia2 Data Model es la Ontología, como ya hemos dicho, pero existen otros conceptos importantes, como el Template y la Instancia de la Ontología.

  Template Ontología Instancia Ontología
Representa Plantilla, bien creada por un administrador, bien creada conforme a un estándar concreto (AMON, FIWARE Data Model) que permite que las Ontologías se creen de Entidad que representa un concepto sobre el que trabaja la Plataforma. Es un registro concreto de la Entidad que define la Ontología
Ejemplos Plantilla definiendo los atributos de Calidad medioambiental conforme el FIWARE Data Model

-Pla

Calidad Medioambiental (obtenida de un dispositivo)

-Previsión metereológica (obtenida por un algoritmo)

-Calidad medioambiental obtenida en una hora concreta en un punto concreto

-Previsión para una región y mes concreto

Formato JSON-Schema JSON-Schema

(soporta GeoJSON, OData)

JSON

(GeoJSON)

Dónde están -No se almacenan, son una definición Independiente del motor de persistencia elegido: en un modelo relacional representan una tabla, en una BD NoSQL tipo documental una colección de documentos,,… Independiente del motor de persistencia elegido: en un modelo relacional representan un registro, en una BD NoSQL tipo documental un documento concreto,….
Más info Soportado por completo estándares AMON y FIWARE Data Model Soportan versionado

Soportan consultas geográficas

 

 Sofia2 Data Model en el Control Panel de Sofia2

Template

El concepto de Template representa una Plantilla sobre la que luego podrán crearse las Entidades.

Por tanto sólo se permite a los usuarios con rol ADMINISTRADOR crear estas Plantillas:

a1

En la Plataforma sólo tienen permiso para crear Templates o Plantillas, como puede verse en la imagen:

Las Plantillas tienen asociadas una o varias categorías que me permiten categorizarlas y buscar por estas.

Una Plantilla se representa por un JSON-Schema:

a3.jpg

Ontología

La Ontología es el concepto clave del Sofia2 Data Model y también del funcionamiento completo de la plataforma, ya que sobre estas se desencadenan el resto de procesos:

  • Reglas: se aplican ante la llegada de una instancia de ontología (o bien planificadas) y permite acceder a los atributos de las ontologías para accionar en base a esta
  • Dashboards: se construyen bien representando en tiempo real las instancias que van llegando a la plataforma bien a través de una consulta a estas
  • Analítica: los modelos ML típicamente se realizan sobre las ontologías almacenadas en la infraestructura Big Data de la plataforma (BDH)

Los usuarios Sofia2 con rol COLABORADOR pueden crear Ontologías, existen diversos mecanismos de crear Ontologías, los principales son:

  • Creación Paso a Paso: me permite crear Ontologías indicándole los atributos que componen la ontología, el tipo de datos de cada uno y si son obligatorios. Es la opción ideal para ontologías sencillas (equivalentes a una Tabla)
  • Creación mediante JSON-Schema: en este caso crearemos la Ontología bien definiendo el JSON-Schema que representa mi entidad, bien partiendo de un template ya creado.

Si seleccionamos la creación vía Ontología entonces me pedirá que seleccione una de las categorías:

a4.jpg

Y una vez seleccionada una de ellas (por ejemplo GSMA) me dará la opción de seleccionar una de las Plantillas:

a5

Soporta además:

La creación de la Ontología a partir de un Schema XML (XSD).

La creación de la Ontología a través de un diagrama UML que se crea en el propio Panel de Control

  • Creación desde CSV o Excel: esta opción es muy útil cuando tenemos un fichero con datos con los que quiero hacer una carga inicial en la plataforma. La Plataforma me irá guiando y solicitando la información que necesita hasta generar de forma automática el JSON-Schema que representa los datos pasados:

q1

  • Creación desde JSON/XML: equivalente a la creación desde Excel en este caso podré subir una JSON o XML para que la Plataforma cree la Ontología correspondiente.
  • Creación Ontología Tipo KPI: en este caso lo que estamos haciendo es crear una Ontología que se calcula en base a cálculos sobre otras ontologías
  • Creación Ontología Tipo TimeSeries: el concepto de Time Series se refiere a datos de tipo Serie Temporal, la plataforma soporta la creación de estos modelos de forma sencilla: 

    Instancia de Ontología

    Representa una instanciación de una ontología, típicamente en un momento concreto y posición concreta.

    La Plataforma ofrece diversas herramientas para acceder a las instancias, la más usadas por el desarrollador será la Consola BDTR y BDH que permite a través de un wizard generar consultas sobre las ontologías:

q3.jpg

 

 

 

Desde la herramienta puedo visualizar los datos de la Ontología (instancias) en formato nativo de la Plataforma, esto es en JSON:

q3.jpg

Pero también puedo representar los datos en formato TABLA e incluso exportarlos a formato CSV, Excel o XML.

 

 

IoT Data Models: Iniciativas y Sofia2 Data Model

Nueva Pantalla de Inicio del Control Panel

A partir de esta Release, cuando un usuario con rol colaborador accede a la plataforma, puede ver un grafo que representa su “Universo Sofia”. Es decir, puede ver las Ontologías, ThinKPs, Dashboards y Gadgets, Reglas, Proyectos etc.. que ha creado en la plataforma. En el caso de no tener aún ningun componente creado en la platafoma, se mostrará un grafo como el siguiente:

grafosincomp.png

Seguir leyendo “Nueva Pantalla de Inicio del Control Panel”

Nueva Pantalla de Inicio del Control Panel

IDC Technology Spotlight: The Power of the Platform in Smart Cities

La lectura de este spotlight de IDC:

me ha hecho recordar los retos a los que nos enfrentamos cada vez que nuestra Plataforma Sofia2 a través de su personalización Indra Sofia2 Smart City Platform se implanta en una ciudad.

El autor explica y justifica la importancia de una Plataforma Smart City en el contexto de una ciudad inteligente:

La misión de una Smart City es la transformación digital enfocada a conseguir mejorar el desarrollo económico, la sostenibilidad y la operación de la ciudad y la mejorar de la calidad de vida de los residentes.

Las tecnologías emergentes son fundamentales para conseguir estos resultados, concretamente las ciudades inteligentes deben aprovechar los datos de los dispositivos, redes, infraestructura, aplicaciones para desarrollar nuevos conocimientos y nuevos productos y servicios.

Las plataformas Smart Cities son un mecanismo clave para integrar tecnologías, habilitar el desarrollo rápido de nuevas aplicaciones y crear un ecosistema conectado.

Qué es una Plataforma Smart City

Una plataforma Smart City tiene como propósito obtener mejoras a nivel ambiental, social y financiero para la ciudad.

Típicamente estas plataformas son Plataformas IoT evolucionadas y con mayor sofisticación para cumplir con los desafíos de una ciudad.

Estas plataformas aún se encuentran en una fase inicial de despliegue en organizaciones gubernamentales.

Simplificando, podríamos decir que una Plataforma Smart City es una solución que conecta dispositivos, y recogen, combinan y gestionan datos de los diferentes dominios y proveedores de servicios e la ciudad para suministrar una vista unificada de la ciudad. Esta visión holística ofrece nuevas perspectivas a los departamentos de la ciudad e incluso a terceras partes y proveen gestión y control mejorado de estos departamentos además de un mayor conocimiento de las necesidades de nuevos productos y servicios en la ciudad.

Además de esta funcionalidad básica estas plataformas se utilizan para desarrollar rápidamente nuevas soluciones, ya sea dentro de la organización o a través de un ecosistema de proveedores tales como especialistas verticales y proveedores locales. Este es un aspecto fundamental de las plataformas Smart City ya que la variedad de sistemas legacy y SCADA en funcionamiento en los diferentes departamentos y la variedad de silos como sistemas de transporte, agua, energía son barreras que hay que resolver para conseguir convertir estos silos en un ecosistema integrado e inteligente de soluciones.

Como vemos, las plataformas Smart City cumplen muchas tareas. Los datos de sensores y dispositivos son abrumadores, debido a su volumen, métodos de conectividad, formato de datos y frecuencia. La capacidad de manejar estos datos no es nativa a las plataformas tradicionales TI, la mejor forma de estandarizar y hacer frente a todos los datos, de conectar billones de objetos no conectados es tener una plataforma Smart City con un software robusto, capaz de escalar y dar el rendimiento necesario para capturar y analizar diversas fuentes de datos y formatos.

Además la plataforma debe ser flexible para permitir una integración relativamente fácil con otras aplicaciones empresariales y estar totalmente integrado con el resto de la infraestructura de TI.

Componentes de una Plataforma Smart City

Aunque la arquitectura de una plataforma Smart City varía entre vendedores existen un conjunto de componentes core de un sistema de este tipo:

· Gestión de Dispositivos: que permita que un endpoint envíe y reciba datos, peor también la provisión de endpoints, configuración remota, monitorización de datos, actualización de software, reporte de errores,…

· Gestión de conectividad: asegurando flujos de datos desde el edge hacia el cloud, todo esto gestionado y asegurado. La comunicación suele ser IP con comunicación bidireccional entre los endpoints y la plataforma por protocolos como MQTT y REST. Para despliegues basados en conectividad móvil varios vendedores ofrecen gestión de SIMs, incluído el billing. Son típicos los partnerships entre plataformas IoT y plataformas M2M para conseguir una gestión completa de la conectividad.

· Gestión del dato: es la característica más importante de las plataofrmas Smart City. Los datos son procesados y analizados a través de un “motor de reglas” que extrae datos relevantes en función de unos parámetros o reglas de negocio. Algunas plataformas ofrecen herramientas de analítica avanzada que permiten mapear datos contra un modelo predictivo. Estas capacidades a través de Machine Learning y herramientas de analítica predictiva son cada vez más importantes, aunque no sea una característica de las plataformas IoT actuales.

· Herramientas de visualización y cuadros de mando: que se pueden personalizar con la disponibilidad de widgets, pueden generar informesresúmenes de los datos IoT, pueden activar eventos y enviar notificaciones a los usuarios finales.

· Habilitadores para desarrollar aplicaciones: se soportan a través de APIs y herramientas y permite que terceros, como desarrolladores de aplicaciones, integradores de sistemas, proveedores de SaaS puedan interactuar con la plataforma. Actualmente pocos proveedores proporcionar herramientas para el desarrollo rápido de aplicaciones como parte de su plataforma.

¿Cómo puede ayudar una plataforma Smart City a resolver los grandes desafíos urbanos?

Las ciudades de todo el mundo se enfrentan a los mismos desafíos debido al crecimiento y envejecimiento de las poblaciones, a la creciente preocupación por el cambio climático y las innovaciones tecnológicas que han cambiando las expectativas de los ciudadanos de servicios gubernamentales personalizados y móviles.

Abordar estos desafíos se hace más difícil por cuestiones como el envejecimiento de las infraestructuras físicas, limitaciones de presupuesto, aumento del consumo de agua y energía, nuevas regulaciones de sostenibilidad.

Parece imposible que una plataforma Smart City pueda abordar estos complejos desafíos, pero de hecho una plataforma Smart City ayuda a ubicar los servicios de la ciudad en un contexto transformador más amplio.

Si entendemos una Smart City como un Sistema de Sistemas, lo fundamental es el ecosistema, donde los sistemas están interconectados y un sistema impacta al resto: por ejemplo si la red eléctrica se cae, se reduce el suministro de auga o se cortan las carreteras, el efecto afecta a toda una zona urbana y puede paralizar las operaciones en empresas y escuelas, afectar a la seguridad,… A la inversa, si estos sistemas están coordinados proactivamente los beneficios afectan a toda la ciudad. Las capacidades de las Plataformas Smart City para simular comportamientos y desplegar aplicaciones en la plataforma permite crear nuevos servicios muy rápidamente como aplicaciones móviles para turistas, o farolas que pueden disparar cámaras de vídeo en caso de emergencia.

En este contexto, el éxito de las plataformas Smart City depende en gran medida de que atraigan y nutran a desarrolladores de aplicaciones, integradores y sistemas y otras compañías IT para construir soluciones de valor añadido y diferenciales sobre la plataforma. La apertura de la plataforma es un eje fundamental para que el modelo colaborativo funcione. Las Plataformas deben ofrecer APIS y herramientas abiertas y extensibles y usar estándares de la industria.

Aproximaciones: Enfoque táctico vs estratégico

Al diseñar un enfoque de Plataforma Smart City la interoperabilidad entre sistema debe ser una prioridad estratégica.

Los enfoques para el despliegue de la plataforma van desde los más tácticos (usar la plataforma para la implementación de soluciones puntuales) a los más estratégicos (comenzando con pequeños proyectos selectos como componentes de un sistema holístico que está siendo diseñado para impulsar los resultados de toda la ciudad).

Las ciudades a menudo comienzan con un enfoque táctico porque es más barato en el corto plazo y soluciona rápidamente un problema específico. Las soluciones resultantes dejan poca oportunidad para reutilizar los componentes para otras aplicaciones y producen una plataforma de silos con datos no integrados, lo que puede provocar mayores costos de transmisión de datos, almacenamiento y administración, sin capacidad para reutilizar código y compartir esfuerzos de desarrollo a través de soluciones.

Un enfoque estratégico considera los distintos proyectos como parte de un sistema unificado en desarrollo y despliega la Plataforma para uso en proyectos, departamentos, sistemas y ofertas de terceros. El código se comparte para casos de uso común, los recursos de desarrollo de software se centran en la creación de alto valor añadido y la lógica empresarial de aplicaciones y las soluciones están diseñadas para aprovechar las inversiones de TI existentes, además permite un prototipado más rápido y la implementación de soluciones a escala.

Leer más

IDC Technology Spotlight: The Power of the Platform in Smart Cities

Gartner Report: Use Open Source to Jump-Start IoT Projects and Make IoT Vendor Decisions

En este nuevo informe Gartner:

Peter Havart-Simkin nos cuenta cómo el Open-Source IoT puede ayudarnos a abordar los nuevos retos que plantea IoT.

Y recomienda a los líderes técnicos de proyectos IoT entre otras, adoptar productos IoT de código abierto para impulsar el desarrollo de soluciones IoT y evaluar su uso en la producción IoT sistemas comerciales.

Siguiendo el modelo de referencia que usa Gartner para soluciones de negocio (Reference Model for IoT Business Solutions) Peter enumera algunas soluciones open-source en cada una de las capas.

Es un orgullo para nosotros aparecer como una de las IoT Platfom Hub open-source, ya que desde el arranque de nuestra plataforma hemos apostado por el open-source, tanto desde las piezas sobre las que construimos la plataforma como a la hora de ofrecer una versión open-source de la plataforma (Sofia2 Community Edition) y un entorno Cloud sin coste ni limitaciones (Sofia2 CloudLab).

Entre las piezas open-source sobre las que construimos la plataforma tenemos:

  • Moquette Broker como Broker MQTT
  • Spring y todo su ecosistema como framework de desarrollo principal de la plataforma (IoT Broker,…
  • JQuery, Thymeleaf, AngularJS, Bootstrap como tecnologías para construir el Control Panel
  • Hazelcast como DataGrid en memoria
  • Node-red como motor de flujos
  • Siddhi CEP como motor CEP
  • MongoDB, CouchDB, ElasticSearch, HBase, HIVE, Impala,… como motores de persistencia y consulta
  • Apache Zeppelin como motor de nuestros Notebooks
  • StreamSets como motor de DataFlow
  • Quasar como motor analítico SQL para MongoDB
  • Apache Drill como motor DataLink
  • Spark como motor de procesamiento en streaming

 

Otra reflexión interesante del informe es las consideraciones que debemos hacer a la hora de elegir software open-source, como:

  • Madurez: como de maduro es el proyecto IoT? Aparte de pilotos tiene proyectos en producción?
  • Rendimiento y estabilidad: puede el proyecto soportar los números estimados?
  • Estabilidad del vendor: puedo confiar en la empresa que hay detrás de este software?
  • Servicios de soporte: la empresa que está detrás podrá darme el soporte end-to-end?. Cuántos desarrolladores hay detrás? Tiempos de respuesta? Ofrecen soporte commercial?
  • Documentación: como forma de garantizar que los desarrolladores y usuarios podrán trabajar con esta

 

Gartner Report: Use Open Source to Jump-Start IoT Projects and Make IoT Vendor Decisions

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (IV. Crear aplicaciones)

sofia2vsThingWorx

 

Este es el cuarto y último post de la serie Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos. El objetivo es realizar una comparativa de uso de dos plataformas IoT como son Sofia2 y ThingWorx. Para ello, realizaremos un hands on siguiendo un flujo sencillo IoT en el que simularemos un edificio que dispone de dispositivos para la lectura de consumo energético y temperatura. Para terminar, crearemos un cuadro de mando para visualizar esta información.

 

Con el fin de conseguir una mejor comprensión de esta comparativa, hemos estructurado los pasos a seguir, comunes a las dos plataformas, en 4 posts:

  1. Registro y Login. Modelado de datos
  2. Conecta tu dispositivo
  3. Simular datos de entrada
  4. Crear Aplicaciones

 

Hoy veremos el último punto.

 

Crear Aplicaciones

 

Sofia2 IoT Platform

 

Una vez que existen datos en la plataforma y a medida que los dispositivos u otras aplicaciones se conectan con Sofia2 es posible crear aplicaciones que interoperen entre sí y exploten la información existente. Las Herramientas de Visualización de Sofia2 me permiten explotar de forma sencilla y gráfica la información almacenada dentro de la Plataforma (Ontologías). Puedo crear elementos de visualización unitaria (Gadgets), unirlos en una página web (Dashboard) o incluso crear complejos sinópticos al estilo SCADA representando la evolución de las señales (Instances).

 

El siguiente paso es crear un cuadro de mando usando las capacidades de presentación gráfica de la plataforma.

 

Creando Gadgets

 

  1. Accedemos a Visualización > Mis Gadgets

MisGadgets

2. Pulsamos en Crear Gadget

3. Usaremos el Wizard para crear nuestro primer Gadget. Lo nombramos GaugeWattsVVC (GaugeWatts + Nuestras Iniciales). Pulsamos sobre Siguiente

4. Seleccionamos nuestra Ontología. Pulsamos sobre Siguiente

5. Seleccionamos Query y pulsamos sobre Siguiente

6. Seleccionamos BDTR y pulsamos sobre Siguiente

7. En el campo consulta ponemos select c.SmartBuildingVVC.watts from SmartBuildingVVC as c limit 1 (cambiando VVC por tus iniciales). Pulsamos sobre Preview

8. Bajamos y seleccionamos la pestaña del Gadget Gauge, arrastramos el atributo value a la caja de medidas, cambiamos el Nombre a Watts y obtendremos un Gadget similar a este:

gauge2

9. Volvemos a Mis Gadgets > Crear Gadget. Ahora haremos otro Gadget, esta vez de tipo área. Lo denominaremos AreaTemperatureVVC (AreaTemperature + Nuestras Iniciales). Haremos los mismos pasos que para el gadget anterior, pero cambiando la Consulta por select * from SmartBuildingVVC as c (cambiando VVC por tus iniciales). Pulsamos sobre preview. Bajamos y seleccionamos la pestaña del Gadget Área, arrastramos los atributos timestamp (que cambiaremos el nombre a Temperature) y temperature a la caja de medidas, y obtendremos un Gadget similar a este:

GadgetAreaDos

10. Por último, crearemos un tercer Gadget de tipo Mapa, que llamaremos MapaVVC (Mapa + Nuestras Iniciales). Realizaremos los mismos pasos que para el gadget anterior, usando la Consulta select * from SmartBuildingVVC as c (cambiando VVC por tus iniciales). Pulsamos sobre preview. Bajamos y seleccionamos la pestaña del Gadget Maps, arrastramos los atributos geometry.coordinates.0 y geometry.coordinates.1.

En Medidas cambiaremos el nombre a Localización. Marcaremos los atributos address, city, state y zip y obtendremos un Gadget similar a este:

crearMapaDos

 

 

Creando Mi Dashboard

 

Llamamos Dashboard al cuadro de mandos que recoge una cantidad determinada de elementos (Gadgets). Para crear un Dashboard seguiremos los siguientes pasos:

 

  1. Accedemos mediante el menú a Visualización > Mis Dashboards
  2. Pulsamos sobre Crear Dashboard
  3. Le ponemos como nombre SmartBuildingVVC (SmartBuilding + Nuestras Iniciales)
  4. Tenemos diferentes opciones de estilado, podemos elegir un tema determinado o customizarlo con los colores que elijamos de la paleta. Elegiremos el tema Dark Blue por ejemplo.

estiloDashboard

5. Bajaremos y pulsaremos sobre Nueva Página

6. Pulsaremos sobre + y añadiremos nuestros 3 Gadgets, obteniendo un Dashboard similar a:

DashboardBienn

 

 

ThingWorx

 

ThingWorx denomina Mashup Builder al lugar donde se crean las visualizaciones, siendo los widgets los componentes que se colocan en el mashup. Por lo tanto, podríamos establecer la siguiente similitud de conceptos: lo que llamábamos Gadget en Sofia2, en ThingWorx es un widget y lo que llamábamos Dashboard, ahora es un Mashup.

 

Construyendo un Mashup

 

  1. Nos situamos encima de la pestaña Mashups, en el panel de la izquierda y pulsamos en +

Mashup

 

2. Para Mashup Type seleccionamos Page

3. Para Layout Options seleccionamos Static y pulsamos Done

4. En la pestaña Widgets de la izquierda, hacemos click y arrastramos el widget Gauge en el lienzo del centro. Este widget mostrará los watios simulados en uso.

5. Seleccionamos el objeto Gauge en el lienzo. La parte inferior izquierda de la pantalla contiene las propiedades del widget. Nos desplazamos hacia abajo y cambiamos el valor de la propiedad Legend a Watts. Observe que la etiqueta del lienzo se ha actualizado para mostrar la palabra “Watts”

6. Si el widget OpenStreetMap no está disponible, descargue e instale la Extensión de Mapa de Open Street desde ThingWorx IoT Marketplace https://marketplace.thingworx.com/

7. Hacemos click y arrastramos el widget OpenStreetMap en el lienzo del centro

8. Hacemos click y arrastramos el widget Time Series Chart en el lienzo del centro

9. Movemos los widgets y los cambiamos de tamaño para que quepan en el lienzo

10. Pulsamos en Save y nombramos el Mashup, por ejemplo MyHomeMash

mashupAMedias

 

 

Suministrando datos a un Mashup

 

  1. Si no estamos en modo edición, hacemos click en el botón de edición naranja.

edicionMashup

2. En la ficha Datos en la parte superior derecha de Mashup Builder, hacemos click en el botón verde +

3. Buscamos el Thing MyHouse en la barra de búsqueda Select Entity.

4. En la barra Select Services, buscamos QueryPropertyHistory y hacemos click en la flecha derecha azul para seleccionar este servicio. Este servicio recuperará todas las propiedades registradas del Thing MyHome

5. Marcamos la casilla Mashup Loaded y hacemos click en Done. Esto ejecutará el servicio y recuperará los datos cuando se cargue el Mashup.

addData

6. Seleccionamos y expandimos la pestaña All Data en la parte superior derecha de Mashup Builder. Se mostrarán todas las salidas de la llamada de servicio.

7. Arrastramos la propiedad watts al widget Gauge en el lienzo. Seleccionamos # Data para el destino de enlace.

MashupDesarrollado

 

8. Hacemos lo mismo para el widget OpenStreetMap vinculando house_lat_long a la SelectedLocation en el mapa.

9. Con el widget OpenStreetMap seleccionado, hacemos click en la propiedad ShowSelectionMarker en la ventana de propiedades del widget en la parte inferior izquierda del Generador de Mashup.

10. Para el Time Series Chart, arrastramos el contenedor All Data en el widget y seleccionamos Data como el destino de enlace

11. Con el widget Time Series Chart seleccionado, establecemos las siguientes propiedades mediante la ventana de propiedades del widget en la parte inferior izquierda del Mashup Builder:

Property Value
XAxisField  timestamp
DataField1 temperature

12. Pulsamos sobre Save para guardar los cambios

 

Lanzando la Aplicación

 

  1. Iniciamos la aplicación seleccionando el botón View Mashup en la parte superior. Es posible que debamos habilitar el cuadro emergente en su navegador para ver el mashup.
  2. Obtendremos un Mashup similar a este:

MashupFinal

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (IV. Crear aplicaciones)