MQTT: waa borotokool shabakad furan iyo muhiimada ay leedahay IoT

Shabakada borotokoolka MQTT IoT

Xusuusnow magaca MQTT, maaddaama ay tahay borotokollool xiriir isgaarsiineed oo ah nooca M2M (Mashiinka Mashiinka) oo dhawaq badan maqli doona Waxay noqoneysaa mid caan ah mahadnaqa waayaha cusub ee Internetka Waxyaabaha ama IoT (Internetka Waxyaabaha) loogu soo gaabiyay Ingiriisiga. Intaas waxaa sii dheer, waa maamuus furan, oo siiya faa'iidooyin badan.

Xaqiiqdii, waxay noqotay mid ka mid ah tiirarka dhexe ee IoT, maaddaama ay aad ugu fiican tahay qalabka leh xaddidaadda gudbinta qaar sida kuwan oo kale ah. Gaabinta MQTT waxay ka timid Fariinta Safka Telemetry Gaadiidka, Heer furan oo ka socda OASIS iyo ISO (ISO / IEC 20922) ee isgaarsiinta shabakadda iyo guud ahaan waxay ku socotaa caanka caanka ah ee TCP / IP.

Nidaamyada shabakadda

Habka OSI iyo lakabkiisa

ka hab maamuuska isgaarsiinta Iyagu waa xeerar u oggolaanaya laba ama in ka badan aalado ama nidaamyo ay ku wada xiriiri karaan. Taasi waa, waa borotokool lagu gudbiyo macluumaadka qaabab kala duwan iyo qaab qeexan, ha lagu fuliyo softiweer iyo qalab (ama labadaba).

El heerka hab maamuuska wuxuu qeexayaa sifooyin fara badan oo isgaarsiineed. Waxay ka bixi kartaa xeerarka iswaafajinta, macnaha ereyada, qaabeynta, qaabka baakadka, iwm. Runtuna waxay tahay inaysan ahayn wax la iska indhatiri karo, maaddaama ay mahadsantahay borotokollada maanta aan adeegsan karno internetka iyo shabakadaha kale ee isgaarsiinta ...

Dabcan, ma jiro hal maamuus oo keliya, laakiin qaar badan. Tusaale ahaan, caanka ah DNS, FTP, MQTT, HTTP iyo HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP, iwm. Intii aad ku jirtay lakabka gaadiidka waxaad ka heli kartaa qaar caan ah sida TCP, UDP, iwm, iyo sidoo kale kuwa lakabka internetka sida IPv4, ama IPv6 (midka suurta galiyay tirada ugu badan ee IP-yada la heli karo iyo imaatinka IoT), IPSec, iwm, iyo kuwa kale oo ka socda lakabka isku xirka sida DSL, Ethernet, WiFi, ARP, iwm.

Ku saabsan hab maamuuska IoT

Borotokoolka MQTT

Dabcan, waxaa jira hab maamuusyo isgaarsiineed oo gaar ah ama lagu dabaqi karo IoT. Taasi waa in la yiraahdo, iyadoo la tixgelinayo qaybtii hore, waxay noqon lahaayeen taxane taxane ah oo qeexan si labo ama in ka badan aaladaha IoT ay u wada xiriiraan oo ay isu fahmaan, waxayna badanaa yihiin M2M, taas oo ah, isgaarsiinta mashiin-ilaa-mashiin. aalado badan oo IoT ah ayaa ku xiran lana wadaagaya macluumaadka dareemayaasha ama ilo kale.

Sababtoo ah tirada badan ee qalabka IoT, hab maamuusyadani waa inay buuxiyaan shuruudaha ka baxsan xaddidaadda bawdada, xawaaraha, iwm. (la soco in aalado badan ay gundhig yihiin oo raqiis yihiin), taas oo badanaa ku jirta qalabka qaar. Oo waxaan ula jeedaa xaqiiqda taas waa in la qiyaasi karaa, si aad u awoodo inaad ku darto qalab badan oo isku xiran haddii loo baahdo oo aan saameyn ku yeelan nidaamka caalamiga ah.

Sidoo kale, waa inay leeyihiin a ku tiirsanaanta hoose isku xidhka aaladaha dhexdooda, si dhibaatooyinka aan loo soo saarin haddii qalab laga saaro. Dabcan, isla waqtigaas, isdhexgal sare ayaa la raadiyaa si ay ula shaqeyso tiro badan oo qalab iyo nidaamyo aad u kala duwan, maadaama adduunka IoT uu yahay mid aad u kaladuwan.

Tilmaamo kale oo faa'iido leh ayaa noqon kara sahlanaanta fulintooda, amniga, iwm Maskaxda ku hay in IoT-ku uu abuurayo caqabado waaweyn dhinaca amniga. Xitaa intaa ka sii badan markii qaar badan oo ka mid ah aaladaha ku xiran ay u muuqdaan kuwo muhiim u ah xaaladaha qaarkood ... tusaale ahaan, alaabada carruurtu ku ciyaaraan.

Fikradaha muhiimka ah

Taasi waxay tiri, waa in la sheegaa in xalalka IoT ay adeegsadaan server dhexe si ay uga helaan fariimaha dhamaan aaladaha ku xiran ee sii deynaya una qeybiya dhamaan aaladaha isku xiran ee IoT ee dhageysanaya. Server-kaasi waa waxa loo yaqaan router ama dillaal. Wax aad uga fog xiriirka caadiga ah ee macmiilka iyo serverka siyaabo qaar.

Dhinaca kale, nidaamka in aad ka heli karto nidaamyadan isgaarsiineed ee IoT waa:

  • PubSub: Daabac / Jooji waa qaab fariin oo qalab (Sub) ku ogeysiiyo dillaalka inuu doonayo inuu farriin helo, halka qalab kale (Pub) u daabaco farriimo dillaalku ugu qaybiyo aaladda kale / s ka sugaya.
  • rRPC: Wicitaanada Nidaamka Dib-u-habeeyaha router waa qaab kale oo lagu fuliyo habeyn fog. Dhexdeeda, qalab (Callee) wuxuu ku wargelinayaa dillaalka inuu fulin doono hanaan cayiman oo dillaalku u qaybiyo qalab kale (Wicitaan) kaas oo lagu sheegay in howsha lagu fulinayo.

Hadda, si loo fuliyo nidaamyadan ama qaababkan, a kaabayaasha fariimaha. Dareenkanna laba ayaa lagu kala saari karaa:

  • Safka Farriinta: adeegga farriinta halka hal saf oo fariin ah loogu talagalay dhammaan macaamiisha bilaabaya rukunka dillaalka. Qaybta dambe ayaa hayn doonta farriimaha illaa loo dhiibo macmiilka. Haddii macmiilka ama qaataha uusan ku xirnayn, waa la hayaa ilaa la isku xirayo. Noocyadaas adeegyadu waa sida kuwa loo isticmaalo barnaamijyada farriimaha degdegga ah sida Telegra, WhatsApp, Messenger, iwm.
  • Adeegga Farriinta: waa adeeg kale oo dillaalku fariimaha ugu diro macmiilka qaataha ah ee ku xiran, kuna shaandheeya nooca farriinta. Haddii macmiilku ama qalabka qaata uu go'ay, markaa farriimaha waa lumayaan (in kastoo laga yaabo inay leeyihiin xoogaa nidaam qoris ah).

Hab maamuuska IoT

Markaan kor ku soo aragnay, haddaba aan fiirino si dhow Hab maamuuska IoT taas ayaa si fiican loo yaqaan. Kuwa ugu caansan ee M2M waa:

  • AMQP (Hab maamuuska Safka Hore ee Fariinta): waa maamuuska nooca PubSub ee Safka Farriinta. Loogu talagalay in la yeesho wada shaqeyn wanaagsan oo la hubiyo kalsoonida. Gaar ahaan codsiyada shirkadaha, waxqabadka sare, shabakadaha daahitaanka sare, muhiim, iwm.
  • WAMP (Hab maamuuska Fariinta Webka): waa maamuus furan oo kale oo nooca PubSub ah sida rRPC, oo wuxuu ku shaqeeyaa WebSockets.
  • CoAP (Protocol Codsi Xaddidan): waa borotokol si gaar ah loogu talagalay codsiyada kartida yar.
  • TOMP (Borotokoolka Baahinta Qoraalka Ujeedka qoraalka): hab maamuus aad u fudud iyo in la gaaro wada shaqeynta ugu badan. HTTP waxaa loo adeegsadaa gudbinta fariimaha qoraalka ah.
  • XMPP (eXtensible Fariin iyo Jiritaanka Protocol): Borotokool kale oo loo adeegsaday IoT barnaamijyada fariimaha degdega ah laguna saleeyay XML. Jan kiiskan sidoo kale wuu furan yahay.
  • WMQ (Safka Farriinta WebSphere): borotokool ay soo saartay IBM. Waa nooca Safka Farriinta, sida magaceedaba ka muuqata, oo u janjeedha farriinta.
  • MQTT: (eeg qaybta xigta)

Dhammaan wixii ku saabsan MQTT

Xidhmada MQTT

El Borotokoolka MQTT Waa borotokool isgaarsiineed oo fariin ah, oo raacaya qaabka PubSub, iyo nooca M2M sidaan horayba u soo sheegay. Waxaa si weyn loogu isticmaalaa IoT-ka, wuxuuna ku saleysan yahay xargaha TCP / IP ee loo isticmaalo internetka.

Xaaladda MQTT, xiriir kasta waa furan yahay waxaana dib loogu isticmaalaa xiriir kasta oo lagama maarmaan ah. Wax ka duwan waxa ku dhaca borotokollada kale ee la yaqaan, ee isgaarsiinta kasta ay dhacdo waxay u baahan tahay xiriir cusub.

Faa'iidooyinka

Faa'iidooyinka borotokoolka MQTT waa kuwo iska cad marka loo eego isgaarsiinta M2M ee IoT. Wax kasta oo kor lagu sheegay ka sokow, waa borotokool bixiya:

  • Kasbasho, si loogu xiro macaamiil badan.
  • Hoos u dhigida macaamiisha, ku tiirsanaanta oo yaraata.
  • Asynchronism.
  • Fudeyd
  • Iftiiminta si aysan u cunin ilo aad u tiro badan (in kasta oo amniga TLS / SSL uu kor u kaco).
  • Tamarta tamarta leh ee aaladaha ku tiirsan batteriga ama shaqada 24/7, uma baahna baaxad ballaadhan (oo ku habboon isku-xirnaanta gaabiska ah, sida kuwa wireless-ka qaarkood).
  • Amniga iyo tayada, si loo helo kalsooni weyn iyo ku xirnaanta isgaarsiinta.

Taariikhda Soomaaliya

MQTT waxaa la abuuray 90-meeyadii, iyadoo nooca hore ah hab maamuuska 1999. Waxaa abuuray Dr. Andy Stanford-Clark oo ka tirsan IBM iyo Arlen Nipper oo ka tirsan Cirrus Link (oo horey u ahaan jiray Eurotech).

La fikradda bilowga ah waxay ahayd in la sameeyo borotokol lagu kormeero dhuumaha maraya dhulka lama degaanka ah, iyadoo la adeegsanayo hab maamuus isgaarsiineed oo hufan (isticmaalka baaxada yar), iftiinka, iyo in tamar hooseysa la isticmaalo. Waqtigaas wuxuu ahaa mid aad qaali u ah, laakiin hadda wuxuu noqday maamuus jaban oo furan.

Hab maamuuska bilowga ah waxaa lagu hagaajiyay muuqaalka noocyo cusub, sida MQTT v3.1 (2013) oo hoos imanaya qeexitaanka OASIS (Ururka Horumarinta Heerarka Macluumaadka Habaysan), iwm. Waa inaad ogaataa in bilowgii ay ahayd maamuus lahaansho IBM ah, laakiin in la sii deyn doono 2010, waxayna aakhirkii noqotay heer OASIS ...

Sidee isku xirka MQTT u shaqeeyaa

Borotokoolka MQTT wuxuu adeegsadaa filter, farriimaha loo dirayo macmiil kasta, oo ku saleysan mowduucyo ama mowduucyo si habeysan loo abaabulay. Sidan oo kale, macaamilku wuxuu fariin ugu diri karaa mowduuc gaar ah. Sidan oo kale, dhammaan macaamiishaas ama aaladaha ku xiran ee u-qorma mawduuca waxay ka heli doonaan farriimo dallaalka.

Sida MQ, farriimaha ayaa ku jiri doona safka mana lumayaan ilaa macmiilku helo fariintaas.

Isku xirnaanta, sidaan sidoo kale tilmaamay, waa la sameeyay iyada oo loo marayo TCP / IP, iyo adeegaha ama dallaalka ayaa hayn doona diiwaanka macaamiisha ku xiran. Sida caadiga ah, aaladuhu waxay isticmaali doonaan dekedaha isgaarsiinta nambarkoodu yahay 1883, in kasta oo aad sidoo kale la kulmi karto dekedda 8883 haddii aad u isticmaaleyso SSL / TLS nabadgelyo dheeraad ah.

Si isku xirku u suurta galo, maahan oo keliya macaamiisha, serverka iyo dekedaha. Sidoo kale kuwa kale xirmooyinka ama farriimaha la diray isgaarsiinta inay dhacdo:

  • Samee xiriir: KU xidhnow farriinta / baakadda uu soo diray macmiilku oo ay la socdaan dhammaan macluumaadka loo baahan yahay. Macluumaadkaas waxaa ka mid ah Aqoonsiga macaamiisha, magaca isticmaalaha, lambarka sirta, iwm. Dilaalka ama adeegaha ayaa ku jawaabaya baakad 'CONNACK' ah oo u sheegi doonta macmiilka in xiriirkii la aqbalay, la diiday, iwm.
  • Soo dir oo soo dir fariimaha: mar haddii xiriirku hirgalo, xirmooyinka ama farriimaha FADHIGA ayaa loo adeegsadaa mowduuca iyo culeyska mushaarka ee loo dirayo dillaalka. Dhinaca kale, macmiilka ama macaamiisha xiisaha lihi waxay isticmaalaan xirmooyinka SUBSCRIBE iyo UNSUSCRIBE si ay u qoraan ama uga noqdaan diiwaankooda siday u kala horreeyaan. Dilaalku wuxuu sidoo kale ku jawaabi doonaa xirmo SUBACK iyo UNSUBACK siday u kala horreeyaan si uu u soo sheego guusha hawlgalka uu codsaday macmiilku.
  • Joogtaynta xiriirka: si loo damaanad qaado in isku xirnaanshaha uu furan yahay, macaamiisha ayaa xilliyo diri kara baakad PINGREQ ah oo la jaan qaadi doonta baakada PINGRESP ee ka socota serverka.
  • Dhammaadka isku xidhka: markii macmiilku kala jabiyo waxay u dirtaa baakad DISCONNECT si ay u soo sheegto dhacdadaas.

Kuwaas fariimo ama baakado Kuwii aan ka hadlay waxay leeyihiin qaab-dhismeed la mid ah baakadaha kale ee borotokoollada kale ee shabakadda:

  • Madax ama madax go'an: waa qayb go'an oo degta inta udhaxeysa 2-5 bytes. Waxay ka kooban tahay lambar kontorool ah, aqoonsi nooca fariinta la diray, iyo dhererkiisa. Inta udhaxeysa 1-4 bytes ayaa loo isticmaalaa in lagu qoro dhererka, iyadoo la adeegsanayo 7-da qaybood ee ugu horreeya octet kasta oo ah xogta dhererka iyo xoogaa dheeraad ah oo sii socosho ah si loo go'aamiyo inay jiraan wax ka badan hal bayte oo ka dhigaya dhererka farriinta.
  • Madax isbeddel ah: markasta qasab maahan, laakiin waa ikhtiyaari. Kaliya waxaa ku jira xirmooyinka qaar xaaladaha qaarkood ama farriimo gaar ah.
  • Tusmada ama xogta: xogta xirmada waa tan runta ku jirta fariinta la dirayo. Waxay noqon kartaa dhowr kB illaa xadka 256 MB.

Hadaad xiisaynayso inaad ogaato nambarka u dhigma ee hexadecimal noocyada fariimaha la diray waa:

fariin Code
XUSUUS 0x10
XIRIIR 0x20
DAAWADA 0x30
DUUB 0x40
pubrec 0x50
DADWEYNAHA 0x60
pubcomp 0x70
SUBSCRBE 0x80
XILDHIBAAN 0x90
CALOOSHAAN 0xA0
LAMA HELI KARO 0xB0
PINGREQ 0xC =
PINGRESP 0xD0
FADLAN 0xE0

Tayada iyo amniga isgaarsiinta

Faahfaahin kale oo muhiim ah oo ka mid ah farriimaha MQTT waa tayada adeegga ama QoS, iyo amniga. Awoodda nidaamka isgaarsiinta haddii ay dhacdo guul darrooyin iyo nabadgelyadiisa waxay ku xirnaan doontaa tan.

Marka laga hadlayo tayadeeda, waa la go'aamin karaa 3 heerar kala duwan:

  • QoS 0 (aqoon la'aan)- Fariinta hal mar oo kaliya ayaa la diraa, haddii ay dhacdo in la fashiliyo lama soo gudbin lahaa. Waxaa loo adeegsadaa marka aysan muhiim ahayn.
  • QoS 1 (qira): farriinta waxaa loo diri doonaa inta jeer ee loo baahdo si loo dammaanad qaado gaarsiinta macaamiisha. Khasaaraha ayaa ah in macmiilku heli karo isla fariin dhowr jeer ah.
  • QoS 2 (waa la xaqiijiyay)- La mid ah tan kor ku xusan, laakiin waxaa la damaanad qaaday in mar keliya la geyn doono. Waxaa badanaa loo isticmaalaa nidaamyo aad u muhiim ah halkaasoo kalsooni weyn looga baahan yahay.

Dhinaca kale, sida loogu talagalay Amniga MQTT, tallaabooyin kala duwan ayaa loo isticmaali karaa si loo hubiyo xooggeeda arrintan la xiriira. Sidii aan horeyba u soo sheegay, sugida magaca isticmaale iyo erayga sirta ah, sida maamuusyo kale oo badan, ayaa lagu xaqiijin karaa iyadoo la adeegsanayo SSL / TLS. In kasta oo aalado badan oo IoT ah oo leh awood hoose, ama ilo, ay dhibaato kala kulmi karaan culeyska shaqada markii la isticmaalayo isgaarsiinta noocan ah ...

Sababtaas awgeed, aalado badan oo IoT ah oo adeegsada MQTT waxay adeegsadaan furayaasha sirta ah iyo adeegsadayaasha qoraalka diyaaradda, taas oo ka dhigi karta qof urta taraafikada shabakadda si ay si fudud ugu helaan. Haddayna taasi ku filnayn, dillaalka ayaa sidoo kale loo qaabeyn karaa inuu aqbalo xiriiro aan la aqoon, taas oo u oggolaanaysa isticmaale kasta inuu sameysto isgaarsiin, taasoo ku lug leh khatar weyn

Isticmaalka MQTT ee Arduino

Arduino UNO leh MQTT

Dabcan waad awoodaa isticmaal borotokoolka MQTT ee leh Arduino iyo looxyada kale ee horumarinta, iyo sidoo kale Rapsberry Pi, iwm. Si tan loo sameeyo, waa inaad siisaa guddigaaga Arduino isku xirnaanta, haddii uusan lahayn. Sidoo kale, maktabada Macmiilka Arduino ee MQTT waxay kaa caawin doontaa howlahaas. Maktabadani waxay ku habboon tahay:

  • ArduuinoYUN
  • Arduino WiFi (gaashaan)
  • Arduino Ethernet (gaashaan)
  • ESP8266 module
  • Intel Galileo / Edison
  • Pips Pi
  • ...
Waxaad horeyba u ogayd inaad soo dejisan karto oo aad rakibi karto maktabada ku jirta Arduino IDE adoo adeegsanaya amarka: git clone https://github.com/knolleary/pubsubclient.git

Sida ugu dhakhsaha badan koodhka loo adeegsado MQTT dalabka qaarkood, runta ayaa ah inay fududahay. Sawirka Fritzing waxaad ku arki kartaa huurada Arduino UNO kaas oo isku xidhka Arduino Ethernet lagu daray sidoo kalena lagu xidhay dareeraha qoyaanka iyo heerkulka ee DHT22, inkasta oo ay wax kale noqon lahayd ...

Waayahay, taas ayaa lagu yidhi, lambarka sirta ah ee aad ku abuuri karto gudaha Arduino bixisaa Si loola shaqeeyo borotokoolka MQTT ee Arduino, waa wax fudud:

  • para dir fariimo 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 hel farriimaha by MQTT waxaad u baahan tahay oo keliya saxanka Arduino UNO iyo xiriirinta, oo leh Arduino Ethernet ama walxo kale. Sida koodhka, tusaale ahaan wuxuu noqon karaa:
#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();
}

Xusuusnow inay tahay inaad u beddesho IP-ka mid ku habboon server-ka, waana inaad sidoo kale beddeshaa cinwaanka MAC ee adabtarada shabakadda Ethernet ama midka aad isticmaaleyso, iyo sidoo kale inta kale ee koodhka haddii aad damacsan tahay inaad la qabsato mashruuc ka duwan. Tani waa tusaale uun!

Wixii macluumaad dheeraad ah, waad awoodaa kala soo bax bilaash annaga Buugga PDF oo leh koorsada Arduino IDE si loo bilaabo barnaamijka.


Noqo kuwa ugu horreeya ee faallo bixiya

Ka tag faalladaada

cinwaanka email aan la daabacin doonaa. Beeraha loo baahan yahay waxaa lagu calaamadeeyay la *

*

*

  1. Masuul ka ah xogta: Miguel Ángel Gatón
  2. Ujeedada xogta: Xakamaynta SPAM, maaraynta faallooyinka.
  3. Sharci: Oggolaanshahaaga
  4. Isgaarsiinta xogta: Xogta looma gudbin doono dhinacyada saddexaad marka laga reebo waajibaadka sharciga ah.
  5. Kaydinta xogta: Macluumaadka ay martigelisay Shabakadaha Occentus (EU)
  6. Xuquuqda: Waqti kasta oo aad xadidi karto, soo ceshan karto oo tirtiri karto macluumaadkaaga.