Connectivitat IoT eficient i segura amb MQTT i passarel·les intel·ligents

  • MQTT ofereix missatgeria lleugera, fiable i segura basada en publicació/subscripció, ideal per a dispositius IoT amb recursos limitats i xarxes inestables.
  • Les passarel·les MQTT actuen com a pont entre sensors locals i plataformes cloud, traduint diversos protocols a MQTT i consolidant dades en un broker central.
  • L'arquitectura amb broker central facilita l'escalabilitat, el desacoblament entre el maquinari i el programari i la integració amb serveis d'anàlisi, Big Data i automatització.
  • MQTT s'utilitza de forma extensiva en indústria, LPWAN, logística, llars intel·ligents i automoció, cosa que demostra la seva maduresa i versatilitat en projectes IoT reals.

Internet de les coses MQTT

Quan es parla de connectar milions de dispositius IoT de manera fiable, lleugera i segura, el nom que sempre acaba sortint és el mateix: MQTT. Aquest protocol s'ha convertit en una peça clau perquè sensors, passarel·les industrials, dispositius domèstics intel·ligents i plataformes al núvol es comuniquin sense saturar la xarxa ni disparar el consum energètic.

Lluny de ser només “un altre protocol més”, MQTT encaixa com un guant en les necessitats reals de lInternet de les coses: xarxes inestables, amples de banda ridículs, maquinari molt limitat, entorns industrials exigents o aplicacions en temps gairebé real, com ara ciberfàbriques, telemetria energètica o domòtica avançada. A veure, amb calma i en detall, com funciona, quin paper juga en la connectivitat IoT, què és una passarel·la MQTT i en quins casos concrets té més sentit fer-lo servir davant d'altres opcions.

Què és MQTT i per què s'ha fet tan popular a IoT?

MQTT (Message Queuing Telemetry Transport) és un protocol de missatgeria lleuger i estàndard obert pensat específicament per a comunicació màquina a màquina (M2M) i, per extensió, per a Internet de les coses. El seu objectiu és molt clar: poder enviar i rebre dades entre dispositius encara que la xarxa sigui dolenta, l'amplada de banda sigui escassa i el dispositiu tingui molt poca memòria o potència de còmput.

A diferència del clàssic model client-servidor, MQTT utilitza una arquitectura de publicació/subscripció basada en un intermediari central anomenat broker. Els dispositius no es parlen directament entre si, sinó que publiquen missatges en determinats temes (topics) i se subscriuen als temes que els interessen. El broker s'encarrega de rebre tots aquests missatges, filtrar-los i lliurar-los als clients adequats.

Aquesta manera de treballar fa que MQTT sigui extremadament flexible i escalable. En lloc de tenir centenars o milers de connexions punt a punt difícils de gestionar, tot s'orquestra a través del broker, que pot gestionar des d'uns quants dispositius fins a milions, segons la implementació i els recursos disponibles.

Característiques tècniques clau de MQTT per a IoT

Protocol lleuger i eficient

Un dels motius principals pels quals MQTT arrasa a IoT és que és ridículament lleuger. La implementació al dispositiu pot ocupar molt poc codi i requerir molt escassos recursos, cosa que el fa ideal per a microcontroladors modestos, sensors de baix cost o equips alimentats per bateria.

Un missatge de control MQTT en la versió mínima pot arribar a tenir tan sols dos bytes de dades. A més, les capçaleres dels missatges són molt compactes, cosa que redueix al mínim l'overhead de comunicació. Aquest disseny és perfecte per a escenaris amb poc ample de banda o xarxes cares (com algunes xarxes cel·lulars o LPWAN), on cada byte compta.

Enfront de protocols més pesats, com HTTP amb peticions completes i capçaleres molt verboses, MQTT permet optimitzar al màxim l'ús de la xarxa, una mica crític quan hi ha milers de dispositius parlant cada pocs segons.

Model publicació/subscripció amb topics

MQTT es basa en un model de publicació/subscripció sobre topics, que són cadenes de text (en UTF-8) que organitzen la informació en nivells. Per exemple, en un habitatge intel·ligent podríem tenir:

  • casa/saló/temperatura
  • casa/cuina/fum
  • casa/garatge/porta

Un sensor de temperatura del saló publicaria les seves lectures al tema casa/saló/temperatura, mentre que una aplicació de monitoratge se subscriuria a aquest mateix topic per rebre tots els missatges que vagin arribant. D'aquesta manera, afegir nous dispositius o consumidors de dades és tan senzill com utilitzar els topics adequats, sense necessitat de canviar la infraestructura ja existent.

Aquest sistema, encara que no és exactament una cua de missatges clàssica, s'assembla força als models basats en cues: els dispositius generen missatges i els envien a un punt central (el broker), i després els sistemes de processament consumeixen aquestes dades segons les vostres necessitats. Això fa que sigui molt més fàcil escalar el sistema augmentant el nombre de consumidors sense tocar sensors.

Qualitat de servei (QoS) i fiabilitat

Molts dispositius IoT es connecten a través de xarxes amb alta latència, baix ample de banda i fiabilitat limitada, com a xarxes mòbils irregulars o enllaços sense fil saturats. MQTT incorpora una sèrie de mecanismes per assegurar el lliurament de missatges en aquest context.

El protocol defineix tres nivells de qualitat de servei (QoS):

  • QoS 0 – “com a màxim una vegada”: el missatge s'envia una sola vegada, sense confirmació. És la manera més ràpida i lleugera, però es pot perdre algun missatge.
  • QoS 1 – “almenys una vegada”: garanteix que el missatge arribi, encara que podria arribar duplicat. Es fa servir un sistema d'acknowledgements per assegurar el lliurament.
  • QoS 2 – “exactament una vegada”: és el nivell més robust. Assegura que cada missatge es lliuri una i només una vegada, usant un handshake de quatre fases. És una mica més pesat, però imprescindible en certs casos sensibles.

Gràcies a aquests nivells de QoS, MQTT es pot adaptar a diferents casos d'ús: des de telemetria on no passa res si es perd una dada puntual, fins a sistemes crítics on duplicar o perdre un missatge seria inacceptable.

Gestió de reconnexions i xarxes inestables

Un altre dels avantatges és que MQTT està pensat per entorns amb desconnexions freqüents. El protocol inclou funcions que redueixen el temps necessari perquè un dispositiu torni a connectar-se al broker, cosa que resulta essencial en xarxes cel·lulars o WiFi de qualitat dubtosa; millorar la connexió WiFi blindada pot complementar aquestes capacitats.

A més, el broker pot gestionar missatges retinguts, estats de sessió i altres característiques que permeten que els dispositius reprenguin la comunicació sense perdre el context cada cop que la xarxa cau i torna.

Seguretat i xifrat

A IoT, la seguretat no és opcional. MQTT incorpora suport per xifrat i autenticació recolzant-se en protocols moderns: es pot fer servir TLS 1.3 per xifrar el canal, autenticació mitjançant certificats client, OAuth i altres tècniques habituals en entorns empresarials i cloud.

Això permet xifrar els missatges en trànsit i aplicar controls d'accés sobre qui pot publicar o subscriure's a determinats topics, protegint tant la confidencialitat com la integritat de la informació, especialment rellevant en entorns industrials, energètics o de salut.

Ampli suport en llenguatges i plataformes

MQTT compta amb implementacions madures de brokers i clients en multitud de llenguatges (Python, C, C++, Java, JavaScript, Go, etc.) i amb una comunitat molt activa. Això facilita que els desenvolupadors integrin dispositius IoT amb sistemes ja existents, bases de dades, eines de Big Data o serveis al núvol sense reinventar la roda.

Com que és un protocol de codi obert amb biblioteques molt provades, la corba d'aprenentatge és raonablement curta i el risc de problemes de compatibilitat es redueix, cosa que el fa molt atractiu per a projectes que van des de petits prototips fins a desplegaments massius.

El paper del broker MQTT a l'arquitectura IoT

El broker és el nucli de qualsevol arquitectura basada en MQTT. És el component que rep tots els missatges, els processa i els distribueix als clients subscrits als topics corresponents.

Entre les seves funcions principals hi ha:

  • Rebre informació publicada pels clients (sensors, passarel·les, aplicacions, etc.).
  • Decodificar i filtrar missatges segons topic, nivell de QoS o regles de seguretat.
  • Determinar quins clients hi estan interessats a cada missatge (segons les vostres subscripcions).
  • Transmetre els missatges als clients destí, respectant el QoS i les polítiques d'autorització.

Hi ha múltiples implementacions de broker, tant open source com a comercials. Un dels més coneguts és Mosquitto, molt utilitzat en entorns domèstics, makers i també en desplegaments més seriosos, que permet gestionar des d'uns pocs fins a milers de clients amb una configuració relativament senzilla.

MQTT a la pràctica: Arduino, ESP8266 i xarxes locals

Internet de les coses MQTT

En molts projectes de IoT casolans o semi-professionals, un escenari força típic consisteix a tenir un broker MQTT executant-se en una Raspberry Pi o un PC dins de la xarxa local, i diversos dispositius com Arduino amb l'app Arduino IoT Cloud Remote o ESP8266 connectats com a clients.

Per exemple, podeu tenir un Arduino amb un sensor de temperatura DHT22 publicant lectures periòdiques en un topic del tipus casa/saló/temperatura, mentre que un altre Arduino o una aplicació mòbil se subscriu a aquest mateix topic per mostrar la temperatura en temps real. El broker, en aquest cas Mosquitto, s'encarrega de rebre els missatges del primer Arduino i lliurar-los al segon, sense que aquests s'hagin de conèixer ni gestionar la connexió directa.

Aquesta arquitectura té un avantatge enorme: és escalable gairebé sense esforç. Podeu afegir més sensors, més consumidors de dades, connectar-los a bases de dades, sistemes de Machine Learning o panells de visualització sense modificar el comportament dels dispositius ja desplegats. Només cal jugar amb els topics i les subscripcions.

Per què MQTT i no simplement HTTP?

Un dubte molt habitual és si realment val la pena fer servir MQTT quan podries, en aparença, resoldre-ho tot amb peticions HTTP directes a un ESP8266 o similar, obrint un port al router i llest, o fins i tot amb WebSockets a Android.

La resposta és que, encara que tècnicament es pot, MQTT aporta diversos avantatges importants:

  • Menor latència mitjana i menys overhead en comunicacions freqüents, especialment amb missatges petits que s'envien cada pocs segons.
  • Pub/sub nadiu: no cal que el mòbil parli amb cada dispositiu directament; només ha de parlar amb el broker.
  • Gestió centralitzada de seguretat i autenticació al broker, en lloc de replicar lògica a cada dispositiu.
  • Facilitat per escalar: si demà passes de 5 a 500 dispositius, no necessites obrir 500 ports ni redissenyar tota la topologia.
  • Suport nadiu per a reconnexions i QoS pensant en xarxes inestables, cosa que HTTP no ofereix de sèrie.

En un escenari típic, la teva app mòbil es connectaria al broker MQTT (ja sigui dins de la LAN amb redirecció de ports, oa un broker al núvol), publicaria un missatge en un topic de control (per exemple casa/salon/llum/set), i l'ESP8266, subscrit a aquest topic, rebria l'ordre gairebé a l'instant. Només has d'exposar el broker, no cada dispositiu de la xarxa.

Respecte a serveis com io.adafruit.com i els seus intervals d'activació (cada 15 minuts a la versió gratuïta, cada 5 segons a la de pagament), es tracta de limitacions del servei concret, no del protocol MQTT en si. El propi protocol permet latències molt baixes; una altra cosa és que el proveïdor posi límits de freqüència dús.

Videotrucades i streaming en temps real amb WebRTC i SDKs
Article relacionat:
Videotrucades i streaming en temps real amb WebRTC i SDKs

MQTT Gateway: la passarel·la entre sensors i el núvol

Què és una passarel·la MQTT

L'anomenada “MQTT Gateway” o passarel·la MQTT és, en essència, un dispositiu intermediari entre els sensors o dispositius locals i la plataforma IoT o el broker MQTT. La seva funció principal és recollir dades en diferents protocols (per exemple, Bluetooth, sensors cablejats, Modbus, etc.), convertir-los a MQTT i enviar-los cap al núvol o cap a un broker central.

En molts casos, una porta d'enllaç MQTT s'implementa com una passarel·la Ethernet amb programari específic que actua com a client MQTT. Aquesta passarel·la pot tenir interfícies de ràdio, entrades i sortides industrials o connectivitat a busos de camp, i s'encarrega de traduir tot això al llenguatge MQTT per unificar-los.

Avantatges d'una passarel·la MQTT (inclosa Bluetooth MQTT)

Les passarel·les basades en MQTT, especialment les que integren Bluetooth, ofereixen diversos avantatges interessants:

  • Missatges molt lleugers, que fan que la comunicació sigui eficient fins i tot amb molts sensors enviant dades simultàniament.
  • Missatgeria bidireccional: permeten tant comunicació del núvol al dispositiu com del dispositiu al núvol, no només telemetria de pujada.
  • Lliurament fiable recolzada als nivells de QoS, assegurant que els missatges arribin segons el nivell de garantia configurat.
  • Seguretat incorporada: les passarel·les solen suportar xifrat TLS i autenticació per certificats, per la qual cosa les dades que travessen la passarel·la toquen el núvol de manera segura.

En el cas d'una porta d'enllaç Bluetooth MQTT, el dispositiu escaneja i detecta tots els sensors BLE dins del seu abast, gestiona la comunicació amb ells i centralitza la transmissió de dades cap al broker MQTT. Des del punt de vista de la plataforma IoT, tots aquests sensors Bluetooth “parlen MQTT”, encara que en realitat ho facin a través de la passarel·la.

Com funciona i com es configura una MQTT Gateway

A grans trets, el flux típic d'una porta d'enllaç MQTT és:

  1. Escanejar i detectar sensors i dispositius dins del vostre rang (per exemple, via Bluetooth o xarxes cablejades).
  2. Recollir les dades sensors a través dels protocols corresponents.
  3. Traduir aquestes dades al format MQTT (definint topics i payloads adequats).
  4. Publicar les dades al broker oa la plataforma IoT escollida.

La configuració d'una porta d'enllaç física passa primer pel muntatge del maquinari: cablejat correcte, separació entre connexions de sensors i mòduls de ràdio, i selecció de port, adreça MAC i una IP estàtica per garantir una identificació única a la xarxa.

Després, es tria el mòdul que executarà el client MQTT, per exemple:

  • Arduí + mòdul Ethernet W5100.
  • mòdul ESP8266 amb connectivitat WiFi.

Al firmware es defineixen els topics de publicació i subscripció. Per exemple, un prefix tipus MY_MQTT_PUBLISH_TOPIC_PREFIX/FROM_NODE_ID/SENSOR_ID podria generar topics com mygateway1-out/2/1/1/0/49, mentre que per enviar ordres als sensors s'utilitzaria un prefix de subscripció com MY_MQTT_SUBSCRIBE_TOPIC_PREFIX, donant lloc a topics del tipus mygateway1-in/2/1/1/0/49.

Un cop configurada, és molt recomanable provar la porta d'enllaç MQTT contra un broker conegut, com Mosquitto, per verificar que els missatges arriben correctament, es publiquen als topics esperats i els dispositius subscrits reben el que han de rebre.

MQTT Gateway com a pont cap a un servidor central

Quan desplegues dispositius MQTT a múltiples ubicacions físiques, normalment necessites consolidar totes aquestes dades en un servidor compartit o en una plataforma centralitzada al núvol. Aquí és on la porta denllaç MQTT brilla com a pont.

La idea consisteix a instal·lar una passarel·la MQTT a cada emplaçament on hi hagi dispositius IoT. Cada passarel·la recull la informació del seu entorn local, la afegeix i la reenvia a un servidor central (oa un broker al núvol) usant MQTT. D'aquesta manera, podeu tenir una visió global de totes les dades sense perdre el control local i amb un consum de xarxa optimitzat.

Addicionalment, aquestes passarel·les es poden assegurar amb certificats propis, xifrat TLS i mecanismes d'autenticació, protegint els sensors i l'edge d'IoT que queden darrere de la porta d'enllaç. També podeu emmagatzemar informació localment, adaptar la interfície d'usuari per gestionar dispositius propers i afegir compatibilitat amb altres protocols industrials segons les necessitats.

Compatibilitat de MQTT amb plataformes cloud i altres protocols

Una de les grans cartes de MQTT és que és compatible amb la majoria de les grans plataformes IoT del núvol. Moltes passarel·les industrials MQTT funcionen de sèrie amb:

  • Azure IoT.
  • Google Cloud IoT.
  • AWS IoT.
  • IBM Watson IoT.

La porta d'enllaç interpreta les dades que rep dels sensors i els transmet a la plataforma en format MQTT. Els usuaris només s'han de subscriure als topics corresponents per visualitzar o processar la informació en qualsevol moment.

A més, moltes d'aquestes passarel·les poden fer de convertidor de protocols, integrant xarxes com Modbus TCP amb MQTT, i oferint panells web remots per gestionar grups de dispositius. Això fa que MQTT sigui una peça central d'arquitectures híbrides on conviuen sistemes antics amb noves solucions IoT.

Casos d'ús reals de MQTT i IoT

Entorns industrials i telemetria

Al món industrial, MQTT ja és un estàndard de facto per transmetre dades de telemetria des de sensors i equips distribuïts en fàbriques, explotacions mineres, instal·lacions de petroli i gas, o empreses agroalimentàries.

Les empreses instal·len multitud de sensors que mesuren paràmetres com a temperatura, pressió, flux, vibració o consum energètic. Aquestes dades s'envien mitjançant MQTT a sistemes d'anàlisi que detecten inconsistències, tendències i oportunitats de millora a les operacions. Gràcies a això, es poden optimitzar processos, anticipar errors i reduir aturades no planificades.

Xarxes d'àrea àmplia de baixa potència (LPWAN)

Les xarxes LPWAN (Low Power Wide Area Network) estan pensades per dispositius de molt baix consum que envien petits missatges a grans distàncies, normalment amb alta latència i ample de banda reduït. MQTT encaixa molt bé en aquest entorn perquè els seus missatges són lleugers, suporta qualitat de servei i s'adapta a xarxes poc fiables.

En empreses que usen LPWAN per enviar dades de sensors a solucions al núvol, MQTT permet transmetre grans volums de missatges sense congestionar la xarxa i garantint, en la mesura del possible, que les dades arribin als sistemes d'anàlisi i monitorització.

Xarxes socials i missatgeria massiva

Un exemple cridaner de l'ús de MQTT fora de l'entorn clàssic industrial és el de Facebook, on s'ha utilitzat com a protocol de comunicació principal per gestionar un volum massiu de missatges en temps real. També juga un paper en la comunicació de missatges cap a plataformes com ara Instagram.

El fet que una companyia d'aquesta mida aposti per MQTT reforça la idea que és un protocol robust, escalable i apte per a escenaris d'alta concurrència, no només per a petits projectes d'IoT.

Llars intel·ligents i domòtica

A l'àmbit domèstic, MQTT s'ha convertit en un dels protocols favorits per automatitzar cases intel·ligents. S'integra molt bé amb plataformes cloud com ara Azure o IBM Watson, així com amb sistemes locals d'automatització.

Amb MQTT es pot monitoritzar el consum energètic a la llar, controlar la il·luminació, seguir en temps real la temperatura o la qualitat de l'aire, i coordinar múltiples dispositius (termòstats, persianes, sistemes de reg, etc.), inclosos dispositius com la Xiaomi Vela, sense que cadascú hagi de parlar directament amb la resta. Una porta denllaç Bluetooth MQTT, per exemple, pot centralitzar tots els sensors BLE dun habitatge i portar-los a un únic broker.

Sector automotriu

La transformació digital a l'automoció passa per connectar vehicles, línies de producció i sistemes de gestió. MQTT s'utilitza com canal de missatgeria fiable entre el núvol i el vehicle, permetent enviar dades de telemetria, diagnòstics remots i actualitzacions de paràmetres.

Aquesta capacitat de comunicar en temps gairebé real, fins i tot amb connectivitat mòbil canviant, fa que MQTT sigui una opció molt atractiva per a fabricants i proveïdors de serveis relacionats amb l'automòbil.

Transport i logística

En transport i logística, la capacitat de rastrejar flotes i mercaderies en moviment és clau. MQTT s'aprofita per enviar dades sobre posició, estat de càrrega, esdeveniments d'obertura de portes o condicions ambientals dins del contenidor.

En utilitzar missatges lleugers i una arquitectura basada en broker, és possible monitoritzar en temps real grans flotes amb latències baixes i sense sobrecarregar les xarxes mòbils o satel·litàries utilitzades per a la connexió.

Arquitectures escalables i desacoblament entre maquinari i programari

Un dels grans beneficis d'adoptar MQTT en un projecte IoT és que permet separar molt bé la capa maquinari de la capa programari. Els sensors i dispositius només es preocupen d'enviar dades a un broker i de rebre ordres des de topics específics; tot el que passi a partir d'aquí (emmagatzematge, anàlisi, visualització) pot evolucionar de manera independent.

Aquest enfocament recorda moltes vegades al patró de microserveis, on cada component fa una sola cosa i la fa bé. En el nostre cas, el dispositiu maquinari se centra a mesurar i publicar; altres serveis s'encarreguen de processar, emmagatzemar, visualitzar o aplicar intel·ligència artificial, sense que el sensor hagi de “saber” res d'ells.

Gràcies a aquest desacoblament, si demà decideixes passar d'una simple web de visualització en una Raspberry Pi a un sistema complex de Big Data i Machine Learning al núvol, no necessites tocar els sensors. Ells seguiran enviant dades al broker, i tu només hauràs d'endollar nous consumidors que se subscriguin als tòpics existents.

per a què serveix l'app Arduino IoT Cloud Remote per a Android
Article relacionat:
Per què serveix l'app Arduino IoT Cloud Remote per a Android i com treure'n partit

En conjunt, MQTT i les seves passarel·les associades formen una solució molt sòlida per a la connectivitat IoT: lleugers, escalables, assegurances, compatibles amb les principals plataformes cloud i amb suport per a xarxes de tot tipus, des de LPWAN a WiFi domèstic o Ethernet industrial. Tot això, unit al model de publicació/subscripció ia la possibilitat d'afegir passarel·les que facin de pont entre protocols, el converteix en una de les peces clau sobre les quals s'està construint el present i el futur de l'Internet de les coses. Comparteix la informació perquè més usuaris coneguin del tema.