MQTT: yarjejeniya ce ta buɗe hanyar sadarwa da mahimmancinta a cikin IoT

Hanyar sadarwar MQTT IoT

Ka tuna sunan MQTT, tunda yana da hanyar sadarwar sadarwa irin M2M (Machine to Machine) wanda zai ji ɗan ƙarami kaɗan. Ya zama sananne sosai ga sabon zamanin Intanet na Abubuwa ko IoT (Intanit na Abubuwa) don ƙamusinta cikin Turanci. Bugu da kari, yarjejeniya ce ta budewa, wacce ke ba da fa'idodi da yawa.

A zahiri, ya zama ɗayan ginshiƙan tsakiya na IoT, saboda yana da kyau akan na'urori tare da wasu iyakokin watsawa kamar waɗannan. A acronym MQTT ya fito daga Sakon Jirgin Ruwa na Telemetry, daidaitaccen buɗewa daga OASIS da ISO (ISO / IEC 20922) don sadarwar hanyar sadarwa kuma wannan gabaɗaya yana gudana akan sanannen TCP / IP.

Tsarin ladabi na hanyar sadarwa

OSI samfurin da yadudduka

da sadarwa ladabi Sharuɗɗa ne da ke ba da damar na'urori biyu ko sama ko tsarin don sadarwa da juna. Wato, yarjejeniya ce don watsa bayanai ta hanyoyi daban-daban kuma tare da ingantaccen tsari, ko aiwatar da su ta hanyar software da kayan aiki (ko duka biyun).

El misali na yarjejeniya tana bayyana yawancin halayen sadarwa. Zai iya zuwa daga dokokin aiki tare, ilimin jimla, tsarin magana, tsarin fakiti, da sauransu. Kuma gaskiyar ita ce cewa ba su da sakaci, tun da godiya ga waɗannan ladabi a yau za mu iya amfani da Intanet da sauran hanyoyin sadarwar sadarwa ...

Kuma ba shakka, babu yarjejeniya ɗaya kawai, amma da yawa. Misali, sanannen DNS, FTP, MQTT, HTTP da HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP, da sauransu, don aikin aikace-aikacen. Yayin da kake cikin layin safarar zaka iya samun wasu sanannu kamar TCP, UDP, da dai sauransu, harma da na layin Intanet kamar IPv4, ko IPv6 (wanda ya samar da mafi yawan adadin IPs da ake samu da kuma zuwan da IoT), IPSec, da dai sauransu, da sauransu daga hanyar haɗi kamar DSL, Ethernet, WiFi, ARP, da sauransu.

Game da ladabi na IoT

MQTT yarjejeniya

Tabbas, akwai takamaiman ladabi na sadarwa ko waɗanda za'a iya amfani dasu akan IoT. Wato, idan aka yi la’akari da sashin da ya gabata, za su kasance jerin tsare tsare wadanda aka ayyana su ta yadda na'urorin IoT biyu ko sama zasu iya sadarwa da fahimtar juna, kuma galibi M2M ne, ma’ana, sadarwa ta hanyar inji zuwa inji. da yawa na'urorin IoT sun haɗa da raba bayanai daga na'urori masu auna sigina ko wasu tushe.

Saboda yawan na'urori na IoT, waɗannan ladabi dole ne su cika buƙatu fiye da iyakan bandwidth, gudun, da dai sauransu. (lura cewa na'urori da yawa an saka su da arha), wanda yawanci a wasu na'urorin. Kuma ina nufin gaskiyar cewa dole ne a daidaita shi, don samun damar ƙara wasu na'urorin da aka haɗa idan ya cancanta kuma ba tare da yin tasiri ga tsarin duniya ba.

Hakanan, dole ne su sami low dogaro hada abubuwa tsakanin na’ura, ta yadda ba za a samu matsala ba idan an cire na’urar. Kuma tabbas, a lokaci guda, ana neman babban haɗin gwiwa don yayi aiki tare da adadi mai yawa na na'urori da tsarin daban-daban, tunda duniyar IoT tana da bambanci iri-iri.

Sauran fasalulluka masu amfani zasu zama sauƙin aiwatar dasu, da tsaro, da dai sauransu Ka tuna cewa IoT yana haifar da manyan ƙalubale a ɓangaren tsaro. Har ma fiye da haka yayin da yawancin na'urorin da aka haɗa yawanci mahimmanci a wasu halaye ... misali, kayan wasa don ƙananan yara.

Mahimman ra'ayi

Wancan ya ce, dole ne a ce mafita ga IoT tana amfani da sabar intanet don karɓar saƙonni daga duk na'urorin haɗi waɗanda suke fitarwa kuma suna rarraba su ga duk na'urorin IoT ɗin da ke sauraro. Wannan sabar shine aka sani da na'ura mai ba da hanya tsakanin hanyoyin sadarwa ko dillali. Wani abu da yake nesa da alaƙar abokin ciniki-ta uwar garken ta wasu hanyoyi.

A gefe guda, hanyoyin wanda zaku iya samu a cikin waɗannan ladabi na sadarwa don IoT sune:

  • Labaran: Buga / Dakatar da wani tsari ne na isar da sako inda wata na'ura (Sub) take sanar da dillalin cewa tana son karbar sako, yayin da wata na'urar (Pub) ke fitar da sakonni ga dillalin ya rarrabawa wata na'urar / masu jiran ta.
  • rRPC: Router Remoder Procedure Kira wani salon ne na aiwatar da aikin nesa. A ciki, wata na'ura (Callee) ta sanar da dillalin cewa za ta aiwatar da wani tsari kuma dillalin ya rarraba ta zuwa wata na'urar (Mai kira) wanda a kan aiwatar da aikin aka aiwatar da shi.

Yanzu, don aiwatar da waɗannan hanyoyin ko tsarin, a kayayyakin isar da sako. Kuma a wannan ma'anar za'a iya bambanta biyu:

  • Jerin Saƙo: sabis na isar da saƙo inda aka samar da layin saƙo guda ɗaya don duk abokan cinikin da suka fara biyan kuɗi ga dillalin. Thearshen zai adana saƙonnin har sai an kawo su ga abokin ciniki. Idan abokin ciniki ko mai karɓa ba a haɗa shi ba, ana kiyaye shi har sai an haɗa shi. Wadannan nau'ikan ayyukan kamar wadanda ake amfani dasu a aikace-aikacen aika sakon gaggawa kamar Telegra, WhatsApp, Messenger, da sauransu.
  • Saƙon sabis: wani sabis ne wanda dillali ke aika saƙonni zuwa ga wanda aka karɓi wa mai karɓa, ana tacewa ta nau'in saƙon. Idan abokin ciniki ko na'urar karɓa ya katse, to saƙonnin sun ɓace (kodayake yana iya samun tsarin shiga).

IoT ladabi

Bayan mun ga abin da ke sama, yanzu bari mu duba da kyau IoT ladabi wancan ne mafi sani. Daga cikin mashahuran M2M sune:

  • AMQP (Lissafin Layin Layi na Layi): shine yarjejeniya irin ta PubSub na jerin gwanon saƙo. An tsara don samun kyakkyawar ma'amala da tabbatar da aminci. Na musamman don aikace-aikacen kamfanoni, babban aiki, cibiyoyin sadarwar latti, mahimmanci, da dai sauransu.
  • WAMP (Yarjejeniyar Aika Saƙon Aikace-aikacen Yanar Gizo): wata sabuwar yarjejeniya ce irin ta PubSub kamar rRPC, kuma tana gudana akan WebSockets.
  • CoAP (Takaddar Yarjejeniyar Aikace-aikacen): yarjejeniya ce wacce aka tsara ta musamman don aikace-aikace masu ƙarancin ƙarfi.
  • TOMP (Yarjejeniyar Saƙo mai daidaitaccen Saƙo): yarjejeniya mai sauƙi da cimma matsakaicin aiki tare. Ana amfani da HTTP don aika saƙonnin rubutu.
  • XMPP (eXtensible Saƙo da Kasancewa layinhantsaki): wani yarjejeniya da aka yi amfani da shi a cikin IoT don aikace-aikacen saƙonnin take kuma bisa ga XML. Jan wannan shari'ar ma a bude take.
  • WMQ (Layin saƙo na Yanar gizo): yarjejeniya ta IBM. Nau'in Layin saƙo ne, kamar yadda sunan sa ya nuna, kuma ya dace da saƙo.
  • MQTT: (duba sashe na gaba)

Duk game da MQTT

Kunshin MQTT

El MQTT yarjejeniya Yarjejeniyar sadarwar Saƙo ce, wacce ke bin tsarin PubSub, da na M2M, kamar yadda na ambata a baya. Ana amfani dashi ko'ina a cikin IoT, kuma yana dogara ne akan tarin TCP / IP da aka yi amfani dashi akan Intanet.

Game da MQTT, kowane mahadi a bude yake kuma ana sake amfani dashi a cikin kowane sadarwa mai mahimmanci. Wani abu daban da abin da ke faruwa a cikin wasu ladabi sanannun, cewa kowane hanyar sadarwa yana faruwa yana buƙatar sabon haɗin.

Abũbuwan amfãni

Fa'idodi na yarjejeniyar MQTT a bayyane suke dangane da sadarwa na M2M don IoT. Baya ga duk abin da aka fada a sama, yarjejeniya ce wacce ke samar da:

  • Scalability, don haɗa ƙarin kwastomomi.
  • Couarfafawa tsakanin abokan ciniki, don ƙarancin dogaro.
  • Rashin daidaito.
  • Sauƙi.
  • Haske don kar ya cinye albarkatu da yawa (kodayake tare da TLS / SSL tsaro yana hawa).
  • Efficientarfin makamashi don na'urori waɗanda suka dogara da baturi ko aiki 24/7, baya buƙatar babban bandwidth (manufa don jinkirin haɗi, kamar wasu mara waya).
  • Tsaro da inganci, don ƙarin aminci da ƙarfi a cikin sadarwa.

Historia

MQTT an ƙirƙira shi a cikin 90s, tare da farkon fasalin yarjejeniya a cikin 1999. Dr. Andy Stanford-Clark na kamfanin IBM da Arlen Nipper na Cirrus Link ne suka kirkireshi (tsohon Eurotech ne).

La ra'ayin farko shine ƙirƙirar yarjejeniya don saka idanu kan bututun da ya bi ta cikin hamada, tare da ingantacciyar hanyar sadarwa (ƙarancin amfani da bandwidth), haske, da kuma cewa ƙarancin amfani da makamashi. A lokacin yana da tsada sosai, amma yanzu ya zama yarjejeniya mai arha da buɗe.

An inganta yarjejeniya ta farko tare da bayyanar sabon juyi, kamar su MQTT v3.1 (2013) a ƙarƙashin OASIS (Organizationungiyar Ci Gaban Tsarin Tsarin Bayanai na Musamman), da dai sauransu. Ya kamata ku sani cewa a farkon yarjejeniya ce ta IBM, amma za a sake ta a cikin 2010, kuma ta ƙare da zama mizani a cikin OASIS ...

Yadda haɗin MQTT yake aiki

Yarjejeniyar MQTT tana amfani tace, don sakonnin da aka aika zuwa kowane abokin ciniki, dangane da batutuwa ko batutuwa waɗanda aka tsara su bisa tsari. Ta wannan hanyar, abokin ciniki na iya sanya sako a kan takamaiman batun. Ta wannan hanyar, duk waɗannan abokan cinikin ko na'urorin haɗin da ke biyan kuɗi zuwa batun zasu karɓi saƙonni ta hanyar dillalin.

Kamar yadda yake MQ, sakonni zasu kasance a cikin layi kuma basuyi asara ba har sai wanda abokin harka ya karbi wannan sakon.

Haɗin haɗin, kamar yadda na nuna ma, ana yin su ta hanyar TCP / IP, kuma sabar ko dillali zai adana rikodin abokan ciniki da aka haɗa. Ta hanyar tsoho, na'urorin zasuyi amfani da tashar sadarwa mai lamba 1883, kodayake kuma kuna iya samun tashar 8883 idan kuna amfani da SSL / TLS don ƙarin tsaro.

Don haɗin ya kasance mai yiwuwa, ba abokan ciniki kawai ba, sabar da tashar jiragen ruwa ake buƙata. Da sauransu fakitoci ko saƙonni da aka aiko don sadarwa ya gudana:

  • Kulla alaka: SADA saƙon / fakiti da abokin ciniki ya aiko tare da duk bayanan da suka dace. Wannan bayanin ya haɗa da ID na abokin ciniki, sunan mai amfani, kalmar wucewa, da sauransu. Mai kulla ko uwar garken ya amsa tare da fakitin CONNACK wanda zai sanar da abokin harka cewa an yarda da haɗin, an ƙi shi, da sauransu.
  • Aika da karɓar saƙonni: da zarar an gama haɗin, ana amfani da kunshin PUBLISH ko saƙonni tare da batun da kuma adadin saƙon da aka aika zuwa dillalin. A wani bangaren kuma, kwastomomin da suke da sha’awa ko abokan harka suna amfani da kunshin SUBSCRIBE da UNSUSCRIBE don yin rajista ko janye rajistar su bi da bi. Hakanan dillalin zai amsa tare da SUBACK da UNSUBACK kunshin don bayar da rahoton nasarar aikin da abokin ciniki ya nema.
  • Kula da haɗin: don tabbatar da cewa haɗin ya kasance a buɗe, abokan ciniki na iya aikawa da fakitin PINGREQ lokaci-lokaci wanda zai dace da fakitin PINGRESP daga sabar.
  • Connectionarshen haɗi: lokacin da abokin ciniki ya cire haɗin sai ta aika fakiti mai RATSA don ba da rahoton wannan taron.

Wadancan saƙonni ko fakiti Wadanda nayi magana akansu suna da tsari iri daya kamar sauran fakiti na sauran ladabi na hanyar sadarwa:

  • Header ko kafaffiyar bugawa: shine tsayayyen sashi wanda yake tsakanin baiti 2-5. Ya ƙunshi lambar sarrafawa, ID na nau'in saƙon da aka aiko, da tsawonta. Ana amfani da tsakanin baiti 1-4 don sanya tsayin, ta yin amfani da ragowa 7 na farko na kowane octet azaman bayanai don tsayi da ƙarin ci gaba don ƙayyade cewa akwai baiti sama da ɗaya wanda ya ɗauki tsawon saƙon.
  • Mai canzawa taken: ba koyaushe bane tilas, amma zaɓi. Yana cikin wasu kunshin kawai a cikin wasu yanayi ko takamaiman saƙonni.
  • Abun ciki ko bayanai: bayanan fakiti shine ainihin abin da ya ƙunsar saƙon da za'a aika. Zai iya zama daga kan kB har zuwa iyakar MB 256.

Idan kuna sha'awar sani lambar da ta dace a cikin hexadecimal domin nau'ikan sakonnin da aka aiko sune:

Mensaje Code
connect 0x10
CIKI 0x20
FASAHA 0x30
PUBACK 0x40
jama'a 0x50
BABI 0x60
pubcomp 0x70
SUBSCRBE 0x80
SUBACK 0x90
BADA SAURARA 0xA0
CIGABA 0xB0 ku
PINGREQ 0xC =
PINGRESP 0xD0 ku
RASHI 0xE0

Inganci da tsaro na sadarwa

Wani muhimmin daki-daki na saƙonnin ta MQTT shine ingancin sabis ko QoS, da tsaro. Thearfin tsarin sadarwa a yayin rashin nasara da amincin sa zai dogara da wannan.

Game da ingancinta, ana iya ƙayyade shi 3 matakan daban:

  • QoS 0 (rashin sani)- Ana aika sakon sau daya kawai, kuma idan akayi rashin nasara ba za'a isar dashi ba. Ana amfani da shi lokacin da bashi da mahimmanci.
  • QoS 1 (yarda): za a aika saƙon sau da yawa kamar yadda ake buƙata don ba da tabbacin isar da shi ga abokin ciniki. Abinda ya rage shine cewa abokin harka zai iya karbar sako iri daya sau dayawa.
  • QoS 2 (tabbatacce)- Kama da na sama, amma tabbas za'a kawo sau ɗaya kawai. Ana amfani dashi sau da yawa don tsarin mahimmanci yayin da ake buƙatar amincin mafi girma.

A gefe guda, kamar yadda Tsaro na MQTT, ana iya amfani da matakai daban-daban don tabbatar da ƙarfinta a wannan batun. Kamar yadda na riga na ambata a baya, ana iya tabbatar da ingantaccen sunan mai amfani da kalmar wucewa, kamar sauran ladabi da yawa ta hanyar SSL / TLS. Kodayake yawancin na'urori na IoT masu ƙarancin ƙarfi, ko albarkatu, na iya samun matsala game da yawan aiki yayin amfani da wannan nau'in amintaccen sadarwa ...

Saboda wannan, yawancin na'urorin IoT waɗanda ke amfani da MQTT suna amfani da kalmomin shiga da masu amfani a ciki rubutun jirgin sama, wanda zai iya sa wani ya shaƙa hanyar sadarwar don samun sauƙin su. Kuma idan hakan bai isa ba, ana iya saita dillalin don karɓar hanyoyin haɗin da ba a sani ba, wanda zai ba kowane mai amfani damar kafa sadarwa, wanda ke tattare da haɗari.

Amfani da MQTT tare da Arduino

Arduino UNO tare da MQTT

Tabbas zaka iya yi amfani da yarjejeniyar MQTT tare da Arduino da sauran allunan ci gaba, da Rapsberry Pi, da sauransu. Don yin wannan, dole ne ku samarwa allon Arduino ɗinku haɗin haɗi, idan bashi dashi. Hakanan, laburaren Abokin Arduino don MQTT zai taimaka muku a cikin waɗannan ayyukan. Wannan dakin karatun ya dace da:

Kun riga kun san cewa zaku iya saukarwa da shigar da laburare a cikin Arduino IDE ta amfani da umarnin: git clone https://github.com/knolleary/pubsubclient.git

Da zaran zuwa lambar don amfani da MQTT a cikin wasu aikace-aikace, gaskiyar ita ce mai sauki. A cikin hoton Fritzing zaku iya ganin allo Arduino UNO wanda Arduino Ethernet ya ƙara haɗin haɗin kuma an haɗa shi a DHT22 zafi da firikwensin zafin jiki, kodayake yana iya zama komai ...

Yayi, tare da faɗin haka, don lambar da dole ne ku samar a ciki IDE na Arduino Don aiki tare da yarjejeniyar MQTT akan Arduino, yana da sauƙi:

  • para aika sakonni 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 karɓar saƙonni ta MQTT kuna buƙatar farantin kawai Arduino UNO da haɗi, tare da Arduino Ethernet ko kowane irin abu. Game da lambar, misali zai zama:
#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();
}

Ka tuna cewa dole ne ka canza IP zuwa wanda ya dace da sabar, sannan kuma dole ne ka canza adireshin MAC na adaftar hanyar sadarwar ka ta Ethernet ko wanda kake amfani da shi, da kuma sauran lambar idan ka yi niyyar daidaita ta da wani aiki daban. Wannan misali ne kawai!

Don ƙarin bayani, za ku iya sauke kyauta mu Jagorar PDF tare da hanyar Arduino IDE don fara shirye-shirye.


Kasance na farko don yin sharhi

Bar tsokaci

Your email address ba za a buga. Bukata filayen suna alama da *

*

*

  1. Wanda ke da alhakin bayanan: Miguel Ángel Gatón
  2. Manufar bayanan: Sarrafa SPAM, sarrafa sharhi.
  3. Halacci: Yarda da yarda
  4. Sadarwar bayanan: Ba za a sanar da wasu bayanan ga wasu kamfanoni ba sai ta hanyar wajibcin doka.
  5. Ajiye bayanai: Bayanin yanar gizo wanda Occentus Networks (EU) suka dauki nauyi
  6. Hakkoki: A kowane lokaci zaka iyakance, dawo da share bayanan ka.