El “Internet de las Cosas« necesita
protocolos estándar”. Esta es una afirmación en la que parece que todos estamos
de acuerdo, pero el tiempo pasa y no acaba de alzarse ninguno claramente sobre
los demás. De hecho, continúan saliendo nuevos protocolos.
Quizá lo que no tenga sentido sea
la obsesión por encontrar a uno todopoderoso en el que confiar ciegamente y la
respuesta pase por elegir el que más se ajuste a las necesidades a las que nos
enfrentemos en cada ocasión.
Vamos a hablar sobre los protocolos
más presentes en todas las discusiones sobre este tema:
MQTT
Actualmente estándar abierto, es un
protocolo de mensajería tipo publicación/suscripción muy ligero y pensado para
dispositivos alimentados con baterías ya que tiene un reducido consumo de
energía.
Está diseñado para redes de
comunicación poco fiables y es interesante comentar que posee tres modos de
funcionamiento o “calidad de servicio” (QoS) .
QoS0 (At most once): El modo menos
fiable pero también el más rápido. La publicación se envía pero no se recibe
confirmación.
QoS1 (At least once): Se asegura
que el mensaje es entregado al menos una vez, pero pueden recibirse duplicados.
QoS2 (Exactly once): El modo más
fiable y que más ancho de banda consume. Se controlan los duplicados para
garantizar que el mensaje es entregado una única vez.
A pesar de sus características,
MQTT puede suponer un problema para algunos dispositivos muy restrictivos, por
el hecho de ir sobre TCP y de manejar nombres de topics largos. Esto se
soluciona con la variante MQTT-SN que utiliza UDP y soporta indexación de
nombres de topics.
REST
HTTP y REST es muy útil para la
mayoría de servicios y aplicaciones web, gateways y dispositivos. Es
ampliamente utilizado y sencillo de implementar lo que facilita y acelera el
desarrollo de muchos servicios en el internet de las cosas.
Se puede utilizar de una forma muy
simple, por ejemplo, para el intercambio de documentos JSON entre cualquier
plataforma y tiene la ventaja de que un gran número de aplicaciones ya están
desarrolladas utilizando esta tecnología.
CoAP
Constrained Application Protocol,
CoAP, está diseñado para trasladar el modelo HTTP a dispositivos y redes
restrictivas.
Es UDP y los paquetes son mucho más
pequeños, pero mantiene la misma arquitectura cliente/servidor y soporta las
operaciones GET, PUT, POST y DELETE. Además extiende el modelo de request
añadiendo la función “observe” que permite al cliente seguir recibiendo cambios
de un recurso solicitado al servidor.
De manera similar al MQTT, en CoAP
se puede controlar la QoS marcando los mensajes como “confirmable” o
“nonconfirmable” lo que indica si el receptor debe devolver un “ack” o no.
Otras características interesantes
de CoAP son que soporta negociación de contenido (Content-Type) y que
proporciona un mecanismo de descubrimiento de recursos.
Otros protocolos de los que también
se suele hablar son ZeroMQ, XMPP, LWM2M, STOMP y AMQP.
Nuestra solución IoT Play, posee un
diseño modular basado en gateways que permite ampliar gradualmente el número de
protocolos compatibles. Actualmente implementamos MQTT, REST, CoAP, STOMP,
ZeroMQ, OpenWire y AMQP.
Como se puede observar, cada
protocolo tiene sus pros y sus contras. Si tuviéramos que recomendar alguno,
nosotros hemos tenido buena experiencia con REST y MQTT.
Bluetooth Low-Energy (BLE)
Bluetooth es bien conocido por los
usuarios móviles. Pero no hace mucho apareció un nuevo protocolo importante
para las aplicaciones que manejan Protocolos IoT: Bluetooth Low-Energy (BLE). También
llamados Bluetooth Smart. Esta tecnología es una base real para el IoT; ya que
es escalable y flexible para todas las innovaciones del mercado. Además, está
diseñado para reducir el consumo de energía.
Protocolo avanzado de Message Queue Server (AMQP)
El protocolo AMQP permite que las
aplicaciones cliente se comuniquen con el agente e interactúen con el modelo
AMQP. Este modelo tiene los siguientes tres componentes, que están conectados a
cadenas de procesamiento en el servidor para crear la funcionalidad deseada.
Intercambio: recibe mensajes de
aplicaciones basadas en publicadores y los enruta a “colas de mensajes”. Estas
son las que almacenan los mensajes hasta que puedan ser procesados de forma
segura por la aplicación cliente consumidora. Finalmente, la encuadernación
establece la relación entre la cola de mensajes y el intercambio.
Servicio de distribución de datos (DDS)
Este protocolo IoT para la
comunicación de máquina a máquina en tiempo real fue desarrollado por el Object
Management Group (OMG). Permite el intercambio de datos escalable. Este
funciona en tiempo real, es confiable,
de alto rendimiento e interoperable a través de la metodología de
publicación-suscripción. En comparación con los protocolos MQTT y CoAP IoT, DDS
utiliza una arquitectura sin intermediarios. Esto permite la multidifusión para
brindar QoS de alta calidad a las aplicaciones.
Elegir el tipo apropiado de
conectividad es una parte importante de cualquier proyecto de IoT. Dependiendo
de las necesidades de TI cada uno se adaptará de manera adecuada a sus futuros
desarrollos empresariales