MQTT: yakavhurika network protocol uye kukosha kwayo muIoT

MQTT protocol network IoT

Rangarira zita racho MQTT, sezvo iri network yekutaurirana protocol mhando M2M (Muchina kuMuchina) iri kuzorira zvishoma. Iri kuita mukurumbira chaizvo nekuda kwenguva nyowani yeInternet yezvinhu kana IoT (Internet yezvinhu) yezita rayo muChirungu. Uye zvakare, iyo yakavhurika protocol, iyo inopa akawanda mabhenefiti.

Muchokwadi, yave imwe yemapuramu epakati eIoT, sezvo iri yakanaka pamidziyo ine zvimwe zvinofambisa kufambisa seizvi. Chirevo MQTT chinobva Meseji Queue Telemetry Kutakura, yakavhurika chiyero kubva kuOASIS uye ISO (ISO / IEC 20922) yenetiweki kutaurirana uye iyo inowanzo mhanya pane inozivikanwa TCP / IP.

Zvirongwa zveNetwork

OSI modhi nematanho ayo

ari zvirevo zvekutaurirana Iyi mitemo inobvumidza maviri kana anopfuura michina kana masystem ekutaurirana. Ndokunge, iprotocol yekufambisa ruzivo kuburikidza nenzira dzakasiyana uye ine yakatsanangurwa fomati, ingave inoitwa ne software uye Hardware (kana zvese zviri zviviri).

El standard yeprotocol inotsanangura huwandu hwekutaurirana hunhu. Iyo inogona kuenda kubva kumitemo yekuenderana, semantics, syntax, packet fomati, nezvimwe. Uye chokwadi ndechekuti ivo havana kurerutsa, nekuti nekuda kwezvirongwa izvi nhasi tinogona kushandisa iyo Internet uye mamwe ma network ekutaurirana ...

Uye zvechokwadi, hapana imwe chete protocol, asi yakawanda. Semuyenzaniso, vane mukurumbira DNS, FTP, MQTT, HTTP uye HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP, nezvimwe. Paunenge uri muchikamu chekufambisa unogona kuwana mamwe anozivikanwa seTCP, UDP, nezvimwewo, pamwe neaya eiyo Internet dura senge IPv4, kana IPv6 (iyo yakagonesa huwandu hukuru hweanowanikwa IPs uye kusvika kwe iyo IoT), IPSec, nezvimwe, uye nezvimwe zvinobva pane yekubatanidza rukoko seDSL, Ethernet, WiFi, ARP, nezvimwe.

Nezve protocol dzeIoT

MQTT protocol

Ehezve, kune chaiwo marongero ekutaurirana kana ayo anogona kushandiswa kune iyo IoT. Ndokureva, tichifunga chikamu chakapfuura, ivo vaizove akateedzana eanotsanangurwa zviyero kuitira kuti mairi kana anopfuura maIoT michina ikwanise kutaurirana nekunzwisisana, uye ivo vanowanzove M2M, ndokuti, kutaurirana kwemuchina-kumuchina. akawanda maIoT zvishandiso akabatana uye achigovana ruzivo kubva kuma sensors kana zvimwe zviwanikwa.

Nekuda kwenhamba hombe yemidziyo yeIoT, aya maprotocol anofanirwa kusangana nezvinodiwa kupfuura zvinodarika bandwidth, kumhanya, nezvimwe. (cherekedza kuti akawanda madhijitari akasimbwa uye anodhura), ayo anowanzo kuve mune mamwe majaira. Uye ndinoreva izvo izvo inofanirwa kutyisa, kukwanisa kuwedzera mamwe madhivhizheni akabatana kana zvichidikanwa uye pasina kukanganisa iyo yepasi rose system.

Zvakare, ivo vanofanirwa kuve ne yakaderera kutsamira kubatanidza pakati pezvigadzirwa, kuitira kuti matambudziko arege kugadzirwa kana mudziyo wabviswa. Uye zvechokwadi, panguva imwechete, kushanda kwakanyanya kunotsvakwa kuitira kuti ishande nenhamba yakawanda yemidziyo uye masisitimu akasiyanasiyana, nekuti nyika yeIOT ine hunyoro hwakanyanya.

Zvimwe zvinobatsira zvingave zviri nyore kuzviita, kuchengetedzeka, nezvimwe. Ramba uchifunga kuti iyo IoT iri kugadzira matambudziko makuru mune yekuchengetedza mamiriro. Kunyanya zvakadaro kana akawanda emidziyo yakabatana achiwanzo kutsoropodza mune zvimwe zviitiko ... semuenzaniso, matoyi evana vadiki.

Pfungwa dzakakosha

Izvo zvakati, zvinofanirwa kutaurwa kuti mhinduro dzeIoT dzinoshandisa server yepakati kuti igamuchire iwo mameseji kubva kumidziyo yese yakabatana iyo inoburitsa nekuigovera kune ese akabatana maIoT matipi ari kuteerera. Iyo sevha ndiyo inozivikanwa se router kana broker. Chimwe chinhu chiri kure neyakajairwa mutengi-server hukama mune dzimwe nzira.

Kune rumwe rutivi, nzira iyo iwe yaunogona kuwana mune aya ekutaurirana prototocol yeIoT ndeaya:

  • PubSub: Shambadzira / Susbcribe maitiro ekutumira mameseji uko chishandiso (Sub) chinozivisa broker kuti inoda kugamuchira meseji, nepo imwe kifaa (Pub) ichiburitsa mameseji ekuti broker aendese kune imwe kifaa / s yakavamirira.
  • rRPC: Router Remoder Maitiro Ekufona ndiyo imwe nzira yekure kure maitiro ekuitwa. Mariri, chishandiso (Callee) chinozivisa mutengesi kuti ichaita imwe nzira uye mutengesi anoigovera kune chimwe chishandiso (Anofona) pane izvo zvataurwa zvinoitwa.

Zvino, kuita nzira idzi kana mapatani, a mameseji zvigadzirwa. Uye neiyi pfungwa mbiri dzinogona kusiananiswa:

  • Mutsara Wemashoko: kutumira mameseji uko mutsara mumwe chete mutsara unogadzirirwa kune vese vatengi vanotanga kunyorera kune broker. Iyo yekupedzisira inochengeta iwo mameseji akachengetwa kudzamara aendeswa kune mutengi. Kana mutengi kana iye anogamuchira asina kubatana, inochengetwa kusvikira yabatana. Aya marudzi emasevhisi akafanana neaya anoshandiswa mukukurumidza mameseji maapplication akadai seTelegra, WhatsApp, Messenger, nezvimwe.
  • Meseji Service: iri rimwe basa umo broker anotumira iwo mameseji kune akabatana anogamuchira mutengi, kusefa nerudzi rwemeseji. Kana mutengi kana chinogamuchirwa chikagurwa, mameseji acho anorasika (kunyangwe angave aine mamwe matanda).

Zvirongwa zveIoT

Taona zviri pamusoro, zvino ngatinyatso tarisa Zvirongwa zveIoT izvo zvinozivikanwa zviri nani. Pakati peakakurumbira eM2M ndeaya:

  • AMQP (Yepamberi Meseji Queue Protocol): ndeyePubSub yerudzi rweprotocol yeMeseji Meseji. Yakagadzirirwa kuve nekubatana kwakanaka uye kuve nechokwadi chekuvimbika. Kunyanya kumakambani ekushandisa, kuita kwakanyanya, kwakanyanya latency network, kutsoropodza, nezvimwe.
  • WAMP (Webhu Kunyorera Meseji Protocol): ndeimwe yakavhurika protocol yerudzi rwePubSub senge rRPC, uye inomhanya paWebSocket.
  • CoAP (Yakamanikidzwa Kunyorera Protocol): Protocol yakanyatsogadzirirwa ma low low application.
  • TOMP (Yekutenderera Mutauro Yakatemerwa Meseji Protocol: yakapusa protocol uye kuzadzikiswa kusabatana. HTTP inoshandiswa kutumira mameseji.
  • XMPP (eXtensible Messaging uye Presence Protocol): imwe protocol inoshandiswa muIOT yemapurogiramu ekutumira mameseji uye zvinoenderana neXML. Jan iyi nyaya yakavhurwawo.
  • WMQ (WebSphere Meseji Mutsara): protocol yakagadzirwa neBM. Iyo yerudzi rweMeseji Meseji, sekutaurwa kwezita rayo, uye inotarisana neshoko.
  • MQTT: (ona chikamu chinotevera)

Zvese nezve MQTT

MQTT package

El MQTT protocol Iyo Meseji Meseji yekutaurirana protocol, iyo inotevera PubSub pateni, uye yerudzi rweM2M, sezvandambotaura. Inoshandiswa zvakanyanya muIoT, uye yakavakirwa pane TCP / IP stack yakashandiswa paInternet.

Kana iri MQTT, kubatana kwese kunochengetwa kwakavhurika uye inoshandiswazve pakutaurirana kwese kunodiwa. Chimwe chinhu chakasiyana nezvinoitika mune mamwe maprotocol anozivikanwa, ayo kutaurirana kwese kunoitika kunoda kubatana kutsva.

Kubatsirwa

Zvakanakira iyo MQTT protocol zvinonyatso kuoneka maererano neM2M kutaurirana kweIoT. Pamusoro pezvese zvataurwa pamusoro, iprotocol inopa:

  • Scalability, kubatanidza vatengi vakawanda.
  • Kudonhedza pakati pevatengi, nekuda kwekutsamira kushoma.
  • Asynchronism.
  • Simplicity.
  • Chiedza kuti usapedze zviwanikwa zvakawandisa (kunyangwe iine TLS / SSL chengetedzo inokwira kumusoro).
  • Simba rinoshanda pamidziyo inoenderana nebhatiri kana kushanda 24/7, haidi bandwidth yakakura (yakanakira kunonoka kubatana, senge dzimwe dzisina waya).
  • Kuchengetedza uye mhando, pakuvimbika kukuru uye kusimba mukutaurirana.

Historia

MQTT yakasikwa muma90s, iine yekutanga vhezheni yeiyo protocol muna 1999. Yakagadzirwa naDr.Andy Stanford-Clark weBMM naArlen Nipper weCirrus Link (yaimbove Eurotech).

La pfungwa yekutanga yaive yekugadzira protocol yekutarisa pombi yaifamba nemurenje, ine inoshanda yekutaurirana protocol (yakaderera bandwidth kushandiswa), mwenje, uye kuti yakaderera simba rekushandisa. Panguva iyoyo yaidhura kwazvo, asi ikozvino yave yakachipa uye yakavhurika protocol.

Iyo yekutanga protocol yakavandudzwa nechitarisiko che shanduro itsva, senge MQTT v3.1 (2013) pasi peOASIS (Sangano reKufambira Mberi kweZvakatemerwa Ruzivo Maitiro) kududzirwa, nezvimwe. Iwe unofanirwa kuziva kuti pakutanga yaive proprietary protocol kubva kuIBM, asi kuti yaizoburitswa muna 2010, uye yakaguma yave muyero muOASIS ...

Mashandiro anoita MQTT kubatana

Iyo MQTT protocol inoshandisa sefa, kune iwo mameseji anotumirwa kune wega mutengi, zvichibva pamisoro kana nhaurwa dzakarongedzwa hierarchically. Nenzira iyi, mutengi anogona kutumira meseji pane imwe nhaurwa. Nenzira iyi, vese vatengi kana zvishandiso zvakabatana zvinonyorera kumusoro wenyaya vanogashira mameseji kuburikidza nebroker.

Sezvakaita MQ, mameseji acharamba ari mumutsetse uye havarasike kudzamara mutengi agamuchira meseji iyoyo

Kubatana, sezvandakaratidzawo, kunoitwa kuburikidza neTCP / IP, uye sevha kana broker inochengeta zvinyorwa zvevatengi vakabatana. Nokusingaperi, zvishandiso zvinoshandisa ekutaurirana emachiteshi nhamba 1883, kunyangwe iwe uchigona zvakare kuwana chiteshi 8883 kana iwe uri kushandisa SSL / TLS yekuwedzera kuchengetedzwa.

Kuti kubatana kuve kunogoneka, kwete chete vatengi, maseva uye madoko anodiwa. Uyezve vamwe mapakeji kana meseji dzakatumirwa kuti kutaurirana kuitike:

  • Simbisa kubatana: Batanidza meseji / packet yakatumirwa nemutengi ine ruzivo rwese rwunodiwa. Ruzivo irwo runosanganisira yevatengi ID, zita rekushandisa, password, nezvimwe. Iyo broker kana sevha inopindura neCONNACK packet inozozivisa mutengi kuti kubatana kwakatambirwa, kurambwa, nezvimwe.
  • Tumira uye gamuchira mameseji: kana iko kubatana kwatanga, PURAI mapakeji kana mameseji anoshandiswa nemusoro wenyaya uye mubhadharo weshoko rinotumirwa kune broker. Kune rimwe divi, mutengi anofarira kana vatengi vanoshandisa SUBSCRIBE uye UNSUSCRIBE mapakeji ekunyorera kana kubvisa kwavo kunyorera zvakateerana. Iyo broker ichapindura zvakare neSUBACK uye UNSUBACK package zvakateedzana kuti vataure kubudirira kwekushanda kwakakumbirwa nemutengi.
  • Kuchengetedza kubatana: kuvimbisa kuti kubatana kunoramba kwakavhurika, vatengi vanogona nguva nenguva kutumira PINGREQ packet iyo ichafananidzwa nePINGRESP packet kubva kuseva.
  • End kubatana: kana mutengi akadimbura anotumira iyo DISCONNECT packet yekuzivisa chiitiko ichocho.

Avo mameseji kana mapakeji Iwo andakataura nezvawo ane chimiro chakafanana nemamwe mapaketi emamwe maratidziro enetiweki:

  • Musoro kana wakagadziriswa musoro: chikamu chakamisikidzwa chinogara pakati pe2-5 mabheti. Iyo ine kodhi yekudzora, ID yerudzi rwemeseji yakatumirwa, uye kureba kwayo. Pakati pe 1-4 mabheti anoshandiswa kukomberedza urefu, uchishandisa iwo ekutanga mabheti e7 octet sedata rehurefu uye imwezve yekuenderera yekuona kuti pane inopfuura imwechete byte inogadzira kureba kweshoko.
  • Musoro unosiyana: hazvi ganhurirwe nguva dzose, asi sarudzo. Iyo inongori mune mamwe mapakeji mune mamwe mamiriro kana chaiwo mameseji.
  • Zvemukati kana dhata: iyo packet dhata ndiyo inotova nemeseji inotumirwa. Inogona kubva kune mashoma kB kusvika pamuganhu we256 MB.

Kana iwe uchifarira kuziva kodhi inoenderana mu hexadecimal yemhando dzemeseji dzakatumirwa ndeidzi:

Mensaje Code
CONNECT 0x10
KUDZOKA 0x20
BUDISA 0x30
PUBACK 0x40
pubrec 0x50
PUBREL 0x60
pubcomp 0x70
SUBSCRBE 0x80
SUBACK 0x90
SUNSCRIBE 0xA0
UNSUBACK 0xB0
PINGREQ 0xC =
PINGRESP 0xD0
KUSAURA 0xE0

Hunhu uye chengetedzo yekutaurirana

Imwe tsananguro yakakosha yemessage neMQTT ndiyo mhando yebasa kana QoS, uye kuchengetedzeka. Iko kusimba kweiyo yekutaurirana system mune chiitiko chekutadza uye kuchengetedzeka kwayo kunoenderana neizvi.

Nezve mhando yayo, inogona kutsanangurwa 3 mazinga akasiyana:

  • QoS 0 (kusaziva)- Iyo meseji inotumirwa kamwe chete, uye kana ikatadza yaisazotumirwa. Iyo inoshandiswa kana isiri yekutsoropodza.
  • QoS 1 (bvuma): meseji inozotumirwa nguva zhinji sezvazvinodiwa kuti uve nechokwadi chekuendesa kumutengi. Chinokanganisa ndechekuti mutengi anogona kugamuchira iwo iwo meseji kanoverengeka.
  • QoS 2 (akavimbiswa)- Zvakafanana nezviri pamusoro, asi zvakavimbiswa kununurwa kamwe chete. Iyo inowanzo shandiswa kune zvakanyanya kunetsa masisitimu uko kukuru kuvimbika kunodiwa.

Kune rimwe divi, kana kuri kwe Kuchengetedzwa kweMQTT, matanho akasiyanasiyana anogona kushandiswa kuona simba rayo mune izvi. Sezvandambotaura kare, iko kuzadzikiswa kwezita rekushandisa nephasiwedi, senge zvimwe zvibvumirano, zvinogona kuverengerwa kuburikidza neSSL / TLS. Kunyangwe akawanda maIoT zvishandiso zvine hushoma hunyanzvi, kana zviwanikwa, zvinogona kuve nematambudziko nekuwandisa kwebasa kana uchishandisa iyi mhando yekutaurirana kwakachengeteka ...

Neichi chikonzero, akawanda maIoT zvishandiso zvinoshandisa MQTT vanoshandisa mapassword nevashandisi mu zvinyorwa zvendege, izvo zvinogona kuita kuti mumwe munhu afembere network traffic kuti avatore zviri nyore kwazvo. Uye kana izvo zvisina kukwana, mutengesi anogona zvakare kugadzirirwa kuti agamuchire kusazivikanwa kubatana, izvo zvinobvumidza chero mushandisi kumisikidza kutaurirana, zvinosanganisira njodzi huru.

Uchishandisa MQTT naArduino

Arduino UNO neMQTT

Chokwadi unogona shandisa iyo MQTT protocol neArduino uye mamwe mabhodhi ekuvandudza, pamwe neRapsberry Pi, nezvimwe. Kuti uite izvi, iwe unofanirwa kupa yako Arduino bhodhi nekubatana, kana isina iyo. Zvakare, raibhurari Arduino Mutengi weMQTT ichakubatsira iwe mumabasa aya. Iri raibhurari rinoenderana ne:

Iwe unotoziva kuti iwe unogona kurodha pasi uye nekuisa raibhurari mune yako Arduino IDE uchishandisa rairo: git clone https://github.com/knolleary/pubsubclient.git

Panongo kune kodhi yekushandisa MQTT mune kumwe kushanda, chokwadi ndechekuti zviri nyore. Mumufananidzo weFritzing unogona kuona chikwangwani Arduino UNO kune iyo yekubatanidza yakawedzerwa neArduino Ethernet uye zvakare yakabatana humtidity uye tembiricha sensor, kunyangwe zvaigona kuve chero chimwe chinhu ...

Ok, nezvakataurwa, zvekodhi iwe yaunofanirwa kugadzira mukati Arduino IDE Kushanda neMQTT protocol paArduino, zviri nyore izvo:

  • Para tumira meseji 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 gamuchira mameseji neMQTT iwe unongoda chete ndiro Arduino UNO nekubatana, neArduino Ethernet kana chero chimwe chinhu. Kana iri kodhi, muenzaniso ungave:
#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();
}

Rangarira kuti iwe unofanirwa kushandura IP kuenda kune yakakodzera sevha, uye unofanira zvakare kushandura MAC kero yeeti Ethernet network adapter yako kana iyo yauri kushandisa, pamwe neiyo yese kodhi yacho kana iwe uchifunga kuigadzirisa chirongwa chakasiyana. Uyu unongova muenzaniso!

Kuti uwane rumwe ruzivo, unogona download zvemahara yedu Chinyorwa chePDF pamwe neArduino IDE kosi yekutanga chirongwa.


Iva wekutanga kutaura

Siya yako yekutaura

Your kero e havazobvumirwi ichibudiswa. Raida minda anozivikanwa ne *

*

*

  1. Inotarisira iyo data: Miguel Ángel Gatón
  2. Chinangwa cheiyo data: Kudzora SPAM, manejimendi manejimendi.
  3. Legitimation: Kubvuma kwako
  4. Kutaurirana kwedata
  5. Dhata yekuchengetedza: Dhatabhesi inobatwa neOccentus Networks (EU)
  6. Kodzero: Panguva ipi neipi iwe unogona kudzora, kupora uye kudzima ruzivo rwako