Cuimhnigh an t-ainm MQTT, ós rud é gur prótacal cumarsáide líonra cineál M2M (Machine to Machine) atá ag dul chun fuaime go leor. Tá an-tóir air mar gheall ar ré nua Idirlíon Rudaí nó IoT (Internet of Things) as a acrainm i mBéarla. Ina theannta sin, is prótacal oscailte é, a thugann go leor buntáistí.
Déanta na fírinne, tá sé anois ar cheann de philéir lárnacha an IoT, toisc go bhfuil sé measartha maith ar fheistí le roinnt teorainneacha tarchuir mar iad seo. Tagann an t-acrainm MQTT Iompar Teileiméadrachta Scuaine Teachtaireachta, caighdeán oscailte ó OASIS agus ISO (ISO / IEC 20922) le haghaidh cumarsáide líonra agus a ritheann go ginearálta ar an TCP / IP cáiliúil.
Innéacs
Prótacail líonra
An prótacail chumarsáide Is rialacha iad a ligeann do dhá fheiste nó córas cumarsáid a dhéanamh lena chéile. Is é sin, is prótacal é faisnéis a tharchur ar bhealaí éagsúla agus le formáid shainithe, cibé acu bogearraí nó crua-earraí (nó iad araon) a chuireann i bhfeidhm é.
El caighdeánach sa phrótacal sainmhínítear an iliomad tréithe cumarsáide. Féadfaidh sé dul ó rialacha sioncrónaithe, séimeantaice, comhréir, formáid an phaicéid, srl. Agus is í an fhírinne nach rud neamhbhríoch iad, mar gheall ar na prótacail seo inniu is féidir linn an tIdirlíon agus líonraí cumarsáide eile a úsáid ...
Agus ar ndóigh, ní amháin prótacal amháin atá ann, ach go leor. Mar shampla, an cáiliúil DNS, FTP, MQTT, HTTP agus HTTPS, IMAP, LDAP, NTP, DHCP, SSH, Telnet, SNMP, SMTP, srl., Don chiseal iarratais. Agus tú sa chiseal iompair is féidir leat roinnt a fháil chomh cáiliúil le TCP, UDP, srl., Chomh maith leo siúd sa chiseal Idirlín mar IPv4, nó IPv6 (rud a chuir ar chumas an líon is mó IP atá ar fáil agus teacht an IoT ), IPSec, srl., Agus daoine eile ón gciseal nasc mar DSL, Ethernet, WiFi, ARP, srl.
Maidir le prótacail IoT
Ar ndóigh, tá prótacail shonracha cumarsáide ann nó is féidir a chur i bhfeidhm ar an IoT. Is é sin le rá, agus an chuid roimhe seo á mheas, gur sraith caighdeán sainithe a bheadh iontu ionas gur féidir le dhá fheiste IoT cumarsáid a dhéanamh agus a thuiscint, agus go ginearálta is M2M iad, is é sin, cumarsáid meaisín-go-meaisín. cheangail a lán feistí IoT faisnéis ó bhraiteoirí nó ó fhoinsí eile.
Mar gheall ar an líon mór feistí IoT, caithfidh na prótacail seo ceanglais a chomhlíonadh atá níos faide ná teorainneacha bandaleithid, luas, srl. (tabhair faoi deara go bhfuil go leor gairis leabaithe agus saor), atá de ghnáth i roinnt feistí. Agus is é atá i gceist agam leis sin caithfidh sé a bheith inscálaithe, a bheith in ann feistí níos ceangailte a chur leis más gá agus gan dul i bhfeidhm ar an gcóras domhanda.
Chomh maith leis sin, caithfidh a spleáchas íseal cúpláil idir feistí, ionas nach ngintear fadhbanna má bhaintear feiste. Agus ar ndóigh, ag an am céanna, lorgaítear idir-inoibritheacht ard ionas go n-oibreoidh sé le líon mór feistí agus córais an-éagsúil, ós rud é go bhfuil domhan IoT ilchineálach go leor.
Gnéithe úsáideacha eile is ea éascaíocht iad a chur i bhfeidhm, an tslándáil, srl. Coinnigh i gcuimhne go bhfuil dúshláin mhóra á gcruthú ag an IoT sa ghné slándála. Níos tábhachtaí fós, nuair a bhíonn go leor de na gairis ceangailte de ghnáth criticiúil i gcásanna áirithe ... mar shampla, bréagáin do mhionaoisigh.
Coincheapa tábhachtacha
É sin ráite, ní mór a rá go n-úsáideann réitigh don IoT freastalaí láraithe chun na teachtaireachtaí a fháil ó na gairis ceangailte go léir a astaíonn agus a dháileann iad ar na gairis IoT ceangailte go léir atá ag éisteacht. Is é an freastalaí sin an rud ar a dtugtar ródaire nó bróicéir. Rud atá i bhfad ón ngnáthchaidreamh cliant-freastalaí ar roinnt bealaí.
Ina theannta sin, na modheolaíochtaí is féidir leat a fháil sna prótacail chumarsáide seo le haghaidh IoT:
- PubSub: Is patrún teachtaireachtaí é Foilsigh / Fionraí ina gcuireann feiste (Fo) in iúl don bhróicéir go bhfuil sé ag iarraidh teachtaireacht a fháil, agus foilsíonn feiste eile (teach tábhairne) teachtaireachtaí don bhróicéir le dáileadh ar an bhfeiste / na gléasanna eile atá ag fanacht leo.
- rRPC: Is patrún eile de fhorghníomhú próisis iargúlta é Glaonna Nós Imeachta Athmhúnlaithe Ródaire. Istigh ann, cuireann feiste (Callee) in iúl don bhróicéir go ndéanfaidh sé nós imeachta áirithe agus dáileann an bróicéir é ar fheiste eile (Glaoiteoir) a ndéantar an próiseas sin air.
Anois, chun na modheolaíochtaí nó na patrúin seo a chur i gcrích, a bonneagar teachtaireachtaí. Agus sa chiall seo is féidir idirdhealú a dhéanamh idir dhá cheann:
- Scuaine Teachtaireachta: seirbhís teachtaireachtaí nuair a ghintear scuaine teachtaireachta aonair do gach cliant a thionscnaíonn síntiús don bhróicéir. Coinneoidh an dara ceann na teachtaireachtaí stóráilte go dtí go seachadfar iad chuig an gcliant. Mura bhfuil an cliant nó an faighteoir ceangailte, coimeádtar é go dtí go bhfuil sé ceangailte. Tá na cineálacha seirbhísí seo cosúil leis na cinn a úsáidtear in aipeanna teachtaireachtaí meandaracha mar Telegra, WhatsApp, Messenger, srl.
- Seirbhís Teachtaireachtaí: is seirbhís eile í ina gcuireann an bróicéir na teachtaireachtaí chuig an gcliant faighteora ceangailte, ag scagadh de réir an chineáil teachtaireachta. Má tá an cliant nó an gléas glactha dícheangailte, cailltear na teachtaireachtaí (cé go bhféadfadh córas logála éigin a bheith aige).
Prótacail IoT
Tar éis an méid thuas a fheiceáil, déanaimis féachaint níos dlúithe anois Prótacail IoT is fearr aithne orthu. I measc na ndaoine is suntasaí de M2M tá:
- AMQP (Prótacal Ciúine Ardteachtaireachta Teachtaireachta): is prótacal de chineál PubSub de Scuaine Teachtaireachta. Deartha chun idir-inoibritheacht mhaith a bheith aige agus iontaofacht a chinntiú. Speisialta le haghaidh feidhmchlár corparáideach, ardfheidhmíocht, líonraí ard latency, criticiúil, srl.
- WAMP (Prótacal Teachtaireachtaí Feidhmchlár Gréasáin): is prótacal oscailte eile é de chineál PubSub cosúil le rRPC, agus ritheann sé ar WebSockets.
- CoAP (Prótacal Iarratais Srianta): is prótacal é atá deartha go speisialta d’iarratais ar acmhainn íseal.
- TOMP (Prótacal Teachtaireachta Dírithe ar Théacs Sruthlaithe): prótacal an-simplí agus chun an idir-inoibritheacht is mó a bhaint amach. Úsáidtear HTTP chun teachtaireachtaí téacs a tharchur.
- XMPP (Prótacal Teachtaireachta agus Láithreachta In-inchreidte): prótacal eile a úsáidtear in IoT le haghaidh aipeanna teachtaireachtaí meandaracha agus atá bunaithe ar XML. Jan tá an cás seo oscailte freisin.
- WMQ (Scuaine Teachtaireachta WebSphere): prótacal arna fhorbairt ag IBM. Is den chineál Scuaine Teachtaireachta é, mar a thugann a ainm le tuiscint, agus tá sé dírithe ar theachtaireachtaí.
- MQTT: (féach an chéad chuid eile)
Gach eolas faoi MQTT
El Prótacal MQTT Is prótacal cumarsáide Teachtaireacht Scuaine é, a leanann patrún PubSub, agus den chineál M2M, mar a luaigh mé cheana. Úsáidtear go forleathan é san IoT, agus tá sé bunaithe ar an gcruach TCP / IP a úsáidtear ar an Idirlíon.
I gcás MQTT, coimeádtar gach nasc ar oscailt agus déantar é a athúsáid i ngach cumarsáid riachtanach. Rud difriúil ón méid a tharlaíonn i bprótacail aitheanta eile, go dteastaíonn nasc nua ó gach cumarsáid.
Buntáiste
Tá buntáistí an phrótacail MQTT soiléir go leor i dtéarmaí cumarsáide M2M do IoT. Chomh maith le gach rud a dúradh thuas, is prótacal é a sholáthraíonn:
- Scalability, chun níos mó agus níos mó custaiméirí a nascadh.
- Díchúpláil idir cliaint, ar lúide spleáchas.
- Asynchronism.
- Simplíocht.
- Gile ionas nach n-itheann tú an iomarca acmhainní (cé go n-ardóidh slándáil TLS / SSL).
- Éifeachtach ó thaobh fuinnimh do ghléasanna atá ag brath ar cheallraí nó a oibríonn 24/7, ní theastaíonn bandaleithead mór uaidh (oiriúnach do naisc mhall, mar shampla roinnt cinn gan sreang).
- Slándáil agus cáilíocht, ar mhaithe le hiontaofacht agus stóinseacht níos fearr i gcumarsáid.
stair
Cruthaíodh MQTT sna 90idí, le leagan luath den prótacal i 1999. Chruthaigh an Dr. Andy Stanford-Clark ó IBM agus Arlen Nipper de Cirrus Link (Eurotech roimhe seo).
La smaoineamh tosaigh ná prótacal a chruthú chun monatóireacht a dhéanamh ar phíblíne a thaistil tríd an bhfásach, le prótacal cumarsáide éifeachtach (tomhaltas bandaleithid íseal), solas, agus tomhaltas íseal fuinnimh. Bhí sé an-daor ag an am, ach anois tá sé ina phrótacal saor agus oscailte.
Feabhsaíodh an prótacal tosaigh de réir chuma leaganacha nua, mar MQTT v3.1 (2013) faoi shonraíocht OASIS (An Eagraíocht um Chaighdeáin Faisnéise Struchtúrtha a Chur Chun Cinn), etc. Ba chóir go mbeadh a fhios agat gur prótacal dílseánaigh IBM a bhí ann ag an tús, ach go scaoilfí saor é in 2010, agus chríochnaigh sé mar chaighdeán in OASIS ...
Conas a oibríonn an nasc MQTT
Úsáideann an prótacal MQTT scagaire, maidir leis na teachtaireachtaí a sheoltar chuig gach cliant, bunaithe ar ábhair nó ar ábhair a eagraítear de réir ordlathais. Ar an mbealach seo, is féidir le custaiméir teachtaireacht a phostáil ar ábhar ar leith. Ar an mbealach seo, gheobhaidh na cliaint sin go léir nó na gléasanna ceangailte a liostálann leis an ábhar teachtaireachtaí tríd an mbróicéir.
Mar atá MQ, fanfaidh teachtaireachtaí sa scuaine agus ní chailltear iad go dtí go bhfaighidh an cliant an teachtaireacht sin.
Déantar na naisc, mar a thug mé le fios freisin trí TCP / IP, agus coimeádfaidh an freastalaí nó an bróicéir taifead de na cliaint nasctha. De réir réamhshocraithe, úsáidfidh na feistí calafoirt chumarsáide uimhir 1883, cé go bhféadfadh tú teacht ar chalafort 8883 freisin má tá SSL / TLS á úsáid agat le haghaidh slándála breise.
Ionas go mbeidh an nasc indéanta, ní amháin cliaint, freastalaithe agus calafoirt a theastaíonn. Daoine eile freisin pacáistí nó teachtaireachtaí seolta chun cumarsáid a dhéanamh:
- Nasc a bhunú: Teachtaireacht / paicéad CONNECT a sheol an cliant leis an bhfaisnéis riachtanach uile. Cuimsíonn an fhaisnéis sin ID an chustaiméara, ainm úsáideora, pasfhocal, srl. Freagraíonn an bróicéir nó an freastalaí le paicéad CONNACK a chuirfidh in iúl don chliant gur glacadh, gur diúltaíodh, srl.
- Seol agus faigh teachtaireachtaí: a luaithe a bhunaítear an nasc, úsáidtear pacáistí nó teachtaireachtaí PUBLISH leis an ábhar agus le hualach pá na teachtaireachta a chuirtear chuig an mbróicéir. Ar an láimh eile, úsáideann an cliant nó na cliaint leasmhara pacáistí SUBSCRIBE agus UNSUSCRIBE chun a síntiús a liostáil nó a tharraingt siar faoi seach. Tabharfaidh an bróicéir freagra freisin le pacáiste SUBACK agus UNSUBACK faoi seach chun tuairisc a thabhairt ar rath na hoibríochta a d’iarr an cliant.
- An nasc a chothabháil: a ráthú go bhfanfaidh an nasc oscailte, is féidir le cliaint paicéad PINGREQ a sheoladh go tréimhsiúil a mheaitseálfar le paicéad PINGRESP ón bhfreastalaí.
- Ceangal deiridh: nuair a dhícheanglaíonn cliant seolann sé paicéad DISCONNECT chun an teagmhas sin a thuairisciú.
Iad siúd teachtaireachtaí nó pacáistí Tá struchtúr mar an gcéanna leis na cinn ar labhair mé fúthu le paicéid eile de phrótacail líonra eile:
- Ceanntásc nó ceanntásc seasta: is cuid sheasta í a áitíonn idir 2-5 bheart. Tá cód rialaithe ann, ID den chineál teachtaireachta a seoladh, agus a fad. Úsáidtear idir 1-4 beart chun an fad a ionchódú, agus na chéad 7 ngiotán de gach ochtréad á n-úsáid mar shonraí don fhad agus giota breise leanúnachais chun a chinneadh go bhfuil níos mó ná beart amháin ann a chuimsíonn fad na teachtaireachta.
- Ceanntásc inathraithe: ní bhíonn sé éigeantach i gcónaí, ach roghnach. Níl sé le fáil ach i roinnt pacáistí i gcásanna áirithe nó i dteachtaireachtaí ar leith.
- Ábhar nó sonraí: is iad sonraí an phaicéid an teachtaireacht atá le seoladh i ndáiríre. Is féidir é a bheith ó chúpla kB suas go teorainn 256 MB.
Má tá suim agat eolas a fháil an cód comhfhreagrach i heicsidheachúlach is iad seo a leanas na cineálacha teachtaireachtaí a sheoltar:
teachtaireacht | Cód |
---|---|
CONNECT | 0x10 |
CONNACK | 0x20 |
FHOILSIÚ | 0x30 |
PUBACK | 0x40 |
pubrec | 0x50 |
POBLACH | 0x60 |
pubcomp | 0x70 |
SUBSCRBE | 0x80 |
SUBACK | 0x90 |
DÍLiostáil | 0xA0 |
UNSUBACK | 0xB0 |
PINGREQ | 0xC = |
INGRESP | 0xD0 |
DÍONNCHUR | 0xE0 |
Cáilíocht agus slándáil na cumarsáide
Mionsonra tábhachtach eile de na teachtaireachtaí ag MQTT is ea an cáilíocht na seirbhíse nó QoS, agus slándáil. Braithfidh stóinseacht an chórais cumarsáide i gcás teipeanna agus a shábháilteacht air seo.
Maidir lena cháilíocht, is féidir a chinneadh 3 leibhéal éagsúil:
- QoS 0 (gan aitheantas)- Ní sheoltar an teachtaireacht ach uair amháin, agus i gcás teipe ní dhéanfaí í a sheachadadh. Úsáidtear é nuair nach bhfuil sé criticiúil.
- QoS 1 (admháil): seolfar an teachtaireacht a mhéad uair is gá chun seachadadh a ráthú don chustaiméir. Is é an míbhuntáiste ná go bhféadfadh an cliant an teachtaireacht chéanna a fháil arís agus arís eile.
- QoS 2 (cinnte)- Cosúil leis an méid thuas, ach ráthaítear nach seachadfar é ach uair amháin. Is minic a úsáidtear é le haghaidh córais níos criticiúla ina bhfuil gá le hiontaofacht níos mó.
Ar an láimh eile, maidir le Slándáil MQTT, is féidir bearta éagsúla a úsáid chun a neart ina leith seo a chinntiú. Mar a dúirt mé cheana, is féidir fíordheimhniú an úsáideora agus an phasfhocal, cosúil le go leor prótacal eile, a chinntiú trí SSL / TLS. Cé go bhféadfadh fadhbanna a bheith ag go leor feistí IoT a bhfuil toilleadh íseal, nó acmhainní acu, le ró-ualach na hoibre agus an cineál cumarsáide slán seo á úsáid ...
Ar an gcúis seo, úsáideann go leor feistí IoT a úsáideann MQTT pasfhocail agus úsáideoirí i téacs eitleáin, rud a d’fhéadfadh duine a chur ag snagadh tráchta líonra chun iad a fháil go héasca. Agus mura leor é sin, is féidir an bróicéir a chumrú chun glacadh le naisc gan ainm, rud a ligfeadh d’úsáideoir cumarsáid a bhunú, a mbeadh riosca níos mó ag baint leis.
Ag baint úsáide as MQTT le Arduino
Ar ndóigh is féidir leat bain úsáid as an bprótacal MQTT le Arduino agus boird forbartha eile, chomh maith leis an Rapsberry Pi, srl. Chun seo a dhéanamh, caithfidh tú nascacht a sholáthar do bhord Arduino, mura bhfuil sé agat. Freisin, an leabharlann Cliant Arduino do MQTT cuideoidh sé leat sna tascanna seo. Tá an leabharlann seo comhoiriúnach le:
- ArduinoYUN
- Arduino WiFi (sciath)
- Ethernet Arduino (sciath)
- Modúl ESP8266
- Intel Galileo / Edison
- Pí Sú craobh
- ...
Chomh luath agus chun an cód chun MQTT a úsáid i bhfeidhmchlár éigin, is í an fhírinne go bhfuil sé simplí. San íomhá Fritzing is féidir leat plaic a fheiceáil Arduino UNO ar cuireadh nascacht le Arduino Ethernet leis agus tá sé ceangailte freisin braiteoir taise agus teochta DHT22, cé go bhféadfadh sé a bheith ina rud ar bith eile ...
Ceart go leor, agus é sin ráite, don chód a chaithfidh tú a ghiniúint IDE Arduino Chun oibriú leis an bprótacal MQTT ar Arduino, tá sé chomh simplí sin:
- go teachtaireachtaí a sheoladh 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); }
- go teachtaireachtaí a fháil le MQTT níl uait ach an pláta Arduino UNO agus nasc, le Arduino Ethernet nó le haon eilimint eile. Maidir leis an gcód, bheadh sampla:
#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(); }
Le haghaidh tuilleadh faisnéise, is féidir leat íoslódáil saor in aisce ár Lámhleabhar PDF leis an gcúrsa Arduino IDE chun cláir a thosú.
Bí ar an chéad trácht