Fundamentos IoT

Elegir el protocolo adecuado para enviar datos a dispositivos remotos

Agustín Peláez
· 4 min de lectura
Enviar por correo electrónico

Este artículo se basa en otro artículo que Ubidots contribuyó a la edición de septiembre/octubre de 2015 de la revista Microsolutions de Microchip.

El Internet de las Cosas ( IoT ) no se trata sólo de millones de cosas que nos hablan; también se trata, más importante aún, de que podamos responderles. Tomemos como ejemplo las aplicaciones de análisis minorista. Supongamos que un minorista tiene un sensor que cuenta cuántas personas entran y salen de la tienda. Estos datos se envían a la nube, donde una interfaz web agradable ayuda a la tienda a analizar el comportamiento de los compradores en tiempo real, comparando el rendimiento de la tienda entre varias tiendas o viendo cómo las tasas de visitantes a clientes cambian con el tiempo, especialmente cuando se lanza una campaña de marketing.

De hecho, esta solución es un IoT con varios proveedores que están ayudando a miles de minoristas a optimizar su rendimiento de ventas (de hecho, una vez publicamos un tutorial sobre cómo construir un contador de personas usando una Raspberry Pi y un sensor PIR).

Con base en estas métricas, imagine las posibilidades si el sistema pudiera controlar automáticamente los dispositivos dentro de la tienda. Podría mostrar publicidad contextual basada en la cantidad de personas que caminan frente a él, enviar códigos promocionales a los teléfonos de los compradores dependiendo de su sexo y edad, o tal vez incluso jugar con las luces de la tienda para crear un ambiente específico. Ser capaz de controlar dispositivos ciertamente enriquecería la experiencia IoT en el comercio minorista y en casi todos los demás mercados que aún no se han visto afectados por IoT . Tomar medidas basadas en ese circuito de retroalimentación permitirá que IoT alcance todo su potencial.

Comunicación bidireccional para IoT

Desde una perspectiva técnica, la comunicación de la nube al dispositivo ha resultado ser más compleja que la comunicación tradicional del dispositivo a la nube. ¿Porqué es eso? Internet se diseñó originalmente en un modelo cliente-servidor, donde el cliente siempre era el iniciador de la solicitud. Hasta ahora, esto ha permitido que los dispositivos inicien la comunicación siempre que necesiten enviar datos a la nube. Pero, ¿qué sucede si el servidor necesita enviar datos a un cliente sin que el cliente primero realice una solicitud? Los desarrolladores web han ideado algunas técnicas para superar este desafío. Aquí hay tres opciones que consideramos más “portátiles” al mundo integrado.

La forma más básica de resolver este problema de comunicación se llama sondeo corto , un método en el que el cliente pregunta periódicamente al servidor si hay nuevos datos disponibles. Esta es la solución más sencilla para codificar, aunque no se recomienda si necesita notificar a un dispositivo en tiempo real.

La siguiente opción son las encuestas largas. En este caso, el cliente realiza la solicitud y el servidor no responderá hasta que tenga algo que enviar. Esto permite notificaciones push en tiempo real desde la nube a los dispositivos, aunque requiere que el dispositivo deje la conexión abierta durante el tiempo que necesite para escuchar al servidor. El uso de esta técnica consume más energía y también corre el riesgo de perder la conexión. Consideremos el caso en el que un dispositivo controla remotamente la puerta de un camión. Si se ha realizado una solicitud de sondeo larga y luego el camión entra en un túnel, la conexión móvil se cortará. Luego, el dispositivo necesitará lógica adicional para finalizar la conexión bloqueada y abrir una nueva.

Una tercera opción es utilizar protocolos más nuevos como CoAp o MQTT, por ejemplo, que fueron diseñados para proporcionar baja latencia, tamaños de paquetes pequeños y comunicación estable a través de redes débiles. Estos protocolos más nuevos proporcionan un canal de comunicación bidireccional, que a su vez admite notificaciones automáticas. Esto los convierte en buenas opciones para proyectos IoT que requieren la capacidad de controlar dispositivos conectados en tiempo real. El único inconveniente podría ser la falta de bibliotecas de firmware y ejemplos para dispositivos integrados, que son significativamente más abundantes para conexiones basadas en HTTP.

La elección del protocolo correcto dependerá de su aplicación y de la frecuencia con la que necesitará comunicarse con un dispositivo. En el proyecto de muestra que se describe a continuación, se eligió el sondeo corto porque los datos deben actualizarse solo cada minuto y porque manipular la matriz de LED dejando un enchufe abierto requeriría más potencia de procesamiento.

Práctica práctica

En este ejemplo, queríamos explorar cómo utilizar el método de sondeo corto para enviar datos desde la nube Ubidots a una placa de desarrollo chipKIT™ Uno32™ utilizando un chipKIT Wi-Fi® Shield. Nuestro ejemplo supone que hay un contador de personas que envía datos a Ubidots , después de lo cual nuestro dispositivo chipKIT leerá el último valor del contador y lo mostrará en una matriz de LED. Tenga en cuenta que la memoria y la potencia de procesamiento de la placa chipKIT nos permitieron controlar las matrices de LED y al mismo tiempo poder sondear la nube Ubidots , como se muestra a continuación:

No podríamos haber logrado esta cantidad de procesamiento con otras placas similares a Arduino®. Lea nuestro artículo " Enviando datos a una placa chipKIT con un LED Maxtix " para obtener más información sobre cómo se construyó este proyecto.

Soporte para su proyecto de detección

Ubidots es una plataforma de desarrollo de aplicaciones basada en la nube que no solo se adhiere al estándar web (HTTP), sino que está diseñada específicamente para IoT y proporciona un amplio conjunto de funciones API que los desarrolladores pueden comprender .

Además, trabajamos estrechamente con nuestros usuarios para implementar interfaces API específicas del cliente que se adapten a sus necesidades, desde puntos finales TCP/UDP tradicionales que transmiten datos binarios hasta protocolos más avanzados como MQTT o CoAP.

Al desarrollar proyectos para IoT , los ingenieros integrados esperan un backend robusto para almacenar datos de sensores, la capacidad de realizar tareas como cálculos matemáticos u operaciones estadísticas sobre esos datos, la capacidad de activar alertas o enlaces web basados ​​en lecturas de sensores y, por supuesto, , la capacidad de crear interfaces fáciles de usar para sus clientes finales. Todos estos son servicios que Ubidots brinda para ayudarlo a capturar, almacenar y darle sentido a su proyecto de detección.

Para comenzar a resolver problemas con Internet de las cosas hoy, simplemente cree una cuenta Ubidots y envíe sin esfuerzo sus datos a la plataforma de desarrollo de aplicaciones IoT Ubidots para desarrollar, visualizar e implementar su aplicación de resolución de problemas hoy.