Release 4.1: Publicación de APIS REST vía NGSI V2

En la Release 4.1 de Sofia2 IoT Platform se ha incorporado una novedad en el API Manager.

ngsi3

Se trata de la posibilidad de publicar APIS que expongan los datos a través del protocolo NGSI.

Es tan sencillo como seleccionar este nuevo tipo de API “Publicar Ontología como API REST NGSI” en API MANAGER > APIs > Crear API:

ng1

Por último, seleccionamos la operación GET disponible para este tipo de APIs y creamos el API.

A la hora de probar el API, nos fijamos en que el endpoint cumple con los requisitos del protocolo NGSI V2:

ng2

Para más información se puede consultar este post dónde se desarrolla un ejemplo completo de consultas mediante el protocolo NGSI, de donde se extrae el siguiente ejemplo de query:

ngsi4

 

 

Release 4.1: Publicación de APIS REST vía NGSI V2

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)

Soporte consultas desde el CRUD para TimeSeries

En posts anteriores hemos hablado de las ontologías TimeSeries que dan soporte al concepto de series temporales.

2

Recientemente se ha añadido una nueva funcionalidad para estas ontologías, que consiste en la posibilidad de realizar consultas desde el CRUD de la consola de administración.

Lo primero a tener en cuenta es recordar que en este tipo de ontologías, la instancia a insertar tiene que concordar con el tipo de dato definido a la hora de crear dicha ontología. En este caso la ontología con la que estamos trabajando tiene un tipo de dato simple, por tanto la instancia que se debe de enviar tendrá que ser del tipo:

{“timestamp”:{“$date”: “2014-01-30T17:14:00Z”},”value”:”string”}

Por lo que si accedemos a  Ontologías > Gestión Crud de Instancias y seleccionamos una ontología de tipo TimeSeries, el formulario que nos muestra para insertar datos, cumplirá con el esquema anterior:

time1

Otro detalle a recordar es la forma en el que se insertan los datos en las ontologías TimeSerie, dónde sólo hay una instancia por cada ventana temporal dónde se agruparan los datos enviados dependiendo de la configuración de dicha ventana. Por esta razón hasta que no cambiemos de ventana temporal, solo nos aparecerá una instancia :

time2

A la hora de borrar desde esta pantalla hay que tener en cuenta que se borrará toda la instancia correspondiente a la ventana temporal.

Soporte consultas desde el CRUD para TimeSeries

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (III. Simular datos de entrada)

sofia2vsThingWorx

 

Este es el tercer 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 tercer punto.

 

Simular Datos de Entrada

 

Sofia2 IoT Platform

 

Puesto que no tenemos un dispositivo real que inserte información en nuestra ontología, debemos simular los datos que nos enviaría el sensor de nuestro Smart Building. Sofia2 dispone de una funcionalidad muy interesante implementada en la consola de administración llamada “Simulador Tiempo Real Instancias de Ontología” que nos permite simular datos para insertarlos en una ontología. Antes de crear un simulador, debemos crear diversos generadores de instancias, que nos generarán datos entre un listado de valores, con un valor fijo o datos random, pudiendo elegir entre varios tipos de datos según lo que nos convenga generar. Podemos ampliar información sobre el Simulador de datos en el siguiente post

 

Simulando los datos

 

  1. Accedemos a ONTOLOGIAS > Simulador Tiempo Real Instancias de Ontología:
  2. Seleccionamos Crear Simulador.
  3. Vamos a Crear un Generador para cada uno de los atributos que aparecen en la Ontología SmartBuildingVVC (SmartBuilding + Nuestras iniciales), con los siguientes datos fijos. Para ello, escribimos los siguientes datos para cada uno de los generadores (todos con insertar instancia cada 5 seg) y pulsamos Añadir Generador después de introducirlos:
Nombre del Generador Tipo de Generador Valor
houseID Fixed Number 12345
address Fixed String 140 Kendrick Street
city Fixed String Needham
state Fixed String MA
zip Fixed Number 02494
lightID Fixed Number 11111
thermostatID Fixed Number 99999
latitudd Fixed Number 42
longitudd Fixed Number -71

 

4. Nos faltarán dos atributos, watts y temperature, para los que queremos generar datos aleatorios. Para el generador de Nombre watts, elegiremos un Tipo de Generador Random Integer, Insertar Instancia cada 5 segundos, Desde 0 hasta Para el generador de Nombre temperature, elegiremos un Tipo de Generador Random Integer, Insertar Instancia cada 5 segundos, Desde 0 hasta 40. Obteniendo:

GeneradoresDeInstancias

 

5. Pulsamos sobre la pestaña Ontología y seleccionamos nuestra Ontología SmartBuildingVVC (SmartBuilding + Nuestras Iniciales) y seleccionamos para cada atributo, su generador correspondiente

DatosSimuladorBien

 

6. Le ponemos como Identificador SimuladorSmartBuildingVVC (SimuladorSmartBuilding + Nuestras Iniciales) y pulsamos sobre Crear Simulador.

7. Pulsamos sobre el lápiz de nuestro Simulador y en la parte inferior pulsamos sobre ¡Empezar! Con esto empezarán a generarse datos. Pasados un par de minutos, pulsamos sobre ¡Parar!

 

Verificando que los datos se han simulado correctamente

 

  1. Accedemos a la opción de menú Herramientas > Consola BDTR y BDH:

ConsolaBDTR

 

2. Seleccionamos con doble click nuestra Ontología, pulsamos Generar Query y pulsamos sobre Realizar Consulta. Resultando unos datos similares a:

datos2

 

ThingWorx

 

Ahora que hay un lugar para almacenar los datos, vamos a crear algunos datos. Importaremos entidades que simulan los datos de un Smart Building. Estas entidades incluyen un servicio de javascript que simula los datos, así como un temporizador que se ejecuta en un intervalo establecido.

 

Importar las entidades de simulación de datos

 

  1. Descargaremos el archivo Foundation Simulator file a nuestro ordenador
  2. Pulsaremos en Import/Export > From File (situado en la parte superior de la consola)

import

 

3. Seleccionamos el archivo que hemos descargado

4. Pulsamos Import y cuando veamos el mensaje de cargado correctamente pulsamos en close

 

Exportar las entidades importadas

 

  1. Pulsamos sobre el Thing Foundation_Quickstart_Services
  2. Pulsamos en Subscriptions
  3. Seleccionamos el lápiz a la izquierda de Esta suscripción se basa en un temporizador. Cada 30 segundos se ejecuta un script que simulará los datos del Thing MyHouse que creamos y actualizará sus Propiedades.

editarSubsciption

 

4. Seleccionamos la pestaña Subscription Info

5. Seleccionamos el check Enabled para comenzar la simulación

enabled

 

6. Pulsamos en Done y luego Save

 

Verificamos que los datos se están simulando

 

  1. Abrimos el Thing MyHouse y seleccionamos la pestaña Properties
  2. Pulsamos sobre el símbolo de Refresh de la columna Value bajo HouseGatewayTT

propertiesRefresh

 

3. Comprobamos como los valores de temperature y watts varían cada 30 segundos gracias a la simulación

 

datosss

 

 

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (III. Simular datos de entrada)

Usando el nuevo Visor #OpenData de Sofia2

Blog de Sofia2 IoT Platform

En la última release de Sofia2 se ha incorporado una utilidad que permite visualizar ontologías definidas como públicas dentro de un Visor OpenData.

En este post vamos a:

  • Buscar un DataSet
  • Cargar el DataSet en Sofia2
  • Visualizarlo en el nuevo Visor

BÚSQUEDA DEL DATASET

Existen numerosos portales donde buscar un DataSet a cargar, por ejemplo:

  • Portal de datos abiertos de la Unión Europea: este portal agrupa fuentes de datos gratuitas disponibles por parte de las instituciones de la Unión Europea. Hay sobre 8200 datasets y podéis acceder a ellos en Portal de datos abiertos de UE
  • Portal de datos abiertos del Gobierno de USA: Al igual que en los datos del portal de la Unión Europea son fuentes de datos gratuitas y libres para su explotación. Además ofrecen ejemplos de aplicaciones desarrolladas, Se puede acceder a través de este enlace: Portal de datos abiertos de USA
  • Quandl: Quandl…

Ver la entrada original 423 palabras más

Usando el nuevo Visor #OpenData de Sofia2

Sofia2 as a technological base in the European R&D project eVacuate

eVACUATE-LOGOSOlo

 

As we mentioned in the previous post, Sofia2 IoT Platform has promoted the development of high added value solutions in customers in areas such as Smart Cities, Smart Health, Industry, Retail, Energy …

 

Sofia2InfografiaRecortada

 

One of the projects which Sofia2 serves as a technological base is eVacuate, a European innovation project whose aim is the development of a simulation and emergency management system based on IoT and Big Data technologies to define in real time the optimal routes of evacuation in large infrastructures.

 

eVACUATE-LOGO

During the last months four pilots have been carried out in which the feasibility of the project has been demonstrated and the possibility of scaling in a great number of scenarios.

 

The first evacuation exercise was held last October at Anoeta football stadium. 27 researchers from different European companies and universities were working in San Sebastián defining in real time the optimal evacuation routes for a football match in Anoeta. To do this, a good number of fans were gathered and they were asked to be placed in the main tribune. From that moment, they followed workers instructions and they lived in situ up to four types of different evacuation situations. The announcements of public address, signage, opening of doors and emergency situations varied with the aim of creating four completely different cases.

 

Here you have the video with the images and all the detailed information of the pilot in Anoeta.

 

Athens airport, a cruise ship of the company STX on French coast and finally, last May, Bilbao’s Subway, were the other scenarios in which eVacuate demonstrated its effectiveness. In all cases it was possible to reduce the evacuation time by more than 25% compared to the current evacuation systems.

 

Sofia2 as a technological base in the European R&D project eVacuate

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (II. Conecta tu dispositivo)

 

sofia2vsThingWorx

 

Este es el segundo 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 segundo punto.

 

Conecta tu dispositivo

 

Sofia2 IoT Platform

 

Creando un ThinKP

 

Una vez que hemos definido el modelo de datos y lo hemos plasmado en una ontología, tenemos que crear el ThinKP, que, como vimos en el anterior post, representa a cada uno de los elementos que interactúan con la plataforma. En Sofia2 se creará de manera sencilla siguiendo los siguientes pasos:

 

  1. Accedemos al menú Mis ThinKPs

ThinKP1

 

2. Pulsamos sobre Nuevo ThinKP y daremos un nombre AppSmartBuildingVVC (AppSmartBuilding + nuestras iniciales), y una descripción al ThinKP. Seleccionaremos la ontología SmartBuildingVVC que va a utilizar y pulsaremos en Crear.

ThinKP2

 

Siempre podremos acceder a nuestros Token mediante la pestaña Mis Tokens.

 

ThingWorx

 

Creando un Thing

 

Una Thing es una representación digital de un dispositivo físico. En términos de programación, es similar a una instancia de una clase. Crearemos un Thing basándonos en el modelo de datos que creamos anteriormente, nuestro Thing Template llamado HouseGatewayTT.

 

  1. Accedemos al menú izquierdo situándonos encima de Thing y pulsamos en +

thing1

 

2. En el campo Name introduciremos MyHouse

3. En el campo Tags seleccionaremos FoundationQuickstart:Home Application

4. En el campo Thing Template seleccionaremos HouseGatewayTT

thinggg

 

5. Pulsaremos en Save y así guardaremos el Thing

 

Creando un Flujo de Valor

 

Ahora que hemos creado el modelo de datos, debemos crear un destino de almacenamiento para los datos que se transmiten desde los dispositivos. El servidor Foundation ofrece varias formas de almacenar estos datos. Utilizaremos un flujo de valor que es una manera rápida y fácil de almacenar datos de series de tiempo.

 

  1. Iremos a la pestaña Data Storage situada en el lateral izquierdo, nos situaremos sobre Value Streams y pulsaremos en +

ValueStreams1

 

2. Seleccionamos Value Stream y pulsamos Choose

3. Escribimos Foundation_Quickstart_ValueStream en el campo Name

4. En Tags seleccionamos FoundationQuickstart:Home Application

5. Pulsamos Save

 

Actualizando el Thing Template

 

  1. Pulsamos sobre HouseGatewayTT en la página principal
  2. Confirmamos que nos encontramos en la pestaña de Información General (General Information)
  3. Pulsamos edit
  4. Pulsamos en la varita mágica en el campo Value Stream y seleccionamos Foundation_Quickstart_ValueStream
  5. Pulsamos en Save para guardar los cambios

EditTemplate

 

Como hemos podido comprobar, los dos últimos pasos, “Creando un Flujo de Valor en ThingWorx” y “Actualizar el Thing Template”, no son necesarios realizarlos en Sofia2 puesto que al crear la Ontología, se configuran por defecto las Bases de datos de tiempo real e históricas. Además, podremos configurarlas en Ontologías > Mis Ontologías y al pulsar al lápiz en nuestra Ontología  SmartBuildingVVC (SmartBuilding + nuestras iniciales) en la pestaña de Opciones avanzadas:

ontoAvanzadas

 

Sofia2 IoT Platform vs ThingWorx IoT Platform. Primeros pasos (II. Conecta tu dispositivo)