martes, 9 de febrero de 2016

IoT 2.0: Descentralización total y democracia de los dispositivos


Hemos vivido una acelerada evolución tecnológica en la que los dispositivos informáticos han visto aumentadas sus capacidades y potencia. Ahora estamos asistiendo a un cambio de paradigma en el que los grandes servidores mainframes están siendo suplantados por clústeres de ordenadores con una programación distribuida. Los ordenadores personales por tablets o smartphones y finalmente tenemos los dispositivos inteligentes.

Existen unos catorce mil millones dispositivos conectados entre sí hoy en día y se estima que esta cifra irá multiplicándose en los próximos años. La gestión y control de esta ingente cantidad de dispositivos y datos no puede estar supeditada a grandes multinacionales ni gobiernos, ya no solo por consideraciones políticas o éticas sino por cuestiones técnicas de fiabilidad de una plataforma de dimensiones globales. La implementación de este modelo debe de ser colaborativo y distribuido en el que cada dispositivo cumplirá con su funcionalidad específica, teniendo además autonomía para interactuar de forma confiable y privada con el resto del sistema. El elemento fundamental para conseguir estas características es la tecnología de cadenas de Bloques (BlockChain) en la que está basada el protocolo BitCoin. La cadena de bloques es una red P2P en la que todos los nodos son iguales entre sí dando como resultado un sistema distribuido resistente a ataques informáticos, fallos o falsificaciones.

Principios básicos:
  • Descentralizado, sin gestor central ni autoridad certificadora.
  • Robusta a fallos, no hay puntos únicos del que dependa el sistema, ante cualquier fallo hay múltiples nodos que pueden realizar la función y responder en consecuencia.
  • Todas las transacciones y almacenaje son encriptados.
  • Diseñado en Open Source
  • Escalable

Las empresas junto con los profesionales del sector nos enfrentamos a este emergente nicho de mercado y un apasionante desafío tecnológico. Ya hay empresas que están dando sus primeros pasos: IBM y Samsung se han aliado en un proyecto común llamado ADEP ( Autonomous Decentralized Peer-to_Peer Telemetry) basado en tres protocolos:


  • Envío de mensajes, encriptados y peer-to-peer
  • Compartir archivos peer-to-peer
  • Basado en BlockChains, usado coordinar y controlar transacciones
Haciendo uso de esta implementación permitiría que un dispositivo que ha detectado un fallo, busque y contacte con el proveedor (Telehash) le envíe los datos telemétricos para que sean evaluados (Bittorrent). El proveedor identifique el problema y comunique que hay que reemplazar un elemento del dispositivo. El dispositivo comprobará, por ejemplo que está en garantía haciendo uso del contrato inteligente (Ethereum) lo comunicará al proveedor y efectuará la transacción (Ethereum) para ser reparado. Todo sin intervención humana, de forma anónima, segura y fiable.

Autor: Jesús Parra

“Smart Cities”: punta de lanza para la lucha contra el cambio climatico.


El pasado diciembre de 2015, en la cumbre del cambio climático, ya se hablo de las “smart cities” (ciudades inteligentes) como un aporte fundamental para la reducción de C02 a la atmosfera, es evidente que las nuevas ciudades del futuro, deberán ser ecológicamente sostenibles y donde el consumo de energía será controlado mediante sensores capaces de medir y reducir al mínimo el consumo energía, con estas premisas las “smart cities” se harán paso no solo en pequeñas ciudades sino en las grandes urbes de nuestro planeta.


Ya han empezado a surgir ejemplos de pequeñas “smart cities” que pueden ser la prueba piloto de futuros “big smart cities”, una de estas ciudades ha surgido en el lugar mas inesperado del planeta, la ciudad de Masdar en el emirato de Abu Dhabi, uno de los mayores productores de petróleo del mundo, alberga la primera ciudad ecológicamente sostenible, donde toda la energía se obtiene a partir de una de las mayores plantas solares del mundo, los edificios de la ciudad se han construido con materiales de última generación y existe una compleja red de carreteras para vehículos eléctricos (PRT).

No obstante ya han surgido problemas tanto de habitabilidad como de viabilidad, que se tendrán que tener en cuenta en el futuro, esta ciudad de 50.000 habitantes solo es habitada por un centenar de personas, la mayoría estudiantes de la universidad, parece que la gente de Abu Dhabi es reticente a trasladarse a esta ciudad, en una ciudad controlada por sensores (“Internet of Things”) y donde todos los datos (“Big Data”) son analizados por “Data Scientist” , por tanto es natural que los abudabíes rechacen un control excesivo sobre su vida personal.

Si tomamos en serio las indicaciones de que las “smart cities” pueden ahorrar hasta el 30% de energia consumida, y un 50% del agua es indudable que las ciudades del futuro vendrán impuestas tanto por gobiernos locales como nacionales, para impedir lo que la realidad del cambio climatico nos depara en el futuro: utilización de la energía fosil = 0.

Con todos estos datos y resumiendo podemos afirmar que las “smart cities” formaran parte de la solución al cambio climático, y que mas temprano de lo que nos imaginamos seran parte de nuestra vida cotidiana.

Autor: Francisco Javier Gonzalez

jueves, 4 de febrero de 2016

Desarrollando con Play


La plataforma de IoT Play fue concebida para facilitar el desarrollo de entornos de Internet de las Cosas cubriendo sus necesidades de almacenamiento y gestión de datos. Una vez desplegado nuestro sistema Hardware, garantizando su interacción con nuestra plataforma, es necesario desarrollar una aplicación que emplee esta información para generar valor. A continuación veremos la facilidad con la que se puede construir una aplicación que nos permita tener un seguimiento de los eventos percibidos por la parte hardware de nuestra instalación.Existen infinidad de lenguajes de programación y tecnologías que pueden ser empleadas en el desarrollo de una aplicación de estas características. De hecho, en ocasiones los requisitos de estos programas no tienen que ser excesivos como para necesitar elementos software muy complejos. Por ejemplo, las tecnologías y lenguajes web (HTML, CSS, Javascript) son una gran elección por su sencillez a la hora de crear aplicaciones de calidad, funcionales y con una interfaz de usuario atractiva. De hecho, existen frameworks CSS como Bootstrap o MaterializeCSS que simplifican mucho todo el proceso de diseño del sitio web.

Pero no todo en una web es el aspecto visual. Necesitamos que se produzca una comunicación entre nuestra aplicación y Play para acceder, tanto a los datos recogidos por la parte hardware, como a las distintas herramientas de gestión que ofrece la plataforma a través de su API REST. El lenguaje web Javascript, usando JQuery por ejemplo, ofrece una tecnología perfecta para realizar esta comunicación bidireccional: AJAX. Este sistema, sencillo e inmediato de implementar, permite realizar peticiones a Play para realizar cualquiera de las acciones ofrecidas por la plataforma.

$.ajax({

            url : "UrlToPlay/rs/API/actionToPerform",
            type : "POST",
            cache : false,
            dataType : "json",
            success : function(data) {
                  // Utilizar los datos devueltos por Play
            },
            error : function(jqXHR, textStatus, errorThrown) {
                  // Gestión de errores
            }
      });

Código necesario para interactuar con el API REST de Play


Llegados a este punto, disponemos de una aplicación cliente que tiene a su disposición una gran cantidad de información procedente de unos sensores. El siguiente paso lógico sería visualizarla de una forma adecuada. Existe una librería gráfica de Javascript denominada D3.js destinada a la visualización interactiva de datos. Si bien es una tecnología muy potente, su implementación no es tan trivial como la de los demás elementos presentados anteriormente. Por eso, se recomienda el uso de una librería basada en D3js denominada C3, que facilita todo el proceso de generación y configuración de gráficas, reduciéndolo a una sola instrucción de Javascript.

var chart = c3.generate({

    data: {
        x: 'x',
        columns: [
            ['x', '2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'],
            ['data1', 30, 200, 100, 400, 150, 250],
            ['data2', 130, 340, 200, 500, 250, 350],
            ['data3', 400, 500, 450, 700, 600, 500]
        ]
    },
    axis: {
        x: {
            type: 'timeseries',
            tick: {
                format: '%Y-%m-%d'
            }
        }
    }
}); 

Código necesario para generar una gráfica con C3
Resultado de una gráfica con datos de Play

Como hemos podido observar, el desarrollo de la parte software de un sistema de Internet de las Cosas puede llevarse a cabo por una persona en pocas semanas si se utilizan tecnologías potentes y sencillas como las comentadas y si éstas se apoyan en una plataforma potente y versátil como es Play. Esto no es sólo teoría sino que queda demostrado con dos casos de uso reales desarrollados sobre Play como son una Oficina Conectada y una Smart Home desde los cuales se puede gestionar toda una red de sensores colocada en un espacio físico y ofreciendo numerosas ventajas para dos entornos diferentes como pueden ser el laboral y el doméstico.
Autor: Roger Guizan y Angel Luis Gonzalez