Adéntrate en el mundo de Internet of Things de la mano de IBM IoT Foundation
Patricia Carmona Noticias 31/03/2016
Hoy en día vivimos en un mundo en el que todo empieza a estar conectado a Internet, desde el ordenador, la televisión o el teléfono hasta las luces, el frigorífico o el termostato. De forma remota se puede conocer y modificar el estado de estos objetos, pudiendo recibir además información sobre el mismo y anticipar eventos, como comida caducada o puertas mal cerradas.
Estas funcionalidades se están aplicando no solo a elementos dentro del hogar, sino también a cualquier objeto con el que se pueda interactuar: saber el estado del tráfico o la disponibilidad de plazas de aparcamiento, regular las luces en la calle o conocer el estado de los cubos de basura son otros ejemplos de uso.
Esta idea de intentar conectar todos los objetos a internet para poder extraer información e interaccionar con ellos se conoce como Internet of Things (IoT) o Internet de las Cosas.
IBM IoT Foundation
Existen múltiples herramientas para facilitar la gestión de dispositivos y aplicaciones relacionadas con IoT. Dentro de estas herramientas se encuentra IBM Internet of Things Foundation, un servicio que forma parte de IBM Bluemix y que permite gestionar en la nube mediante un panel web tanto los dispositivos que tenemos conectados como los diferentes accesos a la API de los mismos.
Dentro de esta herramienta encontramos diferentes utilidades disponibles. Accediendo al panel de dispositivos se puede gestionar los diferentes dispositivos creados, así como crear nuevos. Cada dispositivo tiene asociado además un tipo, que permite agilizar la creación de estos dispositivos agregando datos comunes a los mismos (desde información sobre el mismo hasta json o datos a enviar). Este panel permite ver de forma rápida los errores enviados por los dispositivos así como realizar acciones como actualizar el firmware o reiniciar múltiples dispositivos con una sola acción.
El panel de accesos sirve para gestionar los usuarios que pueden acceder a los dispositivos, así como las claves de acceso para la API y las aplicaciones de Bluemix conectadas.
Para poder ver estadísticas y datos sobre tráfico, almacenamientos o el número de dispositivos conectados se puede acceder al panel de uso.
Además, hay disponible una guía de inicio rápido para ayudar a configurar, conectar y probar la herramienta utilizando múltiples dispositivos como una Raspberry Pi, un Intel Edison o un dispositivo simulado en un navegador web.
A la hora de desarrollar aplicaciones de IoT, se pueden distinguir dos elementos: la aplicación y el dispositivo. En los siguientes apartados se detalla un ejemplo de uso de la herramienta.
Trabajando con dispositivos
El primero de los elementos es el dispositivo. En este ejemplo se utiliza una Raspberry Pi con un Raspbian en su interior.
Lo primero que hay que hacer es agregar el dispositivo. Para ello hay que entrar en el panel de dispositivos y pulsar añadir dispositivo. En la primera ventana del asistente, se debe crear el nuevo tipo de dispositivo en caso de no existir alguno, dándole un nombre y agregando toda la información necesaria como fabricante, modelo o versión del firmware.
Una vez agregado el tipo, se puede terminar de agregar el dispositivo. Al terminar el asistente mostrará la información para conectar el dispositivo con la plataforma. Es importante guardar esta información, ya que la señal de autenticación (token) no es recuperable.
Una vez se ha agregado el dispositivo, hay que configurarlo para poder comenzar a enviar datos. Para ello, se ha desarrollado un pequeño script en Python utilizando la librería de IBM llamada ibmiotf. En este enlace tienes disponible la documentación, junto con otra documentación para otros lenguajes de programación como Node o Java.
La aplicación creada recoge información sobre el estado de la placa, como el uso de CPU, la memoria ram o el espacio en disco disponible de forma periódica y lo envía a la plataforma en formato Json. Para poder hacerlo, hay que agregar la información del dispositivo. Existen dos formas de hacerlo: insertar la información en el código o utilizar un fichero de configuración. En el ejemplo se ha utilizado la segunda, ya que permite reutilizar el mismo código en múltiples dispositivos.
Mira todo el código de ejemplo.
Una vez se han creado el fichero de configuración y el script, se puede ejecutar y empezar a ver como en la herramienta se empieza a recibir información.
Trabajando con la aplicación
Una vez se ha desarrollado un controlador para el dispositivo, es útil disponer de una aplicación a juego que haga algo con la información obtenida. En este caso, se ha desarrollado un pequeño script que consume los datos proporcionados y los imprime por pantalla, pero se pueden hacer aplicaciones que almacenen la información en una base de datos o tomen decisiones en función de los mismos.
De igual forma que con el dispositivo, hay que crear un fichero de configuración, pero en este caso con la información y claves para la API. Para crear esta clave hay que acceder al apartado de claves API dentro del panel de accesos y pulsar en añadir clave.
Para la aplicación se ha desarrollado también un script en Python utilizando la documentación para el desarrollo de aplicaciones de la librería ibmiotf. El código está disponible en GitHub.
Pero esto no es todo. A la hora de desarrollar aplicaciones para IoT también interesa poder enviar comandos al dispositivo para provocar cambios en su estado o comportamiento. Para poder hacer esto, hay que agregar una función commandCallback al script del dispositivo y publicar el mensaje desde la aplicación. Aquí puedes ver el código de ejemplo.
Por último, a la hora de desarrollar la aplicación en la nube, IBM ofrece integración sencilla con otros servicios de Bluemix, tanto para el despliegue (cloudfoundry o contenedores) como para interacción (Watson o servicios de almacenamiento de datos). IBM también ofrece el uso de Node-RED para desarrollar la lógica tanto de los dispositivos como las aplicaciones como puede verse en https://developer.ibm.com/recipes/tutorials/creating-a-nodered-application-on-bluemix/.
Casos de uso
El uso de este tipo de dispositivos es cada día más normal, estando integrados en la vida diaria. IBM tiene a disposición de los desarroladores múltiples ejemplos de código usando la IoT Foundation junto a otros servicios de Bluemix. También hay disponible diferentes cursos para empezar a conocer y trabajar con esta herramienta en su academia.
El grupo de investigación de IBM ha desarrollado proyectos en torno al mundo de IoT utilizando esta herramienta. Hay proyectos interesantes como Living Roads, en el que IBM junto al ayuntamiento de Nairobi (Kenia) ha implementado un sistema que permite monitorizar el estado de las calles para localizar baches y tramos en mal estado para priorizar su reparación.
Por otro lado, existen diferentes empresas que trabajan con dispositivos conectados que utilizan la plataforma de IBM para implementar la interacción de los dispositivos con las aplicaciones. Por ejemplo, Chamberlain ha creado un dispositivo que permite abrir y cerrar la puerta de un garaje con un smartphone.
En resumen, si tienes interés en desarrollar aplicaciones relacionadas con el mundo de IoT, no dudes en probar IBM Internet of Things Foundation para conocer todas sus posibilidades.