El IoT y la programación web

mkr1000-difuminada

Desde que Denis nos ofreció escribir este artículo, he estado dando vueltas que escribir con relación a lo que se habla en este blog. Yo me considero más programador que maker, aunque en mi web, Programarfacil, hagamos una mezcla entre el hardware y el software para crear tecnología. A los programadores (ya sean del back o del front) se nos abren nuevas oportunidades en nuestra profesión, una de ellas es el IoT (Internet of Things o el Internet de las Cosas). La combinación del IoT y la programación web nos puede llevar por un camino inexplorado a los desarrolladores.

Se trata de un término que está está cogiendo mucha popularidad en la actualidad, solo tienes que ver la tendencia en Google Trends para saber en que punto estamos en la actualidad.

trends-iot

Pero no es algo nuevo, diferentes universidades llevan investigando sobre este tema varias décadas. Ahora, gracias al Open Hardware y plataformas como Arduino, el IoT está al alcance de todo el mundo. Ya no es patrimonio de las grandes marcas.

El IoT es la red de objetos (dispositivos físicos, vehículos, edificios, etc…) que tienen circuitos electrónicos integrados, se basan en aplicaciones software, tienen sensores y están conectados. El objetivo principal es recopilar información de su entorno e intercambiar datos entre ellos y con centros de procesamiento de datos basados en la nube.

Los dispositivos o cosas conectadas, deben tener características especiales.

Deben ser capaces de recoger y transmitir información. Gracias a los sensores, captan información del entorno que les rodea, por ejemplo temperatura, humedad o cualquier magnitud física susceptible de ser medida. Esta información es transmitida a través de los módulos de comunicación que vienen incorporados. Pueden trabajar de diferentes maneras, ya sea transmitiendo los datos a dispositivos clientes (móvil, escritorio, etc…) o a servidores especializados en el IoT basados en la nube (Xively, Thinger.io, Open Sen.se, Azure, IBM Bluemix).

Además de percibir el entorno a su alrededor, son capaces de actuar sobre el mismo. Esto se suele hacer con actuadores los cuáles responden a criterios preestablecidos. Pongamos un ejemplo para que quede claro. Tenemos un dispositivo capaz de medir la temperatura y determinamos un umbral por el cual si se supera, se activa un sistema de refrigeración. Esto se puede hacer de diferentes maneras, lo más fácil es utilizar un relé que no es más que un interruptor de alto voltaje.

Por último, quizás la característica que diferencia a los dispositivos del IoT de otros dispositivos muy parecidos, es que solo reciben información a través de la red, ya sea una red local o Internet. Esta información puede ser de otros dispositivos (de aquí viene el Internet de las Cosas) o de usuarios administradores informando de nuevos eventos, nuevos estados de operación y, en algunos casos, nuevas funcionalidades.

Aquí es donde entran en juego los programadores ya sean del front-end o del back-end. Debido a las restricciones anteriormente citadas, se hace necesario algún tipo de interfaz de usuario capaz de monitorizar y controlar estos dispositivos. Además, la comunicación entre ellos y entre el mundo exterior se debe hacer a través de un sistema estándar, capaz de ser entendido por cada uno de ellos y de los sistemas involucrados.

La parte front-end debe cumplir ciertas características mínimas, que sea responsive y multiplataforma. Esto se puede conseguir gracias a librerías como Bootstrap y frameworks como AngularJS, mi favorito para este tipo de desarrollos.

En la parte del back-end, podemos optar por diferentes lenguajes de programación como JavaScript (del lado del servidor con NodeJS), Java, PHP y mi favorito C#. Para que los dispositivos se entiendan entre si y con otros sistemas, hay que utilizar protocolos de comunicación estándar. Uno de los más utilizados son los servicios web Rest ya que nos permite abstraernos de los lenguajes utilizados tanto en el front-end como en el back-end.

Respecto al hardware, este año Arduino ha empezado a apostar fuerte por el IoT y ha presentado su nueva placa, Arduino MKR1000. La gran diferencia con el resto es que, por primera vez viene con un módulo WiFi integrado dentro de la propia placa. Hasta ahora si querías comunicar tu Arduino a través de la red, tenías que comprar un shield o integrar con algún módulo como el ESP8266. Resultaba más caro y complejo. Con el Arduino MKR1000, tenemos al alcance de todo el mundo los dispositivos del IoT, es un gran salto hacia la era de las cosas conectadas.

A continuación te presento las imágenes un simple ejemplo con esta placa, donde gracias a la sensor de temperatura LM35, podemos crearnos una estación meteorológica básica nosotros mismos. Con unos pocos conocimientos sobre programación web y electrónica, el límite será nuestra imaginación.

Por último quiero agradecer a Denis la oportunidad de escribir este artículo y animar a todos los programadores que no se queden solo en el desarrollo de aplicaciones, que prueben la programación física con dispositivos electrónicos.