I-MQTT: umthetho olandelwayo wenethiwekhi ovulekile nokubaluleka kwawo ku-IoT

Inethiwekhi ye-MQTT protocol IoT

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

Imodeli ye-OSI nezendlalelo zayo

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

Iphrothokholi ye-MQTT

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

Iphakethe le-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

Arduino UNO nge-MQTT

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:

Usuvele uyazi ukuthi ungalanda futhi ufake umtapo wezincwadi ku-Arduino IDE yakho usebenzisa umyalo: i-git clone https://github.com/knolleary/pubsubclient.git

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();
}

Khumbula ukuthi kufanele ushintshe i-IP iye kwesifanele iseva, futhi kufanele ushintshe nekheli le-MAC le-adapter yenethiwekhi yakho ye-Ethernet noma leyo oyisebenzisayo, kanye nayo yonke ikhodi uma uhlose ukuyivumelanisa ne- iphrojekthi ehlukile. Lesi yisibonelo nje!

Ngeminye imininingwane, unga download mahhala wethu Ibhukwana le-PDF ngenkambo ye-Arduino IDE ukuqala izinhlelo.


Yiba ngowokuqala ukuphawula

Shiya umbono wakho

Ikheli lakho le ngeke ishicilelwe. Ezidingekayo ibhalwe nge *

*

*

  1. Ubhekele imininingwane: Miguel Ángel Gatón
  2. Inhloso yedatha: Lawula Ugaxekile, ukuphathwa kwamazwana.
  3. Ukusemthethweni: Imvume yakho
  4. Ukuxhumana kwemininingwane: Imininingwane ngeke idluliselwe kubantu besithathu ngaphandle kwesibopho esisemthethweni.
  5. Isitoreji sedatha: Idatabase ebanjwe yi-Occentus Networks (EU)
  6. Amalungelo: Nganoma yisiphi isikhathi ungakhawulela, uthole futhi ususe imininingwane yakho.