Atunci când vorbim despre conectează milioane de dispozitive IoT Pentru o comunicare fiabilă, ușoară și sigură, numele care apare mereu este același: MQTT. Acest protocol a devenit o componentă cheie pentru senzori, gateway-uri industriale, dispozitive inteligente pentru casă și platforme cloud, pentru a comunica fără a supraîncărca rețeaua sau a crește consumul de energie.
Departe de a fi doar „un alt protocol”, MQTT se potrivește perfect cu nevoile reale ale Internetului LucrurilorRețele instabile, lățime de bandă ridicol de mică, hardware foarte limitat, medii industriale solicitante sau aplicații aproape în timp real, cum ar fi fabricile cibernetice, telemetria energetică sau automatizarea avansată a locuințelor. Să aruncăm o privire calmă și detaliată asupra modului în care funcționează, a rolului său în conectivitatea IoT, a ceea ce este un gateway MQTT și în ce cazuri specifice este mai logic să îl folosim în comparație cu alte opțiuni.
Ce este MQTT și de ce a devenit atât de popular în IoT?
MQTT (Message Queuing Telemetry Transport) este un protocol de mesagerie standard ușor și deschis Conceput special pentru comunicarea machine-to-machine (M2M) și, prin extensie, pentru Internetul Lucrurilor. Obiectivul său este foarte clar: să poată trimite și primi date între dispozitive chiar dacă rețeaua este slabă, lățimea de bandă este limitată, iar dispozitivul are foarte puțină memorie sau putere de calcul.
Spre deosebire de modelul clasic client-server, MQTT folosește un arhitectura de publicare/abonament Se bazează pe un intermediar central numit broker. Dispozitivele nu comunică direct între ele, ci publică mesaje în anumite subiecte și se abonează la subiecte de interes. Brokerul este responsabil pentru primirea tuturor acestor mesaje, filtrarea lor și livrarea lor către clienții corespunzători.
Acest mod de lucru face ca MQTT să fie extrem de flexibil și scalabilÎn loc să existe sute sau mii de conexiuni punct-la-punct dificil de gestionat, totul este orchestrat prin intermediul brokerului, care poate gestiona de la câteva dispozitive până la milioane, în funcție de implementare și de resursele disponibile.
Caracteristici tehnice cheie ale MQTT pentru IoT
Protocol ușor și eficient
Unul dintre principalele motive pentru care MQTT este atât de popular în IoT este că este ridicol de ușorImplementarea pe dispozitiv poate necesita foarte puțin cod și foarte puține resurse, ceea ce îl face ideal pentru microcontrolere modeste, senzori cu cost redus sau echipamente alimentate de baterii.
Un mesaj de control MQTT în versiunea sa minimală poate avea doar doi octeți de dateÎn plus, anteturile mesajelor sunt foarte compacte, reducând la minimum costurile de comunicare. Acest design este perfect pentru scenarii cu lățime de bandă mică sau rețele scumpe (cum ar fi unele rețele celulare sau LPWAN), unde fiecare octet contează.
Comparativ cu protocoale mai grele, cum ar fi HTTP, cu cererile sale complexe și anteturile detaliate, MQTT permite pentru a optimiza utilizarea rețeleiAcest lucru este esențial atunci când există mii de dispozitive care comunică la fiecare câteva secunde.
Șablon de publicare/abonare cu subiecte
MQTT se bazează pe un model de publicație/abonament pe temeAcestea sunt șiruri de text (în UTF-8) care organizează informațiile pe niveluri. De exemplu, într-o casă inteligentă am putea avea:
- casă/cameră de zi/temperatură
- casă/bucătărie/fum
- casă/garaj/ușă
Un senzor de temperatură din sufragerie și-ar posta citirile pe subiect. casă/cameră de zi/temperaturăÎn timp ce o aplicație de monitorizare s-ar abona la aceeași temă pentru a primi toate mesajele primite. În acest fel, adăugarea de noi dispozitive sau consumatori de date este la fel de simplă ca folosește subiectele potrivite, fără a fi nevoie să se modifice infrastructura existentă.
Acest sistem, deși nu este exact o coadă de mesaje clasică, este destul de similar cu modelele bazate pe cozi: dispozitivele generează mesaje și le trimit către un punct central (brokerul), iar apoi Sistemele de procesare consumă acele date în funcție de nevoile lor. Acest lucru facilitează mult scalarea sistemului prin creșterea numărului de consumatori fără a schimba senzorii.
Calitatea serviciului (QoS) și fiabilitatea
Multe dispozitive IoT se conectează prin rețele cu latență mare, lățime de bandă redusă și fiabilitate limitatăcum ar fi rețele mobile neuniforme sau legături wireless congestionate. MQTT încorporează o serie de mecanisme pentru a asigura livrarea mesajelor în acest context.
Protocolul definește trei niveluri de calitatea serviciului (QoS):
- QoS 0 – „cel mult o dată”Mesajul este trimis o singură dată, fără confirmare. Este cea mai rapidă și ușoară metodă, dar unele mesaje se pot pierde.
- QoS 1 – „cel puțin o dată”Acest lucru asigură că mesajul ajunge, deși ar putea ajunge duplicat. Se folosește un sistem de confirmare pentru a garanta livrarea.
- QoS 2 – „exact o dată”Acesta este cel mai robust nivel. Asigură că fiecare mesaj este livrat o singură dată, folosind un strângere de mână în patru fazeEste puțin mai greu, dar esențial în anumite cazuri sensibile.
Datorită acestor niveluri QoS, MQTT poate fi adaptat la diferite cazuri de utilizarede la telemetrie, unde nu se întâmplă nimic dacă se pierde o anumită parte a datelor, până la sisteme critice unde duplicarea sau pierderea unui mesaj ar fi inacceptabilă.
Gestionarea reconexiunilor și a rețelelor instabile
Un alt avantaj este că MQTT este conceput pentru medii cu deconectări frecventeProtocolul include funcții care reduc timpul necesar unui dispozitiv pentru a se reconecta la broker, lucru esențial în rețelele celulare sau Wi-Fi de calitate îndoielnică; îmbunătățirea... conexiune WiFi securizată poate completa aceste capacități.
În plus, brokerul poate gestiona mesajele reținute, stările sesiunilor și alte funcții care permit dispozitivelor reluați comunicarea fără a pierde contextul de fiecare dată când rețeaua cade și revine.
Securitate și cifrat
În IoT, securitatea nu este opțională. MQTT încorporează suport pentru criptare și autentificare Bazându-se pe protocoale moderne: TLS 1.3 poate fi utilizat pentru criptarea canalului, autentificarea prin certificate client, OAuth și alte tehnici comune în mediile de business și cloud.
Acest lucru permite criptarea mesajelor în tranzit și aplicarea acestora Controale de acces despre cine poate publica sau se poate abona la anumite subiecte, protejând atât confidențialitatea, cât și integritatea informațiilor, aspect relevant în special în mediile industriale, energetice sau de sănătate.
Suport extins pentru diferite limbi și platforme
MQTT are implementări mature ale brokerilor și clienților în mai multe limbaje (Python, C, C++, Java, JavaScript, Go etc.) și cu o comunitate foarte activă. Acest lucru facilitează integrarea dispozitivelor IoT de către dezvoltatori cu sistemele, bazele de date, instrumentele Big Data sau serviciile cloud existente, fără a reinventa roata.
Fiind un protocol open-source cu biblioteci bine testateCurba de învățare este destul de scurtă, iar riscul problemelor de compatibilitate este redus, ceea ce îl face foarte atractiv pentru proiecte variind de la prototipuri mici până la implementări masive.
Rolul brokerului MQTT în arhitectura IoT
Brokerul este nucleul oricărei arhitecturi bazate pe MQTTEste componenta care primește toate mesajele, le procesează și le distribuie clienților abonați la subiectele corespunzătoare.
Printre funcțiile sale principale se numără:
- Primiți informații publicate de clienți (senzori, gateway-uri, aplicații etc.).
- Decodați și filtrați mesajele în funcție de subiect, nivelul QoS sau regulile de securitate.
- Stabiliți care clienți sunt interesați în fiecare mesaj (în funcție de abonamentele dvs.).
- Transmite mesajele către clienții țintărespectând politicile QoS și de autorizare.
Există mai multe implementări de brokeri, ambele sursă deschisă, precum și comercialăUnul dintre cele mai cunoscute este Mosquitto, utilizat pe scară largă în mediile casnice, de către producători, dar și în implementări mai serioase, care permite gestionarea de la câțiva până la mii de clienți cu o configurație relativ simplă.
MQTT în practică: Arduino, ESP8266 și rețele locale

În multe proiecte IoT casnice sau semiprofesionale, un scenariu destul de tipic implică... un broker MQTT care rulează pe un Raspberry Pi sau un PC în rețeaua locală și diverse dispozitive, cum ar fi Arduino cu aplicația Arduino IoT Cloud Remote sau ESP8266 conectate ca clienți.
De exemplu, ați putea avea un Arduino cu un senzor de temperatură DHT22 care postează citiri periodice pe un subiect precum casă/cameră de zi/temperaturăÎntre timp, un alt Arduino sau o aplicație mobilă se abonează la aceeași temă pentru a afișa temperatura în timp real. Brokerul, în acest caz Mosquitto, este responsabil pentru primirea mesajelor de la primul Arduino și livrarea lor către al doilea, fără ca aceștia să fie nevoiți să se cunoască sau să gestioneze o conexiune directă.
Această arhitectură are un avantaj imens: Este scalabil aproape fără efortPuteți adăuga mai mulți senzori, mai mulți consumatori de date și îi puteți conecta la baze de date, sisteme de învățare automată sau tablouri de bord de vizualizare fără a modifica comportamentul dispozitivelor deja implementate. Trebuie doar să experimentați cu subiecte și abonamente.
De ce MQTT și nu doar HTTP?
O întrebare foarte frecventă este dacă merită cu adevărat să folosești MQTT când, aparent, ai putea rezolva totul cu cereri HTTP directe la un ESP8266 sau similar, prin deschiderea unui port pe router și gata, sau chiar cu WebSockets pe Android.
Răspunsul este că, deși este posibil din punct de vedere tehnic, MQTT oferă mai multe avantaje importante:
- Latență medie mai mică și costuri suplimentare mai mici în comunicări frecvente, în special în cazul mesajelor scurte trimise la fiecare câteva secunde.
- Pub/Sub nativTelefonul mobil nu trebuie să comunice direct cu fiecare dispozitiv; trebuie doar să comunice cu brokerul.
- Management centralizat al securității și autentificării pe broker, în loc să se reproducă logica pe fiecare dispozitiv.
- Ușurință de scalareDacă mâine treci de la 5 la 500 de dispozitive, nu mai trebuie să deschizi 500 de porturi sau să reproiectezi întreaga topologie.
- Suport nativ pentru reconexiuni și QoS gândindu-ne la rețele instabile, lucru pe care HTTP nu îl oferă în mod implicit.
Într-un scenariu tipic, aplicația mobilă s-ar conecta la brokerul MQTT (fie în cadrul rețelei locale folosind redirecționarea porturilor, fie la un broker în cloud), ar publica un mesaj într-un subiect de control (de exemplu casă/sufragerie/lumină/set), iar ESP8266, abonat la acel subiect, ar primi comanda aproape instantaneu. Trebuie doar să dezvălui brokerul.nu fiecare dispozitiv din rețea.
În ceea ce privește servicii precum io.adafruit.com și intervalele lor de activare (la fiecare 15 minute în versiunea gratuită, la fiecare 5 secunde în versiunea plătită), este limitările serviciului specificNu protocolul MQTT în sine este problema. Protocolul în sine permite o latență foarte scăzută; problema este că furnizorul impune limite de frecvență de utilizare.
MQTT Gateway: poarta de acces dintre senzori și cloud
Ce este o poartă de acces MQTT?
Așa-numitul „MQTT Gateway” sau gateway MQTT este, în esență, un dispozitiv intermediar între senzori sau dispozitive locale și platforma IoT sau brokerul MQTTFuncția sa principală este de a colecta date în diferite protocoale (de exemplu, Bluetooth, senzori cu fir, Modbus etc.), de a le converti în MQTT și de a le trimite în cloud sau către un broker central.
În multe cazuri, un gateway MQTT este implementat ca un Gateway Ethernet cu software specific care acționează ca un client MQTT. Această gateway poate avea interfețe radio, intrări și ieșiri industriale sau conectivitate fieldbus și este responsabilă pentru traducerea tuturor acestora în limbajul MQTT pentru a le unifica.
Avantajele unui gateway MQTT (inclusiv Bluetooth MQTT)
Gateway-urile bazate pe MQTT, în special cele care integrează Bluetooth, oferă câteva avantaje interesante:
- Mesaje foarte ușoareceea ce face comunicarea eficientă chiar și cu mai mulți senzori care trimit date simultan.
- Mesagerie bidirecționalăAcestea permit atât comunicarea cloud-to-device, cât și comunicarea de la dispozitiv la cloud, nu doar telemetria în uplink.
- Livrare fiabilă susținut de nivelurile QoS, asigurând că mesajele sosesc conform nivelului de garanție configurat.
- securitate încorporatăGateway-urile acceptă de obicei criptarea TLS și autentificarea cu certificat, astfel încât datele care trec prin gateway ajung în cloud în siguranță.
În cazul unui Gateway Bluetooth MQTTDispozitivul scanează și detectează toți senzorii BLE aflați în raza de acțiune, gestionează comunicarea cu aceștia și centralizează transmiterea datelor către brokerul MQTT. Din perspectiva platformei IoT, toți acești senzori Bluetooth „vorbesc MQTT”, chiar dacă o fac de fapt prin intermediul gateway-ului.
Cum funcționează un gateway MQTT și cum se configurează
În termeni generali, fluxul tipic al unui gateway MQTT este:
- Scanează și detectează senzori și dispozitive aflate în raza sa de acțiune (de exemplu, prin Bluetooth sau rețele cu fir).
- Colectați datele de la acei senzori prin protocoalele corespunzătoare.
- Traduceți datele respective în format MQTT (definind subiecte și sarcini utile adecvate).
- Publicați datele pe broker sau pe platforma IoT aleasă.
Configurarea unui gateway fizic implică mai întâi asamblare hardwarecablare corectă, separare între conexiunile senzorilor și modulele radio și selectarea portului, a adresei MAC și a unei adrese IP statice pentru a asigura o identificare unică în rețea.
Apoi, alegeți modulul pe care îl va rula clientul MQTT, de exemplu:
- Modul Ethernet Arduino + W5100.
- Modulul ESP8266 cu conectivitate WiFi.
Firmware-ul definește Subiecte de publicare și abonamentDe exemplu, un prefix precum PREFIX_SUBIECTE_PUBLICARE_MQTT_MEU/ID_NOD/ID_SENZOR ar putea genera subiecte precum mygateway1-out/2/1/1/0/49, în timp ce pentru a trimite comenzi către senzori s-ar folosi un prefix de abonament, cum ar fi PREFIX_SUBIECTE_MY_MQTT_SUBSCRIBEdând naștere la subiecte de tipul celor mygateway1-in/2/1/1/0/49.
Odată configurat, este recomandat să testați gateway-ul MQTT cu un broker cunoscut, cum ar fi Mosquitto, pentru a verifică dacă mesajele sunt recepționate corectAcestea sunt publicate în subiectele așteptate, iar dispozitivele abonate primesc ceea ce ar trebui să primească.
Gateway-ul MQTT ca punte către un server central
Când implementați dispozitive MQTT în mai multe locații fizice, de obicei aveți nevoie de consolidați toate aceste date pe un server partajat sau pe o platformă centralizată în cloud. Aici strălucește gateway-ul MQTT ca o punte de legătură.
Ideea este de a instala un gateway MQTT în fiecare locație unde există dispozitive IoT. Fiecare gateway colectează informații din mediul său local, Adăugați-l și redirecționați-l către un server central (sau un broker în cloud) folosind MQTT. În acest fel, puteți avea o vedere globală asupra tuturor datelor fără a pierde controlul local și cu un consum optimizat al rețelei.
În plus, aceste gateway-uri pot securizat cu certificate propriiMecanismele de criptare și autentificare TLS protejează senzorii și marginea IoT care rămân „în spatele” gateway-ului. De asemenea, acestea pot stoca informații local, pot adapta interfața utilizator pentru a gestiona dispozitivele din apropiere și pot adăuga compatibilitate cu alte protocoale industriale, după cum este necesar.
Compatibilitate MQTT cu platformele cloud și alte protocoale
Unul dintre cele mai mari puncte forte ale MQTT este faptul că este Compatibil cu majoritatea platformelor IoT cloud importanteMulte gateway-uri MQTT industriale funcționează standard cu:
- IoT Azure.
- Google Cloud IoT.
- AWS IoT.
- IBM Watson IoT.
Gateway-ul interpretează datele pe care le primește de la senzori și Le transmite către platformă în format MQTT.Utilizatorii trebuie doar să se aboneze la subiectele relevante pentru a vizualiza sau procesa informațiile în orice moment.
În plus, multe dintre aceste podiumuri pot servi drept convertor de protocolPrin integrarea rețelelor precum Modbus TCP cu MQTT și oferirea de panouri web la distanță pentru gestionarea grupurilor de dispozitive, MQTT devine o componentă centrală a arhitecturilor hibride în care sistemele vechi coexistă cu noile soluții IoT.
Cazuri de utilizare în lumea reală a MQTT și IoT
Medii industriale și telemetrie
În lumea industrială, MQTT este deja o standard de facto pentru transmiterea datelor de telemetrie de la senzori și echipamente distribuite în fabrici, operațiuni miniere, instalații de petrol și gaze sau companii agroalimentare.
Companiile instalează numeroși senzori care măsoară parametri precum temperatura, presiunea, debitul, vibrațiile și consumul de energie. Aceste date sunt trimise prin MQTT către sisteme de analiză care... Aceștia detectează inconsecvențe, tendințe și oportunități de îmbunătățire. în operațiuni. Datorită acestui fapt, procesele pot fi optimizate, defecțiunile pot fi anticipate și timpii de nefuncționare neplanificați pot fi reduși.
Rețele de arie largă de putere redusă (LPWAN)
Rețelele LPWAN (Low Power Wide Area Network - Rețea de Arie Wide cu Putere Redusă) sunt proiectate pentru a dispozitive de consum foarte redus care transmit mesaje scurte pe distanțe lungiDe obicei, rețelele cu latență mare și lățime de bandă limitată sunt problematice. MQTT este o alegere perfectă pentru acest mediu, deoarece mesajele sale sunt ușoare, oferă servicii de calitate și se adaptează la rețele nesigure.
În companiile care utilizează LPWAN pentru a trimite date de la senzori către soluții cloud, MQTT permite transmite volume mari de mesaje fără a congestiona rețeaua și asigurându-se, pe cât posibil, că datele ajung la sistemele de analiză și monitorizare.
Rețele sociale și mesagerie în masă
Un exemplu frapant de utilizare a MQTT în afara mediului industrial clasic este cel al Facebookunde a fost folosit ca protocol principal de comunicare pentru gestionarea unui volum masiv de mesaje în timp real. De asemenea, joacă un rol în mesageria către platforme precum Instagram.
Faptul că o companie de o asemenea dimensiune pariază pe MQTT întărește ideea că este vorba de o protocol robust, scalabil, potrivit pentru scenarii cu concurență ridicatănu doar pentru proiecte IoT mici.
Case inteligente și automatizare a locuinței
În sfera internă, MQTT a devenit unul dintre Protocoale preferate pentru automatizarea caselor inteligenteSe integrează perfect cu platforme cloud precum Azure sau IBM Watson, precum și cu sisteme locale de automatizare.
Cu MQTT puteți monitoriza consumul de energie în locuințăcontrolează iluminatul, monitorizează temperatura sau calitatea aerului în timp real și coordonează mai multe dispozitive (termostate, jaluzele, sisteme de irigații etc.), inclusiv dispozitive precum Xiaomi Sailingfără ca fiecare dispozitiv să fie nevoit să comunice direct cu celelalte. Un gateway Bluetooth MQTT, de exemplu, poate centraliza toți senzorii BLE dintr-o locuință și îi poate conecta la un singur broker.
Secția auto
Transformarea digitală în industria auto implică conectarea vehiculelor, a liniilor de producție și a sistemelor de management. MQTT este utilizat ca canal de mesagerie fiabil între cloud și vehiculpermițând trimiterea de date telemetrice, diagnosticarea la distanță și actualizările parametrilor.
Această capacitate de a comunica aproape în timp real, chiar și cu conectivitatea mobilă în continuă schimbare, face din MQTT o opțiune foarte atractivă pentru producătorii de automobile și furnizorii de servicii.
Transport si logistica
În transport și logistică, capacitatea de urmăriți flotele și mărfurile în mișcare Este esențial. MQTT este utilizat pentru a trimite date despre poziție, starea încărcăturii, evenimentele de deschidere a ușilor sau condițiile de mediu din interiorul containerului.
Prin utilizarea unei mesagerii ușoare și a unei arhitecturi bazate pe brokeri, este posibil monitorizați flote mari în timp real cu latență redusă și fără supraîncărcarea rețelelor mobile sau de satelit utilizate pentru conexiune.
Arhitecturi scalabile și decuplare între hardware și software
Unul dintre marile beneficii ale adoptării MQTT într-un proiect IoT este că permite separați clar stratul hardware de stratul softwareSenzorii și dispozitivele se ocupă doar de trimiterea de date către un broker și de primirea de comenzi de la anumite subiecte; tot ceea ce se întâmplă de acolo (stocare, analiză, vizualizare) poate evolua independent.
Această abordare amintește adesea de model de microserviciiunde fiecare componentă face un lucru și îl face bine. În cazul nostru, dispozitivul hardware se concentrează pe măsurare și publicare; alte servicii se ocupă de procesare, stocare, vizualizare sau aplicarea inteligenței artificiale, fără ca senzorul să fie nevoit să „știe” nimic despre ele.
Datorită acestei decuplări, dacă mâine decideți să treceți de la un simplu site web de vizualizare pe un Raspberry Pi la un... sistem complex de Big Data și Machine Learning În cloud, nu trebuie să atingi senzorii. Aceștia vor continua să trimită date către broker, iar tu va trebui doar să conectezi noi consumatori care se abonează la subiecte existente.
Împreună, MQTT și gateway-urile sale asociate formează o soluție foarte robust pentru conectivitate IoTUșor, scalabil, sigur, compatibil cu principalele platforme cloud și suportând toate tipurile de rețele, de la LPWAN la WiFi de acasă sau Ethernet industrial. Toate acestea, combinate cu modelul său de publicare/abonare și capacitatea de a adăuga gateway-uri care fac legătura între protocoale, îl fac una dintre componentele cheie pe care se construiește prezentul și viitorul Internetului Lucrurilor. Distribuiți informațiile, astfel încât mai mulți utilizatori să cunoască subiectul.