IoT (Internet of Things) es un vocablo que se usa mucho hoy en día en internet, y simple y llanamente, es algo que ya ha existido desde hace tiempo. Lo que se intenta ahora es simplificarlo para que el usuario de a pie, pueda usarlo con sus gadgets, desde su casa.
¿Qué es?
IoT consiste en la centralización de datos de máquinas, equipos, sensores y o cualquier medio capaz de comunicarse a través de internet, en una base de datos central, única o redundante, para su posterior tratamiento y visualización. Digo que siempre ha sido posible, dado que industrialmente, las comunicaciones han avanzado mucho, llegando incluso a unificarse en tecnologías tales como el OPC. En base a este tipo de comunicaciones, aparecen diferentes tipos de redes, tales como la IIoT (Industrial Internet of Things), aplicado como su nombre dice, a elementos industriales.
MQTT
MQTT es un protocolo utilizado normalmente para IoT, pero el IoT no tiene por qué usar únicamente dicho protocolo. Hablaremos de MQTT porque viene a ser muy útil para equipos de bajo consumo, o con poca memoria. Digamos que si queremos domotizar nuestra casa con la ayuda de varios Arduinos y una Raspberry Pi, para no ahogar a los equipos con flujos redundantes de conmunicación, el protocolo MQTT miniminiza el uso de recursos, y también, las líneas de programación necesarias.
Qué ha sucedido con IoT, pues que parte desde el diseño del hardware, pudiendo el usuario usar equipos básicos y fácilmente programables, tal y como son las famosas tarjetas Arduino e incluso equipos ARM como Raspberry Pi. Además, se está llevando a que la comunicación sea mediante MQTT (Message Queue Telemetry Transport), por tratarse de un protocolo muy ligero.

Arquitectura
MQTT es un protocolo utilizado normalmente para IoT, pero el IoT no tiene por qué usar únicamente dicho protocolo. Hablaremos de MQTT porque viene a ser muy útil para equipos de bajo consumo, o con poca memoria. Digamos que si queremos domotizar nuestra casa con la ayuda de varios Arduinos y una Raspberry Pi, para no ahogar a los equipos con flujos redundantes de conmunicación, el protocolo MQTT miniminiza el uso de recursos, y también, las líneas de programación necesarias.
La arquitectura de MQTT se centraliza en lo que denominan Broker, que viene a ser un programa servidor, que recoje y envía datos entre los equipos conectados a él. De esta manera, un equipo para centralizar sus datos en el servidor central (broker), ha de publicarlos. Para poder trabajar con los datos almacenados en el broker, será necesario subscribirse. De esta manera, el único equipo que ha de mantener una IP o nombre de dominio (DNS) fijo, será el servidor.

Ejemplos de uso
IoT puede ser usado en muchos ejemplos, pero para que todos nos entendamos, veremos cómo se le aplicaría a una casa, de manera genérica. Ampliaremos el ejemplo en posteriores posts.
Primero, necesitamos un servidor, un broker, para lo que podremos usar Mosquitto. Se puede instalar en una máquina virtual o en un equipo cualquiera, incluyendo aquellos con procesador ARM.
A continuación necesitamos definir nuestros clientes, que pueden ser tarjetas Arduino (por ejemplo, Arduino UNO) y una Raspberry PI. Lo que queremos es disponer de un sensor de humedad para el jardín y un actuador para abrir o cerrar la válvula de riego. A parte, disponer de sensores de suelo mojado en baños, para activar alarmas por derrame (grifos abiertos), sensor de humos, sensor de luz (externo e interno) para regular las lamas de nuestras persianas y mantener la correcta luminosidad. Sensor de temperatura para controlar nuestro equipo AC.
Se pueden incluir muchos más ejemplos de actuadores y sensores, como por ejemplo, un relé que permita encenderse a la lavadora en una hora programada, cámaras de vigilancia, etc..

De esta manera, los sensores los uniríamos a los Arduinos. En éstos, se recoge la señal y se acondiciona, con el escalado necesario.
A continuación se transmitiría a una Raspberry PI central, que recogería los datos, y serviría de acceso intermedio. Se le puede añadir una pantalla táctil, o configurar un pequeño servidor web, para poder visualizar y actuar sobre los equipos desde la red local.
Finalmente, la Raspberry PI, se comunica con un broker externo a la red (o no, si disponemos de un servidor con salida a la red en nuestra red local), con el que mantiene una comunicación publicar-subscripción. Este broker dispone de un acceso web, al que se puede acceder con cualquier equipo, y poder tener el mismo control que desde dentro de nuestra red local.
Casos mayores.
El ejemplo anterior se queda un poco corto para lo que realmente significa el uso de IoT, dado que con nuestra Raspberry Pi conectada a internet, ya tendríamos las mismas capacidades. Sin embargo imaginemos que trabajamos con un concerje, en un edificio de multiples plantas y pisos por planta. Imaginemos que sólo lo necesario, como las alarmas por humos o derrames de cada uno de los pisos, estén centralizados en este broker. Esto significaría que aunque nosotros, como usuarios dueños, podemos acceder a nuestra Raspberry PI en cualquier momento para actuar o visualizar los datos de nuestro apartamento. Pero todas y cada una de las Raspberry PI instaladas en cada una de los pisos estarían enviando información importante a un único sitio, y que por tanto, en caso de alarma, nuestro concerje podría actuar de manera inmediata.
Conclusión
Luego, esto crece y crece, si disponemos de una casa y una oficina en diferentes direcciones. Si queremos ponerle GPS al vehículo de los niños. Si tenemos una empresa que lleva servicios de diferentes domicilios u equipos, y queremos centralizar la información del estado en todo momento. Bueno, y así hasta que vuestra imaginación termine.
Profundizaremos más en cada uno de los apartados que compone ésta topología, ya sea en tutoriales o con más artículos informativos. Sólo preguntad y pedid a través de nuestros comentarios o de nuestra página de contacto.