MQTT (Message Queuing Telemetry Transport), žmogiškai kalbant, reiškia pranešimų eilės telemetrijos transportą. Prieš kelerius metus, kai daugelio inžinierių paplitimas PC tiesiog negirdėjo apvalaus termino, tačiau palaipsniui tobulėjant daiktų interneto (IoT) technologijai, šis protokolas vis dažniau pasirodo didžiųjų inžinierių akyse. Dėl to daugelis inžinierių žino tik pavadinimą, bet ne prasmę, ir daugelis žmonių net manė, kad tai yra tam tikras protokolas, sukurtas kuriant daiktų internetą. Tiesą sakant, MQTT protokolas pirmą kartą buvo išrastas daugiau nei prieš 20 metų, o 1999 m. Andy Stanfordas Clarkas iš IBM ir Alanas Nippe iš Cirrus Link parašė pirmąją protokolo versiją. Nuo to laiko protokolas buvo tarptautiniu mastu standartizuotas kaip paskelbimo / prenumeratos{6}}pagrįstas pranešimų siuntimo protokolas pagal ISO standartą (ISO/IEC PRF 20922). IBM 2013 m. Struktūrinės informacijos standartų palengvinimo organizacijai pateikė MQTT 3.1 versijos specifikaciją kartu su chartija, siekiant užtikrinti, kad nuo tada būtų galima naudoti tik nedaug MQTT pakeitimų. nuo tada daugelyje nišų. Kai buvo baigta kurti IoT techninė infrastruktūra, šis senovinis protokolas pradėjo veikti pirmą kartą.
Tinklo transportavimo ir taikymo sluoksniai
Kaip visi žinome, spartus daiktų interneto vystymasis iki šiol negali palikti ryšių tinklo infrastruktūros, dabar galite valdyti bet kurį pasaulio kampelį namuose naudodami kambario šviesos jungiklį arba atlikti pramoninį valdymą, taip pat galite nuotoliniu būdu valdyti roboto judėjimą, šios technologijos branda yra pagrįsta tinklo komunikacija kaip pagrindu. Pagrindinė dabartinės tinklo technologijos technologija yra OSI septynių{1} sluoksnių modelis, žinoma, tikroji programa iš tikrųjų naudoja TCP/IP keturių{2} sluoksnių tinklo modelį.
Trečiojo transportavimo sluoksnio TCP / IP keturių{0} sluoksnių tinklo modelis yra garsusis TCP / IP protokolas, šis pagrindinės protokolo paskirties sluoksnis naudojamas kompiuterio tinklo ryšio duomenims perduoti į aukščiau nurodytą kito įrenginio IP adresą, pavyzdžiui, IP adresą „192.168.137.19 Pavyzdžiui, jei mašina su IP adresu „192.3s16“ nori „192.3s17“. siųsti 16 baitų dvejetainį paketą į mašiną su IP adresu "192.168.137.10", tada galima naudoti TCP/IP protokolą jam perduoti. Vietoj to, perkeldami duomenis naudodami TCP, dažniausiai naudojame lizdus.
Bet kai IP adresas "192.168.137.19" mašina siųsti duomenis į "192.168.137.10" mašiną, šis TCP paketų paketas viduje duomenų iš tikrųjų yra vardu, ką reiškia gavimo pabaigos IP adreso gavimo pabaigos "192.168.137.10" yra paliktas šio sluoksnio duomenų transportavimo mašina, kaip perkelti šį duomenų paketą. sluoksnis iš spręstini protokolai, tai yra taikomojo lygmens protokolai. Žinoma, jei jūsų protokolai nenori duoti įprasto tinklo kompiuterių dėl skiriamosios gebos, taip pat galite pereiti prie kai kurių savo taikomųjų sluoksnių protokolų kūrimo, nesvarbu, transporto sluoksnio tikslas yra tiesiog perduoti duomenis į tikslinę mašiną.
Mūsų kasdieniame darbe, pramogose dažnai susidursime su įvairiais taikomųjų sluoksnių protokolais, pvz., kai atidarote tinklalapį, paveikslėlis rodomas toje padėtyje, mygtukas, nukreiptas žemyn, yra kokiai funkcijai pasiekti. Taip užtikrinama, kad kai koks nors įrenginys paprašys jūsų svetainės puslapio, tas įrenginys gali jį tinkamai parodyti. Be HTTP, yra daug kitų programų lygmens protokolų, tokių kaip DNS, FTP ir kt., o MQTT protokolas, kuris šiandien yra mūsų pagrindinis veikėjas, yra vienas iš jų.
Kodėl IoT teikia pirmenybę MQTT?
Dėl visų puikių taikomųjų programų lygmens protokolų esamoms programoms, kodėl MQTT šviečia IoT erdvėje. MQTT protokolo pasirinkimas nėra nepagrįstas; MQTT yra lengvas, lankstus tinklo protokolas, kuriuo siekiama rasti tinkamą pusiausvyrą daiktų interneto kūrėjams:
Šis lengvas protokolas gali būti įdiegtas labai apribotoje įrenginio aparatinėje įrangoje ir didelės delsos / pralaidumo tinkluose.
Jo lankstumas leidžia palaikyti įvairius IoT įrenginių ir paslaugų programų scenarijus.
Daugelis kūrėjų jau yra susipažinę su HTTP žiniatinklio paslaugomis. Taigi kodėl gi neleisti IoT įrenginiams prisijungti prie žiniatinklio paslaugų? Įrenginiai gali siųsti savo duomenis HTTP užklausų forma ir gauti atnaujinimus iš sistemos HTTP atsakymų forma. Šis prašymo ir atsakymo modelis turi keletą rimtų apribojimų:
HTTP yra sinchronizavimo protokolas. Klientas turi palaukti, kol serveris atsakys. žiniatinklio naršyklės turi šį reikalavimą, tačiau tai kainuoja mastelį. Daiktų interneto erdvėje dėl didelio įrenginių skaičiaus ir tinklo, kuris greičiausiai bus nepatikimas arba didelis delsimas, sinchroninis ryšys tampa problemiškas. Asinchroniniai pranešimų siuntimo protokolai geriau tinka daiktų interneto programoms. Jutikliai siunčia rodmenis ir leidžia tinklui nustatyti geriausią maršrutą ir laiką juos pristatyti į tikslinius įrenginius ir paslaugas.
HTTP yra vienakryptis. Klientas turi inicijuoti ryšį. IoT programose įrenginys arba jutiklis paprastai yra klientas, o tai reiškia, kad jie negali pasyviai gauti komandų iš tinklo.
HTTP yra vienas{0}}prie-protokolas. Klientas pateikia užklausą, o serveris atsako. Pranešimų pristatymas į visus tinklo įrenginius yra ne tik sudėtingas, bet ir brangus, o tai yra įprastas daiktų interneto programų naudojimo atvejis.
HTTP yra sudėtingas protokolas su daugybe antraščių ir taisyklių. Jis netinka ribotiems tinklams.
Dėl šių priežasčių dauguma didelio našumo{0}}pakeičiamų sistemų naudoja asinchronines pranešimų magistrales vidiniams duomenų mainams, o ne žiniatinklio paslaugoms.
Prenumeratos / paskelbimo modelis
Įdomu tai, kad šis MQTT protokolo serveris iš tikrųjų yra daug paprastesnis nei žiniatinklio serverio dizainas, nes jis siekia būti veiksminga paslauga. mechanizmas, kuriuo MQTT pirmiausia siunčia ir gauna pranešimus, yra šiek tiek panašus į santykį tarp mūsų viešosios svetainės ir jūsų, skaitytojų.
Realiame pasaulyje aš ir tu panašus į tai, kad MQTT įrenginys yra prijungtas prie vieningo serverio, jūs užsiprenumeruojate mus dėl susidomėjimo ar kažkokio potraukio mūsų viešajam numeriui, o kai kiekvieną dieną siųsiu trumpąją žinutę, jūs pasirodysite mobiliajame telefone, į kurį siunčiau žinutę, šis procesas, jūs gaunate mano informaciją tokiu būdu, kuris žinomas kaip Šiame procese, būdas, kuriuo gaunate mano informaciją, yra mano skelbimas „leidyba“. Ir kiekvienas gali į mano straipsnį, galite nedvejodami palikti man žinutę, toks elgesys yra kiekvieno „paskelbimo“ elgesys, ir aš visada priešais stumiu, kad pamatyčiau kiekvieno žinią, tai savotiškas „prenumeratos“ elgesys. Šiame procese visa išorinė informacija neturi nieko bendra su mumis, mes tiesiog bendraujame su informacijos srautu dviem kryptimis. MQTT pranešimų siuntimo mechanizmas taip pat pagrįstas Publish - Subscribe modeliu. MQTT pranešimų pristatymo mechanizmas taip pat pagrįstas modeliu „Paskelbti“ - „Prenumeruoti“.
MQTT konkretūs veiksmai yra šie:
1 veiksmas:Naudokite pirmąjį, kad gautumėte MQTT serverį, o tada sukurkite naują MQTT ryšio produktą.
2 veiksmas:Tada eikite, kad prisijungtumėte prie šio serverio, du svarbūs prisijungimo prie serverio parametrai yra pagrindinio kompiuterio numeris (domeno vardas arba IP adresas) ir prievado numeris.
3 veiksmas:Jei naudojate trečiosios-šalies debesies serverio platformą, gali reikėti prisijungti prie šio įrenginio naudojant produkto ID ir autentifikavimo informaciją, kuriuos abu rasite „Device Cloud“ vidinėje programoje.
Atlikę šiuos tris veiksmus, galėsite užsiprenumeruoti arba skelbti pranešimus atitinkamomis temomis.
Sudarysiu dokumentą, kuriame parodysiu, kaip išnaudoti „China Mobile“ įrenginių debesies atvirosios prieigos platformą.
Šie trys žingsniai taikomi programinės įrangos kūrimui ir mikrovaldiklių kūrimui. Kuriant mikrovaldiklius, jei naudojate AT komandas ir išorinį WIFI modulio ryšį, tada bendras modulis gali būti su AT + MQTT komandomis, o tai yra geriausias būdas labai sumažinti mikrovaldiklio spaudimą. Arba galite tiesiogiai pasiekti TCP/IP transportavimo sluoksnio duomenis ir išanalizuoti MQTT, todėl vartotojas turi gerai išmanyti MQTT protokolą, kad galėtų analizuoti savo Json duomenis, todėl paprastai, kai atliekame įterptuosius įrenginius, paprastai rekomenduojama tiesiogiai naudoti paruoštą -modulį su MQTT protokolu, nes tiesiogiai analizuoti AT komandą yra patogiau.
Atvejo analizė:
Nuotolinis šviesų valdymas ir esamos kambario temperatūros nustatymas.
Šiuo atveju tai iš tikrųjų yra viena iš paprasčiausių MQTT programų. Visų pirma, patalpoje esanti įtaisyta valdymo plokštė daugiausia yra prijungta prie serverio per WIFI, kuris gali valdyti šviesos jungiklį ir taip pat rinkti temperatūrą. Toli esantis galutinis įrenginys yra mobilusis telefonas.
Kad ryšys veiktų, pirmiausia jie turi būti prijungti prie to paties MQTT serverio.
Temperatūros informaciją įrenginio pusėje renka įrenginys, todėl surinktus duomenis jis turi publikuoti į temą "Temperatūra", o mobilusis telefonas gauna temperatūros informaciją, todėl reikia užsiprenumeruoti temą "Temperatūra". Kai įrenginys išsiųs temperatūros informaciją į „temperatūros temą“, temą gaus mobilusis telefonas.
Šviesos valdymą įrenginio pusėje vykdo įrenginys, todėl jam reikia užsiprenumeruoti temą "šviesos jungiklis", o mobilusis telefonas valdo šviesos jungiklį, todėl turi skelbti valdymo informaciją į šią "šviesos jungiklio" temą. Kai mobilusis telefonas išsiųs šviesos įjungimo pranešimą temai „šviesa įjungta“, temą gaus terminalas, o tada bus vykdoma lemputės įjungimo komanda.




