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

This is the new Gartner report:

Peter Havart-Simkin tells us how Open-Source IoT can help us to address the new challenges posed by the Internet of Things. It also recommends IoT projects technical leaders to adopt, among others, IoT open source products to boost the development of IoT solutions and evaluate their use in IoT commercial systems production. Following the reference model used by Gartner for business solutions Peter lists some open-source solutions in each of the layers.

We are proud to appear as one of the open-source IoT Platfom Hub, since from the very first moment we have opted for open-source, both for the pieces on which we build the platform as well as offering an Open source version (Sofia2 Community Edition) and a free and limitless Cloud environment (Sofia2 CloudLab).

Among the open-source pieces on which we build the platform we have:

  • Moquette Broker (now an Eclipse project) as MQTT Broker
  • Spring and all its ecosystem as the platform’s main development framework (IoT Broker, …
  • JQuery, Thymeleaf, AngularJS, Bootstrap as technologies to build the Control Panel
  • Hazelcast as in memory DataGrid
  • Node-network as flows engine
  • Siddhi CEP as CEP engine
  • MongoDB, CouchDB, ElasticSearch, HBase, HIVE, Impala, … as persistence and query engines
  • Apache Zeppelin as the engine of our Notebooks
  • StreamSets as DataFlow Engine
  • Quasar as SQL analytical engine for MongoDB
  • Apache Drill as DataLink Engine
  • Spark as a streaming processing engine

Another interesting reflection of the report are the considerations that must be made when choosing open-source software, such as:

  • Maturity: how mature is the IoT project? Apart from pilots does it have projects in production?
  • Performance and stability: can the project support the estimated numbers?
  • Vendor stability: can I trust the company behind this software?
  • Support services: Will the company behind be able to provide end-to-end support? How many developers are behind? Response times? Do they offer commercial support?
  • Documentation: as a way to ensure that developers and users will be able to work with this
Gartner Report: Use Open Source to Jump-Start IoT Projects and Make IoT Vendor Decisions

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

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)