Está en la página 1de 18

SEMANA 6 – TECNOLOGÍAS DE INTERNET

TECNOLOGÍAS DE INTERNET
SEMANA 6

Integración de aplicaciones IoT

Todos los derechos de autor son de la exclusiva propiedad de IACC o de los otorgantes de sus licencias. No está
permitido copiar, reproducir, reeditar, descargar, publicar, emitir, difundir, poner a disposición del público ni
IACC-2019
utilizar los contenidos para fines comerciales de ninguna clase.

1
SEMANA 6 – TECNOLOGÍAS DE INTERNET

OBJETIVOS ESPECÍFICOS

Analizar los protocolos de comunicación para la


integración de plataformas para las aplicaciones
basadas en la tecnología IoT.

IACC-2019

2
SEMANA 6 – TECNOLOGÍAS DE INTERNET

INTRODUCCIÓN ................................................................................................................................... 4
1. PROTOCOLOS DE COMUNICACIÓN ............................................................................................. 5
1.1. MQTT ............................................................................................................................... 5
1.2. JSON - LD ......................................................................................................................... 8
1.3. AWS - IoT ....................................................................................................................... 11
COMENTARIO FINAL.......................................................................................................................... 16
REFERENCIAS ..................................................................................................................................... 17

IACC-2019

3
SEMANA 6 – TECNOLOGÍAS DE INTERNET

INTRODUCCIÓN

Cuando se pretende comunicar un sistema Entre ellos destaca el MQTT (Message Queue
informático con otro a través de una red de Telemetry Transport), que se orienta
telecomunicaciones, es necesario que exista principalmente a la comunicación de
un conjunto de elementos físicos y lógicos sensores, debido al poco consumo de ancho
que permitan esta comunicación. de banda que este posee y el cual tiene una
característica transcendental: este es un
Hoy en día, la informática y las protocolo de aplicación con una topología
telecomunicaciones permiten la tipo estrella que en la actualidad es utilizado
interconexión de sistemas de igual o distinto por Facebook Messenger, tanto para Android
tipo, conectándose por medio de protocolos. como iPhone.

IACC-2019

4
SEMANA 6 – TECNOLOGÍAS DE INTERNET

1. PROTOCOLOS DE COMUNICACIÓN

1.1. MQTT
El MQTT (Message Queue Telemetry Transport) es un protocolo para el manejo de mensajes que
se basa en publicaciones – suscripciones de acuerdo con el estándar ISO. Específicamente, este
protocolo está diseñado para conexiones de ubicaciones remotas donde se requiere administrar
un ancho de banda limitado o una autenticación con código. La conexión que utiliza el MQTT es
M2M o machine to machine.

Se puede destacar que una de sus distinciones para IoT es que:



Este protocolo está orientado a la comunicación de sensores (tiene un bajo consumo de
ancho de banda).

Ejemplo:

La aplicación de Facebook Messenger tanto para Android o iPhone emplean este protocolo. La
arquitectura de MQTT sigue una topología de estrella, con un nodo central que hace de servidor o
broker y con una capacidad de hasta 10000 clientes. El broker es el encargado de gestionar la red y
de transmitir los mensajes; y para mantener activo el canal, los clientes mandan periódicamente
un paquete (PINGREQ) y esperan la respuesta del broker (PINGRESP). La comunicación puede ser
cifrada, entre otras muchas opciones.

Imagen 1. Topología estrella protocolo MQTT


Fuente: https://geekytheory.com/que-es-mqtt

IACC-2019

5
SEMANA 6 – TECNOLOGÍAS DE INTERNET

En el ejemplo, la comunicación se estructura en forma de tópicos o temas topics, donde un cliente


publica un mensaje y este mensaje crea nodos de todos los que se suscriben a él. Un topic se
representa mediante una cadena y tiene una estructura jerárquica. Cada jerarquía se separa con
'/'. Por ejemplo:

• "edificio2/planta7/sala2/raspberry1/temperatura"
• "/edificio1/planta1/sala6/arduino2/ruido".
• "/edificio2/planta30/piscina/arduino1/nivel_de_agua".

De esta forma, se pueden crear jerarquías de clientes que publican y reciben datos, como se
muestra en la imagen 2:

Imagen 2. Ejemplo de Estructura Jerárquica


Fuente: https://geekytheory.com/que-es-mqtt

De acuerdo con Yuan (2017):

Inicialmente, MQTT fue inventado y desarrollado por IBM a finales de los 90. Su

aplicación original era vincular sensores en oleoductos de petróleo a satélites. Tal

como sugiere su nombre, se trata de un protocolo de mensajería con soporte para

la comunicación asíncrona entre las partes. Un protocolo de sistema de mensajes

asíncrono separa al emisor y al receptor del mensaje tanto en el tiempo como en

IACC-2019

6
SEMANA 6 – TECNOLOGÍAS DE INTERNET

el espacio y, por lo tanto, es escalable en ambientes de red que no sean de

confianza. Pese a su nombre, no tiene nada que ver con colas de mensajes; en

realidad, utiliza un modelo de publicación y suscripción. A final de 2014, se

convirtió oficialmente en un patrón abierto OASIS, con soporte en los lenguajes de

programación populares, usando diversas implementaciones de software libre.

El modelo de publicación y de suscripción:

El protocolo MQTT define dos tipos de entidades en la red:

• El broker de mensajería y
• Numerosos clientes.

El broker es un servidor que recibe todos los mensajes de los clientes y, en seguida, redirige estos
mensajes a los clientes de destino relevantes. Un cliente es cualquier cosa que pueda interactuar
con el broker y recibir mensajes. Un cliente puede ser un sensor de IoT en campo o una aplicación
en un centro de datos que procesa datos de IoT.

El cliente se conecta al broker y puede suscribirse a cualquier "tema" de mensajería del broker. El
flujo es el que sigue:

• El cliente publica los mensajes en un tema, enviando el mensaje y el tema al broker.

• Después, el broker remite el mensaje a todos los clientes que se suscriben a este tema.

• Como los mensajes de MQTT se organizan por temas, el desarrollador de aplicaciones


tiene la flexibilidad de especificar que determinados clientes solo pueden interactuar con
determinados mensajes. Por ejemplo, los sensores publicarán sus lecturas en el tema
"sensor_data" y se suscribirán al tema "config_change". Las aplicaciones de
procesamiento de datos que guardan los datos del sensor en una base de datos se
suscribirán al tema "sensor_data".

• Una aplicación de consola administrativa podría recibir comandos del administrador del
sistema para ajustar las configuraciones de los sensores, tales como la sensibilidad y la
frecuencia de muestreo, y publicar dichos cambios en el tema "config_change".

IACC-2019

7
SEMANA 6 – TECNOLOGÍAS DE INTERNET

Imagen 3. El modelo de publicación y de suscripción de MQTT para sensores de IoT


Fuente: https://www.ibm.com/developerworks/ssa/library/iot-mqtt-why-good-for-iot/index.html

La imagen 3 representa el diagrama de flujo, donde se observan los mensajes de publicación y


suscripción para la información de los sensores usando un broker de MQTT, información de
almacenamiento y una consola de administrador.

Al mismo tiempo, MQTT es liviano. Tiene un encabezado simple para especificar el tipo de
mensaje, un tema basado en texto y, posteriormente, una carga útil binaria arbitraria. La
aplicación puede tener cualquier formato de datos para la carga útil, como JSON, XML, binario
cifrado o Base64, siempre que los clientes de destino puedan analizar la carga útil.

1.2. JSON - LD
Antes de definir lo que es JSON – LD, es importante tener claro que JSON es un formato de código
de datos de texto ligero para el intercambio de datos. Así, JSON es un subconjunto de la notación
literal de objetos de JavaScript, que es considerado hoy en día un formato de lenguaje
independiente, ya que es ampliamente usado como alternativa de XML.

IACC-2019

8
SEMANA 6 – TECNOLOGÍAS DE INTERNET

Por otro lado, JSON-LD (JavaScript Object Notation for Linked Data) es una forma de codificar o
desarrollar estructuras de datos de manera enlazada (LD = Linked Data). JSON-LD permite describir
o codificar datos que siguen esta recomendación del W3C.

El siguiente ejemplo permite describir a una persona una persona famosa (John Lennon) utilizando
JSON – LD:

1{
2 "@context": "https://json-ld.org/contexts/person.jsonld",
3 "@id": "http://dbpedia.org/resource/John_Lennon",
4 "name": "John Lennon",
5 "born": "1940-10-09",
6 "spouse": "http://dbpedia.org/resource/Cynthia_Lennon"
7}

La particularidad del código anterior es que tiene algo denominado @context (ver la línea 2), que
pareciera ser una URL a “algo”. Al abrir esa URL se encontrará algo como el código que se muestra
a continuación, que es llamado un “Schema” y que, en definitiva, es el conjunto de propiedades
que describen a una persona (Person).

Ejemplo Schema del contexto John Lennon:

1 {
2 "@context":
3 {
4 "Person": "http://xmlns.com/foaf/0.1/Person",
5 "xsd": "http://www.w3.org/2001/XMLSchema#",
6 "name": "http://xmlns.com/foaf/0.1/name",
7 "nickname": "http://xmlns.com/foaf/0.1/nick",
8 "affiliation": "http://schema.org/affiliation",
9 "depiction":
10 {
11 "@id": "http://xmlns.com/foaf/0.1/depiction",
12 "@type": "@id"
13 },
14 "image":
15 {
16 "@id": "http://xmlns.com/foaf/0.1/img",
17 "@type": "@id"
18 },

IACC-2019

9
SEMANA 6 – TECNOLOGÍAS DE INTERNET

19 "born":
20 {
21 "@id": "http://schema.org/birthDate",
22 "@type": "xsd:dateTime"
23 },
24 "child":
25 {
26 "@id": "http://schema.org/children",
27 "@type": "@id"
28 },
29 "colleague":
30 {
31 "@id": "http://schema.org/colleagues",
32 "@type": "@id"
33 },
34 "knows":
35 {
36 "@id": "http://xmlns.com/foaf/0.1/knows",
37 "@type": "@id"
38 },
39 "died":
40 {
41 "@id": "http://schema.org/deathDate",
42 "@type": "xsd:dateTime"
43 },
44 "email":
45 {
46 "@id": "http://xmlns.com/foaf/0.1/mbox",
47 "@type": "@id"
48 },
49 "familyName": "http://xmlns.com/foaf/0.1/familyName",
50 "givenName": "http://xmlns.com/foaf/0.1/givenName",
51 "gender": "http://schema.org/gender",
52 "homepage":
53 {
54 "@id": "http://xmlns.com/foaf/0.1/homepage",
55 "@type": "@id"
56 },
57 "honorificPrefix": "http://schema.org/honorificPrefix",
58 "honorificSuffix": "http://schema.org/honorificSuffix",
59 "jobTitle": "http://xmlns.com/foaf/0.1/title",
60 "nationality": "http://schema.org/nationality",
61 "parent":
62 {

IACC-2019

10
SEMANA 6 – TECNOLOGÍAS DE INTERNET

63 "@id": "http://schema.org/parent",
64 "@type": "@id"
65 },
66 "sibling":
67 {
68 "@id": "http://schema.org/sibling",
69 "@type": "@id"
70 },
71 "spouse":
72 {
73 "@id": "http://schema.org/spouse",
74 "@type": "@id"
75 },
76 "telephone": "http://schema.org/telephone",
77 "Address": "http://www.w3.org/2006/vcard/ns#Address",
78 "address": "http://www.w3.org/2006/vcard/ns#address",
79 "street": "http://www.w3.org/2006/vcard/ns#street-address",
80 "locality": "http://www.w3.org/2006/vcard/ns#locality",
81 "region": "http://www.w3.org/2006/vcard/ns#region",
82 "country": "http://www.w3.org/2006/vcard/ns#country",
83 "postalCode": "http://www.w3.org/2006/vcard/ns#postal-code"
84 }
85 }

JSON-LD es el formato recomendado por buscadores web como Google para proveer datos
enriquecidos que ellos puedan utilizar para mejorar la visualización de resultados, como lo indican
en las “Structured Data General Guidelines”.

1.3. AWS - IOT


La compañía Amazon se ha posicionado en la actualidad como la empresa de tecnología que lidera
en IoT. Uno de sus servicios más robustos es AWS IoT Core. De acuerdo con Amazon, este es un
servicio en la nube administrado que permite a los dispositivos conectados interactuar de manera
fácil y segura con las aplicaciones en la nube y otros dispositivos.

AWS IoT Core admite miles de millones de dispositivos y billones de mensajes, y es capaz de
procesarlos y direccionarlos a puntos de enlace de AWS y a otros dispositivos de manera fiable y
segura. Con AWS IoT Core, sus aplicaciones pueden realizar un seguimiento de todos los
dispositivos y comunicarse con ellos en todo momento, incluso cuando no están conectados.

IACC-2019

11
SEMANA 6 – TECNOLOGÍAS DE INTERNET

Además, AWS IoT Core facilita la utilización de servicios de AWS, como AWS Lambda, Amazon
Kinesis, Amazon S3, Amazon SageMaker, Amazon DynamoDB, Amazon CloudWatch, AWS
CloudTrail y Amazon QuickSight para crear aplicaciones de IoT que recopilen, procesen, analicen y
utilicen datos generados por dispositivos conectados sin tener que administrar ninguna
infraestructura.

Imagen 4. Conexión y administración de dispositivos en AWS


Fuente: https://aws.amazon.com/es/iot-core/

AWS IoT Core le permite conectar fácilmente dispositivos a la nube y a otros dispositivos. También
admite HTTP, WebSockets y MQTT; y es un protocolo de comunicación ligero, especialmente
diseñado para tolerar conexiones intermitentes, minimizar la huella de código en los dispositivos y
reducir los requisitos de ancho de banda de la red.

Asimismo, es compatible con otros protocolos personalizados y propios del sector, y los
dispositivos pueden comunicarse entre sí aunque utilicen protocolos distintos.

Imagen 5. Procesamiento y utilización de datos de dispositivos


Fuente: https://aws.amazon.com/es/iot-core/

IACC-2019

12
SEMANA 6 – TECNOLOGÍAS DE INTERNET

Con AWS IoT Core se puede filtrar, transformar y utilizar datos de dispositivos sobre la marcha,
según las reglas empresariales que se hayan establecido. También se pueden actualizar las reglas
para implementar nuevas características de dispositivos y aplicaciones cuando lo desee. AWS IoT
Core facilita la utilización de servicios de AWS, como AWS Lambda, Amazon Kinesis, Amazon S3,
Amazon Machine Learning, Amazon DynamoDB, Amazon CloudWatch y Amazon Elasticsearch
Service para lograr aplicaciones de IoT incluso más eficientes.

En el siguiente enlace se profundiza sobre los avances de AWS


(Amazon Web Services) aplicado al internet de las cosas:

https://aws.amazon.com/es/iot/

De acuerdo con Amazon se pueden mencionar los diferentes componentes de AWS IoT:

• Gateway para dispositivos: Permite a los dispositivos comunicarse de forma segura y


eficaz con AWS IoT.

• Agente de mensajes: Proporciona un mecanismo seguro para que los dispositivos y las
aplicaciones de AWS IoT publiquen y reciban mensajes entre sí. Puede utilizar el protocolo
MQTT directamente, o MQTT sobre WebSocket para publicar y suscribirse. Puede utilizar
la interfaz HTTP REST para publicar.

• Motor de reglas: Proporciona funciones de procesamiento de mensajes y de integración


con otros servicios de AWS. Puede utilizar un lenguaje basado en SQL para seleccionar
datos de cargas de mensajes y procesar y enviar datos a otros servicios, como Amazon S3,
Amazon DynamoDB y AWS Lambda. También puede utilizar el agente de mensajes para
volver a publicar mensajes para otros suscriptores.

• Servicio de seguridad e identidad: Comparte la responsabilidad de la seguridad en la nube


de AWS. Los dispositivos deben proteger sus credenciales para enviar datos de forma
segura al agente de mensajes. El agente de mensajes y el motor de reglas utilizan las
características de seguridad de AWS para enviar datos de forma segura a dispositivos u
otros servicios de AWS.

IACC-2019

13
SEMANA 6 – TECNOLOGÍAS DE INTERNET

• Registro: Organiza los recursos asociados a cada dispositivo en la nube de AWS. Es


necesario registrar los dispositivos y asociar hasta tres atributos personalizados a cada
uno. También es posible asociar certificados e ID de cliente MQTT a cada dispositivo para
poder administrarlos y solucionar los problemas que presenten con mayor facilidad.

• Registro de grupos: Los grupos permiten administrar varios dispositivos a la vez


clasificándolos en grupos. También pueden contener otros grupos y crear una jerarquía de
grupos.

Cualquier acción que realice en un grupo principal se aplicará a sus grupos secundarios, así
como a todos los dispositivos incluidos en el grupo principal y en sus grupos secundarios.
Los permisos proporcionados a un grupo se aplicarán a todos los dispositivos del grupo y a
todos sus grupos secundarios.

• Sombra del dispositivo: Documento JSON utilizado para almacenar y recuperar


información del estado actual de un dispositivo.

• Servicio Device Shadow: Proporciona representaciones persistentes de los dispositivos en


la nube de AWS. Es posible publicar información de estado actualizada en una sombra de
un dispositivo y este puede sincronizar su estado cuando se conecte. Los dispositivos
también pueden publicar su estado actual en una sombra para que lo usen las aplicaciones
o los demás dispositivos.

• Servicio de aprovisionamiento de dispositivos: Le permite aprovisionar dispositivos


mediante una plantilla que describe los recursos necesarios para el dispositivo: un objeto,
un certificado y una o varias políticas.
Un objeto es una entrada en el registro que contiene atributos que describen un
dispositivo. Los dispositivos usan certificados para realizar la autenticación con AWS IoT.
Las políticas determinan qué operaciones pueden realizar los dispositivos en AWS IoT.
Las plantillas contienen variables que se sustituirán por los valores en un diccionario
(mapa). Puede usar la misma plantilla para aprovisionar varios dispositivos tan solo
pasando diferentes valores para las variables de la plantilla en el diccionario.

• Servicio de autenticación personalizado: Puede definir autorizadores personalizados para


permitirle administrar su propia estrategia de autenticación y autorización con un servicio
de autenticación personalizado y una función de Lambda.
Los autorizadores personalizados permiten a AWS IoT autenticar sus dispositivos y
autorizar operaciones mediante estrategias de autorización y autenticación de tokens al
portador.

IACC-2019

14
SEMANA 6 – TECNOLOGÍAS DE INTERNET

Los autorizadores personalizados pueden implementar varias estrategias de autenticación


(por ejemplo: verificación de JSON Web Token, llamada al proveedor de OAuth, etc.) y
deben devolver los documentos de la política que ha usado la puerta de enlace del
dispositivo para autorizar las operaciones de MQTT.

• Servicio de Jobs: Permite definir un conjunto de operaciones remotas que se envían a uno
o más dispositivos conectados a AWS IoT o que se ejecutan en uno o más de esos
dispositivos.
Por ejemplo, puede definir un trabajo que indique a un conjunto de dispositivos descargar
e instalar actualizaciones de firmware y aplicaciones, reiniciar, rotar certificados o realizar
operaciones remotas de solución de problemas.
Para crear un trabajo, se debe especificar una descripción de las operaciones remotas que
se van a realizar y una lista de destinos que deben realizarlas. Los destinos pueden ser
dispositivos individuales, grupos o ambos.

IACC-2019

15
SEMANA 6 – TECNOLOGÍAS DE INTERNET

COMENTARIO FINAL

Los protocolos como los MQTT responden a la problemática del creciente número de dispositivos
que harán su aparición en la red en los próximos años. De hecho, según un estudio Gartner, de
aquí a 2020 habrá casi 26.000 millones de objetos conectados.

Los MQTT responden también a las siguientes necesidades en la IoT, ya que están especialmente
adaptados para utilizar un ancho de banda mínimo, son ideales para utilizar redes inalámbricas, y
además de consumir muy poca energía, son muy rápidos y posibilitan un tiempo de respuesta
superior al resto de protocolos web actuales. También permiten una gran fiabilidad y, finalmente,
requieren de pocos recursos procesadores y memoria.

IACC-2019

16
SEMANA 6 – TECNOLOGÍAS DE INTERNET

REFERENCIAS

Yuan, M. (2017). Conociendo MQTT. Recuperado de:

https://www.ibm.com/developerworks/ssa/library/iot-mqtt-why-good-for-iot/index.html

Arriaga, A. (2018) ¿Qué es JSON-LD? Recuperado de: https://blog.webtraining.zone/que-es-json-

ld/

AWS (s. f.) ¿Qué es AWS IoT? Recuperado de:

https://docs.aws.amazon.com/es_es/iot/latest/developerguide/what-is-aws-iot.html

PARA REFERENCIAR ESTE DOCUMENTO, CONSIDERE:

IACC (2019). Integración de Aplicaciones IoT. Tecnologías de Internet. Semana 6.

IACC-2019

17
SEMANA 6 – TECNOLOGÍAS DE INTERNET

IACC-2019

18

También podría gustarte