Cómo elegir el protocolo adecuado para enviar datos a dispositivos remotos

Agustín Peláez
· 4 minutos 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 solo de millones de cosas que nos hablan; también, y aún más importante, 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 intuitiva ayuda a la tienda a analizar el comportamiento de los compradores en tiempo real, comparando el rendimiento de varias tiendas o viendo cómo cambian las tasas de visitantes a clientes con el tiempo, especialmente al lanzar una campaña de marketing.

Esta solución es, de hecho, 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 según la cantidad de personas que pasan frente a ella, enviar códigos promocionales a los teléfonos de los compradores según su género y edad, o incluso manipular las luces de la tienda para crear un ambiente específico. Poder controlar dispositivos sin duda 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 el IoT. Tomar medidas basadas en este ciclo de retroalimentación permitirá que el IoT alcance su máximo potencial.

Comunicación bidireccional para el 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. ¿A qué se debe esto? Internet se diseñó originalmente con un modelo cliente-servidor, donde el cliente siempre iniciaba la solicitud. Hasta ahora, esto ha permitido que los dispositivos inicien la comunicación siempre que necesiten enviar datos a la nube. Pero ¿qué ocurre si el servidor necesita enviar datos a un cliente sin que este realice una solicitud previa? Los desarrolladores web han desarrollado algunas técnicas para superar este desafío. Aquí presentamos tres opciones que consideramos más fáciles de transportar al mundo integrado.

La forma más básica de resolver este problema de comunicación se denomina 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 de codificar, aunque no se recomienda si se necesita notificar a un dispositivo en tiempo real.

La siguiente opción es el sondeo largo. En este caso, el cliente realiza la solicitud y el servidor no responde hasta que tenga algo que enviar. Esto permite enviar notificaciones push en tiempo real desde la nube a los dispositivos, aunque requiere que el dispositivo mantenga la conexión abierta mientras esté a la escucha del servidor. Esta técnica consume más energía y también conlleva el riesgo de pérdida de conexión. Consideremos el caso de un dispositivo que controla remotamente la puerta de un camión. Si se realiza una solicitud de sondeo largo y el camión entra en un túnel, la conexión móvil se pierde. El dispositivo necesitará lógica adicional para cancelar la conexión bloqueada y abrir una nueva.

Una tercera opción es utilizar protocolos más recientes, como CoAp o MQTT, por ejemplo, diseñados para ofrecer baja latencia, paquetes de pequeño tamaño y una comunicación estable en redes débiles. Estos protocolos proporcionan un canal de comunicación bidireccional que, a su vez, admite notificaciones push. Esto los convierte en una buena opción para proyectos IoT que requieren la capacidad de controlar dispositivos conectados en tiempo real. La única desventaja podría ser la falta de bibliotecas de firmware y ejemplos para dispositivos integrados, que son mucho más abundantes para conexiones basadas en HTTP.

La elección del protocolo adecuado dependerá de la aplicación y de la frecuencia con la que necesite comunicarse con un dispositivo. En el proyecto de ejemplo que se describe a continuación, se optó por un sondeo corto porque los datos deben actualizarse solo cada minuto y porque gestionar la matriz LED dejando un zócalo abierto requeriría mayor potencia de procesamiento.

Práctica práctica

En este ejemplo, queríamos explorar cómo usar el método de sondeo corto para enviar datos desde la nube Ubidots a una placa de desarrollo chipKIT™ Uno32™ mediante un chipKIT Wi-Fi® Shield. Nuestro ejemplo asume que hay un contador de personas que envía datos a Ubidots, tras lo cual nuestro dispositivo chipKIT leerá el último valor del contador y lo mostrará en una matriz de LED. Cabe destacar que la memoria y la capacidad de procesamiento de la placa chipKIT nos permitieron controlar las matrices de LED a la vez que sondeamos la nube Ubidots , como se muestra a continuación:

No habríamos podido lograr esta cantidad de procesamiento con otras placas tipo Arduino®. Lee nuestro artículo " Transferencia de datos a una placa chipKIT con un LED Maxtix " para más información sobre cómo se desarrolló este proyecto.

Apoyo 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 en estrecha colaboración 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 el IoT, los ingenieros de sistemas embebidos esperan un backend robusto para almacenar datos de sensores, la capacidad de realizar tareas como cálculos matemáticos o operaciones estadísticas con esos datos, la capacidad de activar alertas o webhooks basados ​​en las lecturas de los sensores y, por supuesto, la capacidad de crear interfaces intuitivas para sus clientes finales. Todos estos son servicios que Ubidots ofrece para ayudarle a capturar, almacenar y comprender su proyecto de detección.

Para comenzar a resolver problemas con la 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 mismo.