MQTT - protocolul pentru transmisie de mesaje în IoT
IoT este un termen ce provine din limba engleză, fiind o abreviere de la „Internet of Things”, care s-ar traduce în limba română ca „Internetul Obiectelor” sau „Internetul Lucrurilor”. În Wikipedia este definit ca „un concept ce presupune folosirea Internetului pentru a conecta între ele diferite dispozitive, servicii și sisteme automate, formând astfel o rețea de obiecte”. IoT este un sistem de dispozitive de calcul interconectate, mașini mecanice și digitale, obiecte, animale sau oameni care sunt furnizate cu identificatori unici (UID) și capacitatea de a transfera date într-o rețea fără a necesita intervenții umane. Un „lucru” în Internetul Lucrurilor poate fi o persoană cu un implant de monitorizare a inimii, un animal de fermă cu un transponder de biocip (un dispozitiv electronic care se monteaza pe / sub piele), un automobil care are senzori încorporați pentru a alerta șoferul când presiunea în anvelope este scăzută sau orice alt produs natural sau artificial, obiect căruia i se poate atribui o adresă IP (Internet Protocol) și este capabil să transfere date printr-o rețea.
IoT constă din dispozitive inteligente activate pe web care utilizează sisteme încorporate, cum ar fi procesoare, senzori și hardware de comunicații, pentru a colecta, trimite și acționa asupra datelor pe care le obțin din mediile lor. Dispozitivele IoT partajează datele senzorilor pe care le colectează conectându-se la un gateway IoT sau la un alt dispozitiv de unde datele sunt fie trimise către cloud pentru a fi analizate, fie analizate local. Uneori, aceste dispozitive comunică cu alte dispozitive înrudite și acționează pe baza informațiilor pe care le primesc unul de la celălalt. Dispozitivele fac cea mai mare parte a muncii fără intervenția umană, deși oamenii pot interacționa cu dispozitivele, de exemplu, pentru a le configura, a le oferi instrucțiuni sau a accesa datele.
Conectivitatea, rețelele și protocoalele de comunicare utilizate cu aceste dispozitive activate pe web depind în mare măsură de aplicațiile IoT specifice implementate. IoT poate folosi, de asemenea, inteligența artificială (AI) și învățarea automată pentru a ajuta procesele de colectare a datelor să fie mai ușoare și mai dinamice.
În lumea Internet of Things (IoT), principala monedă o reprezintă mesajele. Chiar acum, în timp ce citiți acest articol, sute de mii de dispozitive trimit rapoarte de stare, primesc comenzi (cum ar fi „măriți temperatura”, „măsurați umiditatea camerei” etc.), stochează date de pe alte dispozitive sau fac numeroase alte sarcini care ne fac viața mai uşoară. Și toate aceste dispozitive au nevoie să facă schimb de informații, deoarece fără conectivitate ele devin inutile.
Dar, odată cu creșterea rapidă a numărului de dispozitive care necesită Internet pentru a comunica și pentru a fi utile persoanelor, companiilor sau guvernelor, apar preocupări legate de păstrarea lățimii de bandă, asigurarea faptului că mașinile cu conectivitate redusă pot de asemenea transmite date și chiar de mărirea duratei de viață a bateriei gadgeturilor.
Aici intervine MQTT.
MQTT înseamnă „Message Queuing Telemetry Transport” şi reprezintă de facto protocolul standard pentru transmiterea mesajelor IoT. Standardizat de OASIS și ISO, protocolul de publish / subscribe MQTT oferă o modalitate scalabilă și fiabilă de a conecta dispozitive prin Internet, care poate fi susținută chiar și de dispozitive mici din destinații la distanță, cu conectivitate scăzută.
MQTT este un protocol de tip open source, machine-to-machine (M2M) care devine din ce în ce mai mult standardul industriei pentru comunicarea dispozitivelor IoT. Conceput pentru a sparge decalajul dintre gadgeturile din lumea fizică (telefoane, senzori, dispozitive portabile etc.) cu tehnologii de procesare software, acest cod este unul dintre principalele motive pentru creșterea așteptată cu 204,41% a dispozitivelor conectate IoT până în 2025.
Inițial, MQTT a fost dezvoltat ca software proprietar în 1999 de Andy Stanford-Clark (IBM) și Arlen Nipper (Arcom, acum Cirrus Link). A fost conceput pentru a transporta informații de la conductele de petrol la distanță prin conexiune prin satelit și pentru a le livra centrelor de date industriale pentru analiză și stocare. Încă de la început păstrarea atât a lățimii de bandă, cât și a puterii bateriei au fost cele două preocupări principale şi, ca urmare, MQTT, a devenit standardul principal nu numai pentru Internetul Industrial al Lucrurilor (IIoT), ci și pentru echipamentele inteligente pe care le folosim în viața noastră de zi cu zi (IoT).
Specificaţii tehnice detaliate găsiţi la: https://mqtt.org/mqtt-specification/ Clienții MQTT „publică” un mesaj către un „broker” MQTT, iar alți clienți MQTT se aboneaz la mesajele pe care doresc să le primească. Implementările clienților MQTT necesită de obicei o amprentă minimă, așa că sunt potrivite pentru implementare pe dispozitive mici cu restricții și sunt foarte eficiente în cerințele lor de lățime de bandă.
Brokerii MQTT primesc mesaje publicate și trimit mesajul clienților MQTT abonați. Un mesaj MQTT conține un subiect de mesaj la care sunt abonați clienții MQTT, iar brokerii MQTT folosesc aceste liste de abonament pentru a determina clienții MQTT să primească mesajul.
Arhitectura publicare / abonare (publish / subscribe) MQTT:
Aşa cum am mai spus, numărul de „lucruri” în lumea IoT creşte rapid, şi, de aici necesitatea de a gestiona presiunea asupra lățimii de bandă. Datorită dispozitivului „broker”, cantitatea de date transmisă prin Internet poate fi limitată. Astfel, clientul este, de asemenea, scutit de necesitatea unor procesoare uriașe care să gestioneze datele.
Cu atâtea informații care circulă între „broker” și dispozitive („clienţi”), ierarhia este o necesitate. Aici MQTT strălucește cu trei niveluri diferite de calitate a serviciului QoS (Quality of Service). Acestea definesc atât importanța cât și repetitivitatea unui mesaj în mediul lor:
1) Cel mult o dată (0), 2) Cel puțin o dată (1) şi 3) Exact o dată (2). Aceste niveluri QoS permit aplicații IoT sa fie fiabile raportat la infrastructura de mesagerie de bază și să se adaptează la condiții de rețea nesigure.
Clienții MQTT care se abonează la un subiect nou nu știu când să se aștepte la primul mesaj pe care îl vor primi. Cu toate acestea, un „broker” MQTT poate stoca un mesaj reținut care poate fi trimis imediat la un nou abonament MQTT. În acest caz, „clientul” MQTT va primi cel puțin un mesaj la abonarea la subiect.
MQTT permite o sesiune „persistentă” între client și broker. Acest lucru permite sesiunilor să persiste chiar dacă rețeaua este deconectată. Odată reconectată rețeaua, informațiile pentru a reconecta clientul la broker încă există. Aceasta este una dintre caracteristicile cheie care face ca protocolul MQTT să fie mai eficient decât HTTP în cazul utilizarii pe rețelelor celulare instabile.
Mai mult, un „client” MQTT poate specifica unui „broker” MQTT un mesaj, numit ultima voință (last will), care va fi trimis dacă clientul MQTT se deconectează accidental. Acest lucru permite o notificare elegantă că un client a fost deconectat, la nivelul întregului sistem.
Nu în ultimul rând, MQTT facilitează criptarea mesajelor folosind TLS și autentificarea clienților folosind protocoale moderne de autentificare, cum ar fi Oauth.
Pe măsură ce dezvoltatorii din întreaga lume lucrează la rezolvarea problemelor de securitate și de gestionare a datelor, MQTT devine deja standardul pentru comunicațiile prin Internet of Things şi oferă multe beneficii puternice care nu pot trece neobservate: distribuie informaţiile uşor şi eficient, maximizează lățimea de bandă disponibilă, îmbunătățește scalabilitatea şi reduce timpul de dezvoltare.
De la controlul mediului acasă, de la distanță, până la utilizarea unui sistem de mesagerie precum Facebook Messenger, MQTT face deja parte din viața de zi cu zi. Și va deveni mai comun pe măsură ce tehnologia evoluează.