img_secundaria_iot-blog

Los que nos leéis normalmente sabéis que hemos estado presentes en el Angular Camp de Barcelona. Después de contaros todo sobre nuestra asistencia, hoy Víctor Oliva, nuestro SlashBoy, nos pone al día sobre las novedades que Angular2 traerá a los dispositivos IoT.

Todos sabemos que el objetivo del IoT es mantener conectados los objetos que usamos de forma cotidiana para proporcionarnos más información, automatizar tareas o usarlos remotamente. Hoy en día, podemos encontrar muchos objetos con estas características: persianas, lámparas, cepillos de dientes, sistemas completos de alarmas, coches, etc. Por supuesto, debemos resaltar el papel de IoT cuando se une con el Big Data, ya que es relativamente sencillo extraer datos de cualquier dispositivo conectado que pueden servirnos posteriormente para realizar un análisis y poder así tomar decisiones empresariales. Este tipo de combinación es muy utilizada en el sector retail. ¡Las posibilidades del IoT son muchísimas! 

Sin embargo, en el ámbito técnico se nos presenta un reto. No es lo mismo desarrollar una aplicación para PC, que una para móviles o para un dispositivo IoT. De las tres opciones, la más fácil es la que nos permite poder ir comprobando el resultado al mismo tiempo que se programa, por lo que una web es el escenario perfecto. Pero, ¿qué pasa con los dispositivos IoT? Obviamente, lleva bastante más tiempo pasar un prototipo al dispositivo para poder ver el resultado ¿Sois capaces de imaginar entonces si nos encontramos ante un dispositivo que está en fabricación, y no lo tendremos disponible hasta un par de fases del proyecto más allá? Aquí es donde Angular 2 viene al rescate: un framework que se puede ejecutar tanto en un navegador (por la naturaleza de javascript en los navegadores) como en un dispositivo IoT (gracias al motor NodeJS).

En el último AngularCamp asistimos a una demostración de @UriShaked titulada From the World-Wide Web to the World of IoT en la que se nos mostró un ejemplo de aplicación que funcionaba tanto en el navegador como en una RaspberryPi. Quizá hay quien piense que es trampa porque se trata de un PC tamaño bolsillo, pero el mismo código funciona perfectamente en un Arduino –un microcontrolador-.

La demo trataba del juego Simon, un juego de memoria donde un aparato va mostrando una secuencia de colores y los jugadores tienen que repetirla sin equivocarse. Primero, la mostró en el navegador con una maquetación retro muy sencilla en HTML + CSS: un display para mostrar la puntuación, y cuatro botones que se iluminan para interaccionar con el usuario:

browser browser_playing

Lo interesante viene ahora, cuando gracias a Angular Universal, que es el concepto de Angular 2 en que puedes ejecutar el código donde sea necesario, unido con una librería para integrar con dispositivos IoT (angular2-iotpuedes ejecutar dicho código en el dispositivo conectado, en nuestra demo de ejemplo una RaspberryPi conectada a una placa con cuatro botones y cuatro LEDs de colores (¡y hasta con el sonido clásico de simon al pulsar cada tecla!). Internamente, funciona haciendo que el código de la lógica se ejecute en NodeJS. Pero la parte más atractiva es la de la interacción con el usuario, que reemplaza la parte de vistas del navegador por estados en los pines IO.  Por ejemplo, cuando se encuentre un tag en el HTML para un botón, en vez de renderizarlo en una pantalla, asocia un pin de Input al  evento “el usuario ha pulsado ese botón”.

Obviamente, esta demo no tiene mucho interés dentro del mundo IoT, pero nos hace ver cómo es perfectamente factible desarrollar este tipo de dispositivos de una forma muy cómoda ya que nos permitirá ir probando en el navegador toda la parte de lógica montando una vista “simulada” de lo que será el dispositivo final para, cuando ya esté todo listo, pasarlo al dispositivo y terminar de pulir los últimos ajustes.

Es sorprendente, pero hemos llegado un punto en el que se puede ejecutar Javascript en cualquier sitio. Empezó siendo durante muchos años un lenguaje restringido exclusivamente a los navegadores; nos sorprendió cuando pasó a la parte de servidores y aplicaciones de escritorio con NodeJS, y ahora ya se está usando en microcontroladores para sistemas IoT.

¿Será Angular el futuro? Hay quienes se refieren a esto parafraseando el libro El señor de los anillos: one language to rule them all¡El tiempo lo dirá!

Recommended Posts

Leave a Comment