Khumbula igama I-MQTT, ngoba uhlobo lwenethiwekhi yokuxhumana yenethiwekhi M2M (Machine to Machine) ezozwakala kakhulu. Kuya ngokuya kuthandwa kakhulu enkathini entsha ye-Intanethi Yezinto noma i-IoT (i-Intanethi Yezinto) ngegama layo ngesiNgisi. Ngaphezu kwalokho, kuyinkqubo evulekile, enikeza izinzuzo eziningi.
Eqinisweni, sekube ngenye yezinsika ezisemqoka ze-IoT, njengoba kukuhle impela kumadivayisi anemikhawulo ethile yokudlulisa enjengale. Isiqu esithi MQTT sivela Isigijimi Somugqa Esisemgwaqeni Wezokuthutha, indinganiso evulekile evela ku-OASIS ne-ISO (ISO / IEC 20922) yokuxhumana kwenethiwekhi futhi ejwayele ukusebenza ku-TCP / IP edumile.
Izivumelwano zenethiwekhi
I-Los izivumelwano zokuxhumana Yimithetho evumela ukuthi amadivayisi noma amasistimu amabili noma ngaphezulu akwazi ukuxhumana. Lokho, kuyisimiso sokudlulisa imininingwane ngezindlela ezahlukahlukene nangefomethi echaziwe, noma ngabe isetshenziswe yi-software ne-hardware (noma zombili).
El standard yephrothokholi ichaza ubuningi bezimpawu zokuxhumana. Kungasuka emithethweni yokuvumelanisa, ama-semantics, i-syntax, ifomethi yepakethe, njll. Futhi iqiniso ukuthi azinakwa, ngoba ngenxa yalezi zinqubo namhlanje singasebenzisa i-Intanethi namanye amanethiwekhi wokuxhumana ...
Futhi-ke, ayikho iprothokholi eyodwa kuphela, kepha miningi. Ngokwesibonelo, abadumile I-DNS, FTP, MQTT, HTTP ne-HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP, njll. Ngenkathi ungqimba lwezokuthutha ungathola ezinye ezidume njenge-TCP, i-UDP, njll. i-IoT), i-IPSec, njll, nabanye abavela kusendlalelo sokuxhumanisa njenge-DSL, i-Ethernet, i-WiFi, i-ARP, njll.
Mayelana nezivumelwano ze-IoT
Vele kunezivumelwano ezithile zokuxhumana noma ezingasetshenziswa kufayela le- IoT. Lokho kusho ukuthi, uma kubhekwa isigaba esedlule, bangaba uchungechunge lwamazinga achaziwe ukuze amadivayisi amabili noma ngaphezulu e-IoT akwazi ukuxhumana futhi azwisisane, futhi imvamisa kuba yi-M2M, okungukuthi, ukuxhumana ngomshini kuya komshini. amadivayisi amaningi we-IoT axhuma futhi abelana ngolwazi oluvela kuzinzwa noma eminye imithombo.
Ngenxa yenani elikhulu lamadivayisi we-IoT, lezi zinqubo kumele zihlangabezane nezidingo ezingaphezu kwemikhawulo ye-bandwidth, isivinini, njll. (qaphela ukuthi amadivayisi amaningi ashumekiwe futhi ashibhile), okuvame ukuba kwamanye amadivayisi. Futhi ngiqonde iqiniso lokuthi kumele isabeke, ukwazi ukwengeza amadivayisi amaningi axhunyiwe uma kunesidingo futhi ngaphandle kokuthinta uhlelo lomhlaba jikelele.
Futhi, kufanele babe ne- ukuncika okuphansi ukuhlangana phakathi kwamadivayisi, ukuze izinkinga zingakhi uma idivayisi isuswa. Futhi-ke, ngasikhathi sinye, ukusebenzisana okuphezulu kuyadingeka ukuze kusebenze ngenombolo enkulu yamadivayisi nezinhlelo ezahlukahlukene kakhulu, ngoba umhlaba we-IoT uhluke kakhulu.
Ezinye izinto eziwusizo kungaba lula ukuzisebenzisa, ukuphepha, njll. Khumbula ukuthi i-IoT idala izinselelo ezinkulu esicini sokuphepha. Noma kunjalo lapho iningi lamadivayisi axhunyiwe livame ukugxeka ezimweni ezithile ... ngokwesibonelo, amathoyizi ezingane.
Imiqondo ebalulekile
Lokho kusho, kufanele kuthiwe izixazululo ze-IoT zisebenzisa iseva esezingeni eliphakathi ukuthola imilayezo evela kuwo wonke amadivayisi axhunyiwe ayikhiphela kuwo wonke amadivayisi we-IoT axhunyiwe alalelayo. Leyo seva yaziwa njenge umzila noma umthengisi. Okuthile okukude nobudlelwano obujwayelekile beklayenti-seva ngandlela thile.
Ngakolunye uhlangothi, izindlela ongazithola kulezi zinqubo zokuxhumana ze-IoT yilezi:
- I-PubSub: Shicilela / Susbcribe iphethini yokuthumela imiyalezo lapho idivaysi (iSub) yazisa umthengisi ukuthi ifuna ukuthola umlayezo, kanti enye idivaysi (iPub) ishicilela imiyalezo yokuthi umthengisi ayidlulisele kwamanye amadivayisi ayilindeleyo.
- I-rRPCIzinqubo Zenqubo Yokulungisa I-Router enye iphethini yokwenza inqubo ekude. Kuyo, idivaysi (Callee) yazisa umthengisi ukuthi izokwenza inqubo ethile futhi umthengisi uyisabalalisa kwenye idivaysi (Yomshayeli) lapho kuthiwe inqubo iyenziwa.
Manje, ukwenza lezi zindlela noma amaphethini, a ingqalasizinda yokuthumela imiyalezo. Futhi ngalomqondo ezimbili zingahlukaniswa:
- Ulayini Womlayezo: insizakalo yemiyalezo lapho kwenziwa umugqa owodwa womlayezo kuwo wonke amaklayenti aqala ukubhalisela broker. Lezi zokugcina zizogcina imilayezo igcinwe ize ithunyelwe kwiklayenti. Uma iklayenti noma umamukeli engaxhunyiwe, igcinwa ize ixhumeke. Lezi zinhlobo zezinsizakalo zifana nalezo ezisetshenziswa kuzinhlelo zokusebenza zemiyalezo esheshayo njengeTelegra, WhatsApp, Messenger, njll.
- Insizakalo Yomlayezo: kungenye insizakalo lapho umthengisi athumela khona imiyalezo kwiklayenti lomamukeli elixhunyiwe, ehlunga ngohlobo lomyalezo. Uma iklayenti noma idivaysi etholwayo inqanyuliwe, imilayezo ilahlekile (yize ingahle ibe nohlelo oluthile lokungena).
Izivumelwano ze-IoT
Sesikubonile okungenhla, manje ake sibhekisise Izivumelwano ze-IoT lokho kwaziwa kangcono. Phakathi kokuvelele kakhulu kwe-M2M kukhona:
- I-AMQP (iProthokholi Yomugqa Ethuthukile Yomugqa): yiphrothokholi yohlobo lwe-PubSub yomugqa womyalezo. Idizayinelwe ukusebenzisana okuhle futhi iqinisekise ukuthembeka. Okukhethekile kwezicelo zebhizinisi, ukusebenza okuphezulu, amanethiwekhi wokubambezeleka aphezulu, okubucayi, njll.
- I-WAMP (Protocol Web Messaging Protocol): kungenye iphrothokholi evulekile yohlobo lwePubSub njenge-rRPC, futhi isebenza kumaWebSocket.
- I-CoAP (Uhlelo Olunqunyelwe Lokusebenza): umthetho olandelwayo ngokukhethekile owenzelwe izinhlelo zokusebenza ezinamandla aphansi.
- I-TOMP (Iphrothokholi Yokusakaza Imibhalo Esuselwe): umthetho olula kakhulu wokufeza ukusebenzisana okuphelele. I-HTTP isetshenziselwa ukudlulisa imiyalezo.
- I-XMPP (i-eXtensible Messaging and Presence Protocol): enye iphrothokholi esetshenziswe ku-IoT yezinhlelo zokusebenza zemiyalezo esheshayo futhi isuselwa ku-XML. Jan leli cala nalo livuliwe.
- I-WMQ (Umugqa Womyalezo WeWebSphere): umthetho olandelwayo owenziwe yi-IBM. Luhlobo lomugqa womlayezo, njengoba igama lalo liphakamisa, futhi luqondiswe kumlayezo.
- I-MQTT: (bheka isigaba esilandelayo)
Konke mayelana ne-MQTT
El Iphrothokholi ye-MQTT Yiprothokholi yokuxhumana yomugqa womyalezo, elandela iphethini yePubSub, nohlobo lwe-M2M, njengoba sengishilo. Isetshenziswa kabanzi ku-IoT, futhi isuselwa kwisitaki se-TCP / IP esisetshenziswe kwi-Intanethi.
Endabeni ye-MQTT, konke ukuxhumana kugcinwa kuvulekile futhi isetshenziswa futhi kukho konke ukuxhumana okudingekayo. Okuthile okwehlukile kulokho okwenzeka kwezinye izinqubo ezaziwayo, ukuthi ukuxhumana ngakunye okwenzekayo kudinga ukuxhumana okusha.
Izinzuzo
Izinzuzo ze-MQTT protocol zisobala impela ngokuya nge-M2M yezokuxhumana ze-IoT. Ngaphezu kwakho konke okushiwo ngenhla, kuyisivumelwano esinikeza:
- Scalability, ukuxhuma amakhasimende amaningi.
- Ukuncipha phakathi kwamakhasimende, ngokuthembela okuncane.
- Asynchronism.
- Ukulula.
- Ukukhanya ukuze kungadli izinsiza eziningi (yize kunokuvikeleka kwe-TLS / SSL kukhuphuka).
- Yonga amandla amadivayisi ancike ebhetri noma asebenze 24/7, ayidingi umkhawulokudonsa omkhulu (olungele ukuxhumana okuhamba kancane, njengamanye angenantambo).
- Ukuphepha nekhwalithi, ngokuthembeka okukhulu nokuqina ekuxhumaneni.
historia
I-MQTT yadalwa ngeminyaka yama-90s, ngenguqulo yokuqala ye- umthetho olandelwayo ngo-1999. Yenziwe nguDkt. Andy Stanford-Clark we-IBM no-Arlen Nipper we-Cirrus Link (owayekade eyi-Eurotech).
La umbono wokuqala kwakungukudala umthetho olandelwayo wokuqapha ipayipi elidabula ogwadule, ngenqubo yokuxhumana ephumelelayo (ukusetshenziswa komkhawulokudonsa ophansi), ukukhanya, nokuthi ukusetshenziswa kwamandla okuphansi. Ngaleso sikhathi kwakubiza kakhulu, kepha manje sekuyiprothokholi eshibhile futhi evulekile.
Iphrothokholi yokuqala yathuthukiswa ngokubonakala kwe- izinhlobo ezintsha, njenge-MQTT v3.1 (2013) ngaphansi kwemininingwane ye-OASIS (Organisation for the Advancement of Structured Information Standards), njll. Kufanele wazi ukuthi ekuqaleni bekuyiprothokholi ephathelene ne-IBM, kepha ukuthi izokhishwa ngo-2010, futhi yagcina iba yindinganiso ku-OASIS ...
Uxhumano lwe-MQTT lusebenza kanjani
Iphrothokholi ye-MQTT isebenzisa isihlungi, kumilayezo ethunyelwa kwiklayenti ngalinye, ngokususelwa ezihlokweni noma ezihlokweni ezihlelwe ngokwezigaba. Ngale ndlela, ikhasimende lingathumela umlayezo esihlokweni esithile. Ngale ndlela, wonke lawo maklayenti noma amadivayisi axhunyiwe abhalisela esihlokweni azothola imilayezo ngomthengisi.
Njengoba kunjalo nge-MQ, imilayezo izohlala kulayini futhi azilahlekile kuze kube yilapho iklayenti lithole lowo mlayezo.
Ukuxhumana, njengoba ngikhombisile, kuyenziwa nge-TCP / IP, futhi iseva noma umthengisi uzogcina irekhodi lamakhasimende axhunyiwe. Ngokuzenzakalelayo, amadivayisi azosebenzisa amachweba okuxhumana angama-1883, noma ungathola futhi itheku 8883 uma usebenzisa i-SSL / TLS ukuphepha okungeziwe.
Ukuze uxhumano lube khona, akudingeki amaklayenti kuphela, amaseva namachweba. Futhi abanye amaphakheji noma imilayezo ethunyelwe ukuze ukuxhumana kwenzeke:
- Sungula ukuxhumana: Xhuma umyalezo / iphakethe elithunyelwe iklayenti ngayo yonke imininingwane edingekayo. Lolo lwazi lubandakanya i-ID yekhasimende, igama lomsebenzisi, iphasiwedi, njll. Umthengiseli noma iseva uphendula ngephakethe le-CONNACK elizokwazisa iklayenti ukuthi ukuxhumeka kwamukelwe, kwenqatshwa, njll.
- Thumela futhi wamukele imilayezo: Uma nje ukuxhumana sekutholakele, PUBLISH amaphakheji noma imiyalezo isetshenziswa nesihloko nokulayishwa okukhokhelwayo komyalezo othunyelwe kumthengisi. Ngakolunye uhlangothi, iklayenti elithandayo noma amaklayenti asebenzisa amaphakheji we-SUBSCRIBE ne-UNSUSCRIBE ukubhalisa noma ukuhoxisa okubhalisile ngokulandelana. Umthengisi uzophinda aphendule nge-SUBACK ne-UNSUBACK package ngokulandelana ukubika impumelelo yokusebenza okucelwe yikhasimende.
- Ukugcina ukuxhumeka: Ukuqinisekisa ukuthi ukuxhumana kuhlala kuvulekile, amaklayenti angathumela ngezikhathi ezithile iphakethe le-PINGREQ elizofaniswa nephakethe le-PINGRESP elivela kuseva.
- Qeda ukuxhumeka: lapho iklayenti linqamula lithumela iphakethe le-DISCONNECT ukubika lowo mcimbi.
Labo imiyalezo noma amaphakheji Laba engikhulume ngabo banesakhiwo esifana namanye amaphakethe wezinye izivumelwano zenethiwekhi:
- Unhlokweni noma unhlokweni olungisiwe: yingxenye engaguquki ehlala phakathi kwama-byte ama-2-5. Inekhodi yokulawula, i-ID yohlobo lomyalezo othunyelwe, nobude bayo. Phakathi kwama-byte angu-1-4 kusetshenziselwa ukufaka ubude, kusetshenziswa izingcezu zokuqala eziyi-7 ze-octet ngayinye njengedatha yobude nokunye okuqhubekayo kokunquma ukuthi kukhona i-byte engaphezu kweyodwa eyenza ubude bomyalezo.
- Unhlokweni oguqukayo: akuhlali kuphoqelekile, kepha kuyakhethwa. Iqukethe kuphela amaphakheji athile ezimweni ezithile noma imiyalezo ethile.
- Okuqukethwe noma idatha: idatha yepakethe yilokho empeleni okuqukethe umyalezo ozothunyelwa. Kungaba kusuka kuma-kB ambalwa kuze kufike kumkhawulo we-256 MB.
Uma unesifiso sokwazi ikhodi ehambisanayo ku-hexadecimal izinhlobo zemilayezo ethunyelwe yilezi:
Mensaje | Ikhodi |
---|---|
XHUMANA | 0x10 |
BUYELA | 0x20 |
OKUSHA | 0x30 |
IPUBACK | 0x40 |
I-PUBREC | 0x50 |
IPHEPHA | 0x60 |
I-PUBCOMP | 0x70 |
BHALISA | 0x80 |
UMBUSO | 0x90 |
ZINGAZIBHALI | 0xA0 |
VULA | 0xb0 |
I-PINGREQ | 0xC = |
I-PINGRESP | 0xd0 |
QAPHELA | 0xE0 |
Ikhwalithi nokuphepha kwezokuxhumana
Enye imininingwane ebalulekile yemilayezo eyenziwe yi-MQTT yifayela le- ikhwalithi yesevisi noma i-QoS, nokuphepha. Ukuqina kohlelo lokuxhumana uma kwenzeka ukwehluleka nokuphepha kwalo kuzoya ngalokhu.
Ngokuphathelene nekhwalithi yayo, kunganqunywa 3 amazinga ehlukene:
- I-QoS 0 (ukungazi)- Umlayezo uthunyelwa kanye kuphela, futhi uma kwenzeka wehluleka wawungeke uhanjiswe. Isetshenziswa lapho kungagxili.
- I-QoS 1 (yazisa): umyalezo uzothunyelwa kaningi ngangokunokwenzeka ukuze kuqinisekiswe ukulethwa kukhasimende. Okubi ukuthi iklayenti lingathola umyalezo ofanayo kaningana.
- I-QoS 2 (iqinisekisiwe)- Kuyafana nangaphezulu, kepha kuqinisekisiwe ukulethwa kanye kuphela. Ijwayele ukusetshenziselwa izinhlelo ezibucayi kakhulu lapho kudingeka khona ukuthembeka okukhulu.
Ngakolunye uhlangothi, ngokuqondene ne- Ukuphepha kwe-MQTT, izindlela ezahlukahlukene zingasetshenziswa ukuqinisekisa amandla ayo kulokhu. Njengoba ngishilo ngaphambili, ukuqinisekiswa kwegama lomsebenzisi nephasiwedi, njengezinye izivumelwano eziningi, kungaqinisekiswa nge-SSL / TLS. Yize amadivayisi amaningi we-IoT anekhono eliphansi, noma izinsizakusebenza, angaba nezinkinga ngokweqile komsebenzi lapho esebenzisa lolu hlobo lokuxhumana okuphephile ...
Ngalesi sizathu, amadivayisi amaningi we-IoT asebenzisa i-MQTT asebenzisa amaphasiwedi nabasebenzisi ku umbhalo wendiza, okungenza umuntu ahogele ithrafikhi yenethiwekhi ukuze ayithole kalula. Futhi uma lokho kunganele, umthengisi angalungiselelwa ukwamukela ukuxhumana okungaziwa, okuzovumela noma yimuphi umsebenzisi ukuthi aqale ukuxhumana, okubandakanya ubungozi obukhulu.
Usebenzisa i-MQTT nge-Arduino
Vele ungakwazi sebenzisa umthetho olandelwayo we-MQTT nge-Arduino namanye amabhodi entuthuko, kanye neRapsberry Pi, njll. Ukuze wenze lokhu, kufanele unikeze ibhodi yakho ye-Arduino ngokuxhuma, uma ingenayo. Futhi, umtapo wezincwadi Iklayenti le-Arduino le-MQTT kuzokusiza kule misebenzi. Lo mtapo wezincwadi uhambelana ne:
- I-Arduino YUN
- I-Arduino WiFi (isihlangu)
- I-Arduino Ethernet (isihlangu)
- Imodyuli ye-ESP8266
- I-Intel Galileo / Edison
- I-Rapsberry Pi
- ...
Ngokushesha uma kukhodi yokusebenzisa i-MQTT kolunye uhlelo lokusebenza, iqiniso ukuthi lilula. Esithombeni seFritzing ungabona uqwembe Arduino UNO lapho ukuxhumeka kungezwe khona yi-Arduino Ethernet futhi kuxhunyiwe futhi umswakama we-DHT22 nomswakama wokushisa, noma kungaba yini enye into ...
Kulungile, ngokushiwo lokho, ngekhodi okufanele uyikhiqize I-Arduino IDE Ukusebenza ngephrothokholi ye-MQTT ku-Arduino, kulula lokho:
- para thumela imiyalezo I-MQTT
#include <SPI.h> #include <Ethernet.h> #include <PubSubClient.h> #include <DHT.h> #define DHTPIN 2 #define DHTTYPE DHT22 // Direccion MAC del adaptador Ethernet byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 }; // IP del servidor (broker) IPAddress mqtt_server(192, 168, 1, 4); // Topic o tema con el que se trabaja const char* topicName = "test"; DHT dht(DHTPIN, DHTTYPE); EthernetClient ethClient; PubSubClient client(ethClient); void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Fallo en Ethernet usando DHCP"); } // Puerto 1883 de comunicación client.setServer(mqtt_server, 1883); dht.begin(); } void loop() { if (!client.connected()) { Serial.print("Conectando ...\n"); client.connect("Cliente Arduino"); } else { // Envío de informacion del sensor de temperatura y humedad float temp = dht.readTemperature(); char buffer[10]; dtostrf(temp,0, 0, buffer); client.publish(topicName, buffer); } // Tiempo entre envíos en ms (cada 10 segundos) delay(10000); }
- para thola imiyalezo nge-MQTT udinga ipuleti kuphela Arduino UNO nokuxhumana, ne-Arduino Ethernet noma enye into. Ngokuqondene nekhodi, isibonelo kungaba:
#include <SPI.h> #include <Ethernet.h> #include <PubSubClient.h> // Direccion MAC del adaptador Ethernet byte mac[] = { 0xCE, 0xAB, 0x0E, 0x3F, 0xFE, 0xD4 }; // IP del servidor (broker) IPAddress mqtt_server(192, 168, 1, 4); // Topic o tema con el que trabajr const char* topicName = "test"; EthernetClient ethClient; PubSubClient client(ethClient); void callback(char* topic, byte* payload, unsigned int length) { Serial.print("El mensaje ha llegado ["); Serial.print(topic); Serial.print("] "); int i=0; for (i=0;i<length;i++) { Serial.print((char)payload[i]); } Serial.println(); } void setup() { Serial.begin(9600); if (Ethernet.begin(mac) == 0) { Serial.println("Fallo en Ethernet al usar configuración DHCP"); } client.setServer(mqtt_server, 1883); client.setCallback(callback) } void loop() { if (!client.connected()) { Serial.print("Conectando ..."); if (client.connect("rece_arduino")) { Serial.println("conectado"); client.subscribe(topicName); } else { delay(10000); } } // Cliente a la escucha client.loop(); }
Ngeminye imininingwane, unga download mahhala wethu Ibhukwana le-PDF ngenkambo ye-Arduino IDE ukuqala izinhlelo.