Cada día es más común encontrar equipos electrónicos informando el estado en el que se encuentran, o que son controlados remotamente. esto es gracias a la “iot” o “internet de las cosas”. de ahí, la importancia de conocer cómo funciona y como se puede implementar en algún equipo o proyecto electrónico. hay varias técnicas para implementar “IoT” en los equipos electrónicos, pero una de las más usadas es el protocolo de mensajes “mqtt”. en este apartado aprenderemos la base para entender e implementar IoT en equipos electrónicos.
MQTT (Message Queuing Telemetry Transport) es un protocolo para trasportar mensajes, usando la internet como medio de comunicación. Este protocolo está dirigido a la comunicación entre dispositivos o equipos electrónicos, por eso es común relacionarlo con la sigla: “M2M”, significando comunicación: “Maquina a Maquina”, es decir, enviar y recibir mensajes entre maquinas o equipos electrónicos. Sobre el protocolo MQTT y otros protocolos que usan la internet, está siendo construida la: “Internet de las Cosas” o IoT, las cuales nos permiten recibir y enviar mensajes e información entre equipos electrónicos. Para entender cómo funciona la: “Internet de la Cosas” o “IoT”, es necesario entender cómo funcionan las redes de computador.
Cuando aparecieron las primeras computadoras, estas no se comunicaban entre sí. Para pasar información de una computadora a otra, las personas usaban cintas o discos magnéticos (Diskettes). Las computadoras no tenían una interface o puerto que permitiese la comunicación entre computadoras. Así, cada computador era un equipo independiente, como se muestra en la siguiente figura:
Cuando aparecieron las primeras redes, estas permitían la comunicación entre computadoras, pero eran del tipo bus, es decir que un cable las unía entre si como mostrado en la siguiente imagen:
El cable usado para unir los computadores era del tipo coaxial y esta red tenía un inconveniente: si el cable se desconectaba en alguno parte, la red, no se comunicaba con todas las computadoras, por ser del tipo serie. Para solucionar este problema aparecieron los switch o concentradores de red, los cual permiten hacer una red y si un computador o su cable de red se desconecta, los demás computadores no son afectados. La siguiente imagen muestra cómo se conectan los computadores a un switch:
Los cables usados en esta red son del tipo par trenzado y su principal protocolo de comunicación es la Ethernet. Así, surgieron las primeras redes cableadas locales, es decir, los computadores estaban conectados en un mismo local, como: una casa, un edificio, una empresa. Por este motivo estas redes son conocidas como redes LAN (Local Area Network), significando, redes de área local. La siguiente imagen muestra un switch o concentrador el cual recibe los cables de red y maneja la recepción y transmisión de paquetes de datos para los computadores que forman la red:
Los switches se pueden encontrar de diferentes tamaños, según la cantidad de conectores que puede recibir. Los conectores son conocidos como RJ45. La siguiente figura muestra un conector RJ45 y el cable par trenzado usado para las conexiones LAN:
Cada conector en el swicth tiene un puerto para recibir (Rx) datos y otro para transmitir (Tx) datos. Podemos observar que el transmisor de datos va conectado al receptor del otro lado. Por cada línea de comunicación, son usados dos cables en forma trenzada. La siguiente figura muestra cómo van conectados los computadores al swicht:
Existen muchos tipos y categorías de cables para hacer la conexión entre el computador y el switch, pero lo principal es entender cómo se comunican físicamente. En las primeras redes, donde se usaban cables coaxiales, solo se podía o transmitir o recibir datos (half-duplex), ya con el switch se puede trasmitir y recibir datos al mismo tiempo (full-duplex) como muestra la siguiente imagen:
En la mayoría de casas, negocios, empresas, industrias, etc, se comenzaron a formar redes de área local (LAN) y comenzó la necesidad de comunicarse entre estas redes locales. Es cuando surge el protocolo de internet el cual permite la comunicación entre redes LAN ubicadas en diferentes partes del mundo. La internet es una red WAN (Wide Area Network) o Red de área amplia. Esta red comunica computadores a nivel mundial y usa un protocola llamado “IP” o Protocolo de Internet. Para conectar redes locales a la internet es necesario usar un router o enrutador el cual es un equipo electrónico encargado de conectar redes locales LAN diferentes. La siguiente figura muestra el uso del router para conectarse a internet:
Los routers normalmente son fornecidos por las empresas que prestan el servicio de internet. La siguiente figura muestra un router:
Con el avance de la tecnología, la mayoría de computadoras comenzaron a incorporar un puerto de red inalámbrico o WiFi (Wireless Fidelity) el cual permite la comunicación en la red local LAN de forma inalámbrica. Para esto en necesario tener un equipo electrónico llamado: “Access Point” o punto de acceso. La siguiente figura muestra una red local LAN, conectada vía WiFi:
A nivel de datos, el protocolo entre una red local LAN cableada y una red local LAN WiFi, no cambia, es decir se siguen usando los mismos protocolos. Aquí es donde comienza a ser usada la internet y la tarjeta microbit para hacer proyectos con internet de las cosas o “IoT”. Como la tarjeta microbit tiene un puerto Bluetooth, podemos usar este para comunicarnos con un teléfono celular y conectar el teléfono celular a la internet a través de la conexión de red WiFi, como mostrado en la siguiente imagen:
Un “switch” y un “access point” cumplen la misma función, es decir permiten la interconexión de equipos o computadores a una red local LAN. La mayoría de “Access Point” incluyen también un “switch” y así, es posible interconectar a la red local: equipos vía onda de radio (Wireless) y también vía cable, como muestra la siguiente figura:
Redes locales LAN Wireless y cableadas, pueden interconectarse por medio de internet, sin conflicto. Pero es necesario un protocolo que separe las redes locales de las redes amplias o mundiales. Este protocolo es conocido como: “IP” o “Protocolo de Internet”, el cual se basa en direcciones de 32 bits. Las direcciones IP están divididas en los siguientes rangos:
IP Clase A – Redes grandes.
IP Clase B – Redes medianas.
IP Clase C – Redes pequeñas.
IP Clase D – Multicast.
IP Clase E – Investigación.
Con un numero de 32 bit, podemos tener hasta 4294967295 direcciones IP, como muestra la siguiente figura:
La siguiente figura muestra la cantidad de direcciones IP para cada clase.
Desde el punto de vista de la “cantidad” de direcciones IP destinadas a cada clase podemos observar la siguiente imagen:
Para mejor manejar las direcciones IP, estas no se manejan en notación decimal. Como las IP tienen 32 bits, es decir 4 bytes, ya que cada byte tiene 8 bits, es más fácil manejarlas por byte. Así, las direcciones IP están dividas en 4 bytes, como muestra la siguiente figura:
Con cada byte (8 bits) podemos representar números decimales de 0 hasta 255. Así, es más fácil manejar y recordar los números IP, como muestra la siguiente imagen:
La siguiente tabla muestra el rango de números decimales que se pueden representar con bits. Como la dirección IP se ha dividido en 4 octetos (byte), entonces los números que se pueden representar van de 0 hasta 255:
Esta tabla muestra más en detalle el rango de números decimales que se pueden representar con bits:
Entonces, pasando a la notación IP, los rangos para las clases serían los siguientes:
Para el caso de internet, existe otra clasificación de las direcciones IP, las cuales son: Públicas y privadas. Para la red clase D, que es la que se usa en las casas y pequeñas empresas, las direcciones IP privadas van desde: 192.168.0.0.0 hasta 192.168.255.255. Los routers saben o distinguen entre direcciones privadas y públicas, así, saben hacia donde deben enviar un paquete de datos cuando este viaja por la red. La siguiente figura muestra un ejemplo de red clásico de internet donde hay: switch, access point y routers:
La siguiente figura muestra tres redes conectadas a internet a través de sus routers. Así, los routers (también llamdos: “gateway” o puerta de enlace) tienen direcciones públicas, pero los computadores dentro de cada red, tiene direcciones privadas. Hay muchos tipos de redes que un router pude intercomunicar, como redes privadas, redes públicas, o entre redes privadas y públicas. Los routers necesitan tener dos tarjetas de red para poder comunicar o enlazar dos redes. Los routers tienen tablas de direcciones IP que le indican hacia donde encaminar un paquete de datos. El router hace un analice de la dirección IP, pues en esta dirección va información de la red y el computador hacia dónde dirigir el paquete de datos.
En redes existe el concepto de servidor. Los servidores son computadores corriendo programas que aceptan muchas conexiones y prestan un servicio en particular. Por ejemplo, un computador puede tener un servidor de páginas webs, otro puede tener un servidor de banco de datos, otro puede tener un servidor bróker para mensajes MQTT, como mostrado en la siguiente figura:
Lo brokers son servidores para mensajes MQTT usados para internet de las cosas o IoT. Un servidor puede prestar varios servicios a la vez. Observa en la siguiente figura como una de las computadoras es servidor web y servidor de banco de datos. La otra tiene el bróker para mensaje MQTT:
Cuando un equipo electrónico envía un dato al bróker MQTT, se le llama: “publicador”. El mensaje enviado pasa por el swicht o access point, luego va al router y pasa a la internet. Como el mensaje lleva a que computador debe llegar el mensaje, los routers se encargan de hacerlo llegar a su destino. Así, el mensaje es recibido en el router correspondiente y recibido en el computador que tenga instalado el bróker MQTT. La siguiente figura muestra este proceso:
Cuando algún equipo electrónico quiere leer el mensaje del bróker, se le llama: “suscriptor”. Así, cuando alguien se suscribe al bróker, recibirá los mensajes y los podrá leer. Observa la siguiente figura:
En el protocolo MQTT, son usados los términos: “publicador” y “suscriptor” para indicar al equipo que envía el mensaje y el equipo que lee el mensaje como se muestra en la siguiente figura:
Observa como los mensajes viajan por internet usando los switches, Access point y routers. Las empresas que prestan el servicio de internet, normalmente suministran un equipo para acceso a internet, el cual incluye los tres equipos en uno solo, como se muestra en la siguiente figura:
Entendido la anterior parte, es ahora necesario entender lo que viaja por estos equipos electrónico (computadores, dispositivos, celulares, tablets, switchs, Access point, routers). Los datos que viajan por la internet, son llamados “paquetes o frames de datos”. Estos paquetes de datos pueden transportar: cadenas de texto, música, fotos, videos. También, pueden transportar datos como temperatura, humedad, estados de pines de entrada/salida de un microcontrolador. Estos últimos son los usados en internet de las cosas (IoT). Cada paquete de datos que viaja por la internet tiene el siguiente formato:
Los datos pueden ser diagramados en un datagrama, es decir: un diagrama de los datos. Observa en el datagrama que hay una versión, una longitud para la cabecera (head) del datagrama. Una longitud total para el paquete completo de datos, Identificadores, un tiempo de vida (TTL) para que el paquete llegue a su destino, un “checksum” para verificar que los datos recibidos estén intactos, una dirección IP de origen, una dirección IP de destino, una parte opcional para datos extras que el paquete tenga que manejar y finalmente los datos del usuario.
Los paquetes de datos son recibidos y enviados por el protocolo TCP (Transmission Control Protocol) o Protocolo de control de transmisión. Este protocolo es el encargado de que los paquetes sean enviados y recibidos correctamente. El protocolo IP, se encarde de verificar las direcciones de los computadores asignadas en la red. Estos dos protocolos trabajan juntos cuando un paquete de datos es enviado por internet, por eso es muy común decir que el protocolo de internet es el: “TCP/IP” La siguiente figura muestra el modelo de protocolo TCP/IP:
Entendido lo que hace la capa de acceso físico, el protocolo IP y el protocolo TCP, solo queda la capa de la aplicación. Las aplicaciones son las que usan toda la infraestructura de la internet para enviar y recibir datos. Como ejemplo de aplicaciones tenemos las páginas web (HTML), el transporte de archivos (FTP), el servicio de mensajería MQTT, etc. Observa la siguiente figura:
Como un computador puede tener varios programas servidor corriendo al mismo tiempo, el sistema operativo necesita algún mecanismo para saber a dónde dirigir un paquete de datos que llego por la red. Para saber esto, el sistema operativo usa el concepto de “puerto” o “socket”. Un computador puede tener hasta 65.536 puertos. Esto se debe a que son usados dos bytes para el puerto en los protocolos de internet. La siguiente figura muestra algunos de los puertos comúnmente usados para aplicaciones en un computador:
Ya centrados en el protocolo MQTT, podemos observar que el usa la internet para enviar y recibir mensajes. Como ya fueron explicado las bases de internet, nos queda por entender el protocolo MQTT, como se muestra en la siguiente figura:
Los mensajes MQTT están formados por dos partes:
1 - El tema o “tópico”.
2 – El valor.
Observa en el siguiente ejemplo como un automóvil publica la velocidad a la que se desplaza. El “tópico” es “speed”, el valor es 70. Otros dispositivos se suscriben a ese tópico y reciben el valor de 70:
Aquí hay otro ejemplo con la tarjeta microbit. La tarjeta microbit envía la temperatura al teléfono celular, el celular publica con el tópico: “temperatura”. El valor del tópico es 22. Este valor es enviado al bróker MQTT. Los que deseen leer este valor, deben suscribirse al “tópico” temperatura y van a recibir el valor: “22”. Observa la siguiente figura:
La siguiente figura muestra el formato del protocolo MQTT:
Los tópicos (también llamados: “temas”) pueden ser organizados en una forma de árbol muy similar a como se organizan los archivos en un computador. ¿Qué pasa si tengo dos o más sensores de temperatura para publicar al bróker? Se pueden organizar en “tópicos” o “temas”, así:
casa/cocina/temperatura
casa/habitación/temperatura
Es importante entender que quien envía datos al bróker se llama: “publicador” y los que leen datos del bróker se llaman: “suscriptores”. También, que el servicio de mensajes MQTT, es formado: por el tópico y su respectivo valor. Para saber más se puede visitar la página: “mqtt.org”, la cual pertenece a una organización encargada de promover el protocolo MQTT, como muestra la siguiente imagen:
Si presionas en el menú: “Software” de esta página, se dirigirá a una página, donde encuentras: brokers que tú puedes instalar en tu computador o en una computara conectada a internet, brokers de prueba gratuitos y pagos que ya están corriendo en la internet y que puedes usar para hacer pruebas o para hacer proyectos, librerías listas para usar con tu lenguaje de programación favorito, herramientas o programas para explorar brokers, etc. Observa en la siguiente figura, las opciones en la página: “software”:
En el menú: “Herramientas y Aplicaciones”, hay una opción llamada: “herramientas de escritorio”, ahí, se encuentra un ítem llamado: “MQTT Explorer”, el cual es un software para ver “tópicos y valores” de algún bróker instalado en algún computador. La siguiente imagen muestra la aplicación: “MQTT Explorer”, donde permite hacer las conexiones a brokers:
Una vez conectado al bróker, la aplicación te permite observar los tópicos y valores alojados en él, como muestra la siguiente figura:
Uno de los brókeres gratuitos más usado lo puedes encontrar en: “test.mosquitto.org”, en la puerta: “1883”, como se muestra a continuación:
Para incluir MQTT en los proyectos o equipos electrónicos es necesario usar una librería o biblioteca que maneje este protocolo. En el menú: “Software/Bibliotecas Cliente”, encontraras librerías listas para casi todos los lenguajes de programación más populares como: “c, c++, java, javascript, Python, etc”. También, hay una librería para Arduino. La siguiente imagen muestra un código ejemplo en javascript, usado en páginas web, para hacer conexión a un bróker y hacer una publicación. Observa que está publicando en el tópico: “presence” el valor: “hello!”.
La siguiente imagen muestra un código ejemplo para hacer una suscripción a un bróker. Observa que se está suscribiendo al tópico: “presence”.
Como la tarjeta microbit se puede conectar a un teléfono celular es necesario aprender a programar en ellos MQTT, como se muestra en la siguiente imagen:
Para el desarrollo de aplicaciones MQTT en teléfonos celulares se puede usar el ambiente de desarrollo: “app inventor”, el cual, es de uso gratuito y lo puede encontrar en la internet. La siguiente es la página inicial de “app inventor”:
Por ser una aplicación instalada en la nube de internet, es necesario entrar con un email. La siguiente es la interface de desarrollo de: “app inventor”:
La aplicación: “App inventor” no tiene en su paleta de componentes, funciones para el protocolo MQTT, por lo que es necesario bajar una de internet e instalarla en la opción: “Extension”, como muestra la siguiente imagen:
Para encontrar la extensión: MQTT para “app” inventor, digite en algún buscador de internet, las siguientes palabras:
“paho mqtt client app inventor 2”
Esto te llevara a una página donde puedes hacer el download de la extensión. Una vez instalada la extensión MQTT, podes tener las funciones en bloques lista para su uso, como vemos en la siguiente imagen:
Como podemos observar es fácil el uso de IoT en la práctica usando MQTT. Existen otros modos de hacer IoT, como: sockets, websockets, API RESTful, banco de datos, etc. Esto abre un universo de posibilidades a los equipos electrónicos, conectarse a la internet de las cosas. Queda imaginar y probar como usarla en sus proyectos.